From bdebe893adfa9e049085cd0f9115640ce8281498 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Wed, 16 Oct 2024 19:24:58 -0500 Subject: [PATCH 01/43] mark packing methods as external --- .../validator-manager/ValidatorMessages.sol | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/contracts/validator-manager/ValidatorMessages.sol b/contracts/validator-manager/ValidatorMessages.sol index ca836eb5a..75684b716 100644 --- a/contracts/validator-manager/ValidatorMessages.sol +++ b/contracts/validator-manager/ValidatorMessages.sol @@ -67,7 +67,7 @@ library ValidatorMessages { * @return The packed message. */ function packSubnetConversionMessage(bytes32 subnetConversionID) - internal + external pure returns (bytes memory) { @@ -81,7 +81,7 @@ library ValidatorMessages { * @param input The byte array to unpack. * @return The unpacked subnetConversionID. */ - function unpackSubnetConversionMessage(bytes memory input) internal pure returns (bytes32) { + function unpackSubnetConversionMessage(bytes memory input) external pure returns (bytes32) { if (input.length != 38) { revert InvalidMessageLength(uint32(input.length), 38); } @@ -149,7 +149,7 @@ library ValidatorMessages { * @return The packed message. */ function packSubnetConversionData(SubnetConversionData calldata subnetConversionData) - internal + external pure returns (bytes memory) { @@ -218,7 +218,7 @@ library ValidatorMessages { * @return The validationID and the packed message. */ function packRegisterSubnetValidatorMessage(ValidationPeriod memory validationPeriod) - internal + external pure returns (bytes32, bytes memory) { @@ -262,7 +262,7 @@ library ValidatorMessages { * @return The unpacked ValidationPeriod. */ function unpackRegisterSubnetValidatorMessage(bytes memory input) - internal + external pure returns (ValidationPeriod memory) { @@ -455,7 +455,7 @@ library ValidatorMessages { function packSubnetValidatorRegistrationMessage( bytes32 validationID, bool valid - ) internal pure returns (bytes memory) { + ) external pure returns (bytes memory) { return abi.encodePacked( CODEC_ID, SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID, validationID, valid ); @@ -470,7 +470,7 @@ library ValidatorMessages { * validator and never will be a validator due to the expiry time passing. */ function unpackSubnetValidatorRegistrationMessage(bytes memory input) - internal + external pure returns (bytes32, bool) { @@ -533,7 +533,7 @@ library ValidatorMessages { bytes32 validationID, uint64 nonce, uint64 weight - ) internal pure returns (bytes memory) { + ) external pure returns (bytes memory) { return abi.encodePacked( CODEC_ID, SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID, validationID, nonce, weight ); @@ -547,7 +547,7 @@ library ValidatorMessages { * @return The validationID, nonce, and weight. */ function unpackSubnetValidatorWeightMessage(bytes memory input) - internal + external pure returns (bytes32, uint64, uint64) { @@ -616,7 +616,7 @@ library ValidatorMessages { function packValidationUptimeMessage( bytes32 validationID, uint64 uptime - ) internal pure returns (bytes memory) { + ) external pure returns (bytes memory) { return abi.encodePacked(CODEC_ID, VALIDATION_UPTIME_MESSAGE_TYPE_ID, validationID, uptime); } @@ -628,7 +628,7 @@ library ValidatorMessages { * @return The validationID and uptime. */ function unpackValidationUptimeMessage(bytes memory input) - internal + external pure returns (bytes32, uint64) { From 80af54d009fc5b201bf45cdb2144cbfada1cea8e Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Wed, 16 Oct 2024 19:25:51 -0500 Subject: [PATCH 02/43] use internal library for tests --- .../ERC20TokenStakingManager.go | 4 +- .../NativeTokenStakingManager.go | 4 +- .../PoAValidatorManager.go | 4 +- .../tests/PoSValidatorManagerTests.t.sol | 2 +- .../tests/ValidatorManagerTests.t.sol | 2 +- .../tests/ValidatorMessagesTests.t.sol | 2 +- .../tests/utils/ValidatorMessagesInternal.sol | 671 ++++++++++++++++++ 7 files changed, 680 insertions(+), 9 deletions(-) create mode 100644 contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 513f1beee..0538388c9 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -91,8 +91,8 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTokenAddress\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615f31380380615f3183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615de48061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101c1575f3560e01c80638280a25a116100f6578063ba3a4b971161009a578063ba3a4b97146103d9578063bc5fbfec146103ec578063bee0a03f14610413578063c974d1b614610426578063d5f20ff61461042e578063df93d8de1461044e578063e4a63c4014610458578063f74c607b1461047f578063fd7ac5e714610492575f80fd5b80638280a25a1461034357806393e245981461034b57806398f3e2b41461035e5780639e1bc4ef14610371578063a3a65e4814610384578063a9778a7a14610270578063afb9809614610397578063b771b3bc146103be575f80fd5b80633a1cfff6116101685780633a1cfff61461028c578063467ef06f1461029f5780634bee0040146102b25780635297fae6146102d357806360305d62146102e6578063620658561461030357806366435abf14610316578063732214f81461032957806376f7862114610330575f80fd5b80630118acc4146101c55780630322ed98146101da578063151d30d1146101ed5780631ec447241461020c57806320d91b7a1461021f57806325e1c776146102325780632e2194d81461024557806335455ded14610270575b5f80fd5b6101d86101d3366004615085565b6104a5565b005b6101d86101e83660046150c0565b6104da565b6101f5600a81565b60405160ff90911681526020015b60405180910390f35b6101d861021a366004615085565b6106dd565b6101d861022d3660046150d7565b6106e8565b6101d8610240366004615125565b610be6565b6102586102533660046150c0565b610c5a565b6040516001600160401b039091168152602001610203565b61027961271081565b60405161ffff9091168152602001610203565b6101d861029a366004615085565b610cae565b6101d86102ad366004615146565b610cb9565b6102c56102c0366004615186565b610d69565b604051908152602001610203565b6101d86102e13660046151eb565b610d90565b6102ee601481565b60405163ffffffff9091168152602001610203565b6102c5610311366004615213565b610feb565b6102586103243660046150c0565b61100b565b6102c55f81565b6101d861033e366004615085565b61101f565b6101f5603081565b6101d86103593660046150c0565b61104a565b6101d861036c3660046151eb565b611107565b6102c561037f36600461522c565b6112c6565b6101d8610392366004615146565b6112e4565b6102c57f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6103cc6005600160991b0181565b604051610203919061524c565b6101d86103e73660046150c0565b61146a565b6102c57fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b6101d86104213660046150c0565b611648565b6101f5601481565b61044161043c3660046150c0565b611765565b60405161020391906152d5565b6102586202a30081565b6102c57f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0081565b6101d861048d366004615369565b6118a7565b6102c56104a03660046153a7565b611986565b6104b08383836119be565b6104d557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f6104e3611d0b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561051c5761051c615260565b600581111561052d5761052d615260565b815260200160018201805461054190615412565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90615412565b80156105b85780601f1061058f576101008083540402835291602001916105b8565b820191905f5260205f20905b81548152906001019060200180831161059b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561062357610623615260565b14610656575f8381526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b6005600160991b016001600160a01b031663ee5b48eb61067b8584606001515f611d2f565b6040518263ffffffff1660e01b81526004016106979190615458565b6020604051808303815f875af11580156106b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d7919061546a565b50505050565b6106d78383836119be565b5f6106f1611d0b565b600981015490915060ff161561071a57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610781919061546a565b8360200135146107aa576040516372b0a7e760e11b8152602084013560048201526024016104cc565b306107bb6060850160408601615481565b6001600160a01b0316146107f3576107d96060840160408501615481565b604051632f88120d60e21b81526004016104cc919061524c565b5f610801606085018561549c565b905090505f805b828163ffffffff161015610ae8575f610824606088018861549c565b8363ffffffff1681811061083a5761083a6154e1565b905060200281019061084c91906154f5565b61085590615619565b80516040519192505f91600888019161086d91615692565b9081526020016040518091039020541461089d57805160405163a41f772f60e01b81526104cc9190600401615458565b5f6002885f0135846040516020016108cc92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526108e691615692565b602060405180830381855afa158015610901573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610924919061546a565b90508086600801835f015160405161093c9190615692565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156109be576109be615260565b0217905550602082015160018201906109d790826156e7565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610a7b9116856157b6565b8251604051919550610a8c91615692565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610ae1906157c9565b9050610808565b50600483018190556001830154606490610b0c90600160401b900460ff16836157eb565b1015610b2e57604051635943317f60e01b8152600481018290526024016104cc565b5f610b44610b3b86611d7e565b60400151611e89565b90505f610b5087612016565b90505f600282604051610b639190615692565b602060405180830381855afa158015610b7e573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ba1919061546a565b9050828114610bcd57604051631872fc8d60e01b815260048101829052602481018490526044016104cc565b5050506009909201805460ff1916600117905550505050565b610bef826121eb565b610c0f576040516330efa98b60e01b8152600481018390526024016104cc565b5f610c1983611765565b5190506002816005811115610c3057610c30615260565b14610c50578060405163170cc93360e21b81526004016104cc919061544a565b6106d78383612214565b5f80610c64612462565b60030154610c729084615802565b9050801580610c8757506001600160401b0381115b15610ca85760405163222d164360e21b8152600481018490526024016104cc565b92915050565b6106d7838383612486565b610cc1612651565b5f610cca612462565b90505f80610cd78461269b565b91509150610ce4826121eb565b610cf057505050610d5e565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610d1e57610d1e615260565b03610d43575f83815260088501602052604081208054919055610d4182826129d5565b505b610d5981610d548460400151610feb565b612a45565b505050505b610d66612a63565b50565b5f610d72612651565b610d7e85858585612a89565b9050610d88612a63565b949350505050565b5f610d99612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610dd257610dd2615260565b6003811115610de357610de3615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610e5982611765565b9050600183516003811115610e7057610e70615260565b14610e91578251604051633b0d540d60e21b81526104cc9190600401615821565b600481516005811115610ea657610ea6615260565b03610ebc57610eb485612c40565b505050505050565b5f80610ed3610eca89611d7e565b60400151612e60565b5091509150818414610f0057846040015160405163089938b360e11b81526004016104cc91815260200190565b806001600160401b031683606001516001600160401b03161080610f395750806001600160401b03168560a001516001600160401b0316115b15610f6257604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610ff4612462565b60030154610ca8906001600160401b0384166157eb565b5f61101582611765565b6080015192915050565b61102a838383612486565b6104d557604051635bff683f60e11b8152600481018490526024016104cc565b5f611053612462565b90505f61105f83611765565b519050600481600581111561107657611076615260565b14611096578060405163170cc93360e21b81526004016104cc919061544a565b5f8381526005830160205260409020546001600160a01b031633146110d157335b604051636e2ccd7560e11b81526004016104cc919061524c565b5f838152600883016020908152604080832080549084905560058601909252909120546106d7906001600160a01b0316826129d5565b61110f612651565b5f611118612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561115157611151615260565b600381111561116257611162615260565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156111db576111db615260565b146111fc578051604051633b0d540d60e21b81526104cc9190600401615821565b600461120b8260400151611765565b51600581111561121d5761121d615260565b146112af575f61122c85611d7e565b90505f8061123d8360400151612e60565b5091509150818460400151146112695760405163089938b360e11b8152600481018390526024016104cc565b806001600160401b03168460c001516001600160401b031611156112ab57604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5050505b6112b883612c40565b50506112c2612a63565b5050565b5f6112cf612651565b6112da8333846130b6565b9050610ca8612a63565b5f6112ed611d0b565b90505f806113066112fd85611d7e565b6040015161338b565b915091508061132c57604051632d07135360e01b815281151560048201526024016104cc565b5f8281526006840160205260409020805461134690615412565b90505f0361136a5760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078501602052604090205460ff16600581111561139057611390615260565b146113c3575f8281526007840160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068401602052604081206113db91614fd4565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611473612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114ac576114ac615260565b60038111156114bd576114bd615260565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561153657611536615260565b14158015611557575060038151600381111561155457611554615260565b14155b15611578578051604051633b0d540d60e21b81526104cc9190600401615821565b5f6115868260400151611765565b905080606001516001600160401b03165f036115b8576040516339b894f960e21b8152600481018590526024016104cc565b6005600160991b016001600160a01b031663ee5b48eb6115e5846040015184606001518560800151611d2f565b6040518263ffffffff1660e01b81526004016116019190615458565b6020604051808303815f875af115801561161d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611641919061546a565b5050505050565b5f611651611d0b565b5f838152600682016020526040902080549192509061166f90615412565b90505f036116935760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078301602052604090205460ff1660058111156116b9576116b9615260565b146116ec575f8281526007820160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611725919060040161583b565b6020604051808303815f875af1158015611741573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d5919061546a565b61176d61500b565b5f611776611d0b565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156117ad576117ad615260565b60058111156117be576117be615260565b81526020016001820180546117d290615412565b80601f01602080910402602001604051908101604052809291908181526020018280546117fe90615412565b80156118495780601f1061182057610100808354040283529160200191611849565b820191905f5260205f20905b81548152906001019060200180831161182c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118f0575080546001600160401b03808416911610155b1561190e5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556119398484613547565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80611990611d0b565b90508060080184846040516119a69291906158c5565b90815260200160405180910390205491505092915050565b5f806119c8612462565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a0157611a01615260565b6003811115611a1257611a12615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611a8882611765565b9050600283516003811115611a9f57611a9f615260565b14611ac0578251604051633b0d540d60e21b81526104cc9190600401615821565b60208301516001600160a01b03163314611b5c575f8281526005850160205260409020546001600160a01b03163314611af957336110b7565b5f82815260058501602052604090205460a0820151611b2891600160b01b90046001600160401b0316906158d4565b6001600160401b0316421015611b5c5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b600281516005811115611b7157611b71615260565b03611c9f5760028401546080840151611b93916001600160401b0316906158d4565b6001600160401b0316421015611bc75760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b8615611bd957611bd78287612214565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611c12918491611c0d91906158f4565b613561565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611c53846136ab565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a315159450611d049350505050565b600481516005811115611cb457611cb4615260565b03611ce857611cc2836136ab565b5f898152600786016020526040902055611cdb88612c40565b6001945050505050611d04565b805160405163170cc93360e21b81526104cc919060040161544a565b9392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611de2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e09919081019061591f565b9150915080611e2b57604051636b2f19e960e01b815260040160405180910390fd5b815115611e51578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615611e82578160200151604051624de75d60e31b81526004016104cc919061524c565b5092915050565b5f8151602614611ebe57815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016104cc565b5f805b6002811015611f0d57611ed58160016159f1565b611ee09060086157eb565b61ffff16848281518110611ef657611ef66154e1565b016020015160f81c901b9190911790600101611ec1565b5061ffff811615611f375760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015611f9257611f4e8160036159f1565b611f599060086157eb565b63ffffffff1685611f6b8360026157b6565b81518110611f7b57611f7b6154e1565b016020015160f81c901b9190911790600101611f3a565b5063ffffffff811615611fb857604051635b60892f60e01b815260040160405180910390fd5b5f805b602081101561200d57611fcf81601f6159f1565b611fda9060086157eb565b86611fe68360066157b6565b81518110611ff657611ff66154e1565b016020015160f81c901b9190911790600101611fbb565b50949350505050565b60605f8083356020850135601461203287870160408901615481565b61203f606089018961549c565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6120c0606085018561549c565b9050811015611e8257816120d7606086018661549c565b838181106120e7576120e76154e1565b90506020028101906120f991906154f5565b6121039080615a04565b9050612112606087018761549c565b84818110612122576121226154e1565b905060200281019061213491906154f5565b61213e9080615a04565b61214b606089018961549c565b8681811061215b5761215b6154e1565b905060200281019061216d91906154f5565b61217b906020810190615a04565b61218860608b018b61549c565b88818110612198576121986154e1565b90506020028101906121aa91906154f5565b6121bb906060810190604001615213565b6040516020016121d19796959493929190615a46565b60408051601f1981840301815291905291506001016120b3565b5f806121f5612462565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561225f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612286919081019061591f565b91509150806122a857604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230f919061546a565b825114612335578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615612366578160200151604051624de75d60e31b81526004016104cc919061524c565b5f80612375846040015161382e565b9150915081871461239c5760405163089938b360e11b8152600481018890526024016104cc565b5f6123a5612462565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612438575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612457565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f80612490612462565b90505f61249c86613a1f565b90506124a7866121eb565b6124b657600192505050611d04565b5f8681526005830160205260409020546001600160a01b031633146124db57336110b7565b5f86815260058301602052604090205460a082015161250a91600160b01b90046001600160401b0316906158d4565b6001600160401b03168160c001516001600160401b031610156125515760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104cc565b5f8515612569576125628786612214565b9050612587565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906125ac90610feb565b60a086015160c08701516040516001600160e01b031960e086901b1681526125dc93929182918990600401615aaf565b602060405180830381865afa1580156125f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261b919061546a565b905080846008015f8a81526020019081526020015f205f82825461263f91906157b6565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161269557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6126a461500b565b5f6126ad611d0b565b90505f806126bd6112fd87611d7e565b9150915080156126e457604051632d07135360e01b815281151560048201526024016104cc565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561271557612715615260565b600581111561272657612726615260565b815260200160018201805461273a90615412565b80601f016020809104026020016040519081016040528092919081815260200182805461276690615412565b80156127b15780601f10612788576101008083540402835291602001916127b1565b820191905f5260205f20905b81548152906001019060200180831161279457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561281c5761281c615260565b1415801561283d575060018151600581111561283a5761283a615260565b14155b1561285e57805160405163170cc93360e21b81526104cc919060040161544a565b60038151600581111561287357612873615260565b036128815760048152612886565b600581525b83600801816020015160405161289c9190615692565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156128e0576128e0615260565b0217905550602082015160018201906128f990826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558051600581111561299e5761299e615260565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f6129de613cf7565b80546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612a2a575f80fd5b505af1158015612a3c573d5f803e3d5ffd5b50505050505050565b6112c28282612a52613cf7565b546001600160a01b03169190613d1b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f80612a93612462565b600281015490915061ffff600160401b90910481169086161080612abc575061271061ffff8616115b15612ae057604051635f12e6c360e11b815261ffff861660048201526024016104cc565b60028101546001600160401b039081169085161015612b1c576040516202a06d60e11b81526001600160401b03851660048201526024016104cc565b8054831080612b2e5750806001015483115b15612b4f5760405163222d164360e21b8152600481018490526024016104cc565b5f612b5984613d7a565b90505f612b6582610c5a565b90505f612b728983613d97565b90506040518060800160405280612b863390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b5f612c49612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612c8257612c82615260565b6003811115612c9357612c93615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612d076142f4565b8260800151612d1691906158d4565b6001600160401b0316421015612d4a5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612e05575f84815260058701602052604090205461271090612db790600160a01b900461ffff16856157eb565b612dc19190615802565b915081866008015f8681526020019081526020015f205f828254612de591906157b6565b90915550612df5905082846159f1565b9050612e058560200151826129d5565b612e1a8560200151610d548760600151610feb565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e9757835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016104cc565b5f805b6002811015612ee657612eae8160016159f1565b612eb99060086157eb565b61ffff16868281518110612ecf57612ecf6154e1565b016020015160f81c901b9190911790600101612e9a565b5061ffff811615612f105760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015612f6b57612f278160036159f1565b612f329060086157eb565b63ffffffff1687612f448360026157b6565b81518110612f5457612f546154e1565b016020015160f81c901b9190911790600101612f13565b5063ffffffff8116600314612f9357604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612fe857612faa81601f6159f1565b612fb59060086157eb565b88612fc18360066157b6565b81518110612fd157612fd16154e1565b016020015160f81c901b9190911790600101612f96565b505f805b6008811015613047576130008160076159f1565b61300b9060086157eb565b6001600160401b0316896130208360266157b6565b81518110613030576130306154e1565b016020015160f81c901b9190911790600101612fec565b505f805b60088110156130a65761305f8160076159f1565b61306a9060086157eb565b6001600160401b03168a61307f83602e6157b6565b8151811061308f5761308f6154e1565b016020015160f81c901b919091179060010161304b565b5091989097509095509350505050565b5f806130c0612462565b90505f6130cf61025385613d7a565b90505f6130db87611765565b90506130e6876121eb565b613106576040516330efa98b60e01b8152600481018890526024016104cc565b60028151600581111561311b5761311b615260565b1461313c57805160405163170cc93360e21b81526104cc919060040161544a565b5f82826080015161314d91906158d4565b905083600201600a9054906101000a90046001600160401b031682604001516131769190615add565b6001600160401b0316816001600160401b031611156131b357604051636d51fe0560e11b81526001600160401b03821660048201526024016104cc565b5f806131bf8a84613561565b915091505f8a836040516020016131ed92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561328057613280615260565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8082516027146133c157825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016104cc565b5f805b6002811015613410576133d88160016159f1565b6133e39060086157eb565b61ffff168582815181106133f9576133f96154e1565b016020015160f81c901b91909117906001016133c4565b5061ffff81161561343a5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613495576134518160036159f1565b61345c9060086157eb565b63ffffffff168661346e8360026157b6565b8151811061347e5761347e6154e1565b016020015160f81c901b919091179060010161343d565b5063ffffffff81166002146134bd57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613512576134d481601f6159f1565b6134df9060086157eb565b876134eb8360066157b6565b815181106134fb576134fb6154e1565b016020015160f81c901b91909117906001016134c0565b505f86602681518110613527576135276154e1565b016020015191976001600160f81b03199092161515965090945050505050565b61354f61430f565b6135588261435a565b6112c2816143ce565b5f805f61356c611d0b565b5f868152600782016020526040902060020154909150600160801b90046001600160401b031661359c858261442a565b5f6135a68761464f565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6135f68a858b611d2f565b6040518263ffffffff1660e01b81526004016136129190615458565b6020604051808303815f875af115801561362e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613652919061546a565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806136b5612462565b90505f6136c58460400151611765565b90505f6003825160058111156136dd576136dd615260565b14806136fb57506004825160058111156136f9576136f9615260565b145b1561370b575060c0810151613748565b60028251600581111561372057613720615260565b0361372c575042613748565b815160405163170cc93360e21b81526104cc919060040161544a565b84608001516001600160401b0316816001600160401b03161161376f57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061379490610feb565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526137e69493929188916001600160401b0390911690600401615aaf565b602060405180830381865afa158015613801573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613825919061546a565b95945050505050565b5f808251602e1461386457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016104cc565b5f805b60028110156138b35761387b8160016159f1565b6138869060086157eb565b61ffff1685828151811061389c5761389c6154e1565b016020015160f81c901b9190911790600101613867565b5061ffff8116156138dd5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613938576138f48160036159f1565b6138ff9060086157eb565b63ffffffff16866139118360026157b6565b81518110613921576139216154e1565b016020015160f81c901b91909117906001016138e0565b5063ffffffff81161561395e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156139b35761397581601f6159f1565b6139809060086157eb565b8761398c8360066157b6565b8151811061399c5761399c6154e1565b016020015160f81c901b9190911790600101613961565b505f805b6008811015613a12576139cb8160076159f1565b6139d69060086157eb565b6001600160401b0316886139eb8360266157b6565b815181106139fb576139fb6154e1565b016020015160f81c901b91909117906001016139b7565b5090969095509350505050565b613a2761500b565b5f613a30611d0b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613a6957613a69615260565b6005811115613a7a57613a7a615260565b8152602001600182018054613a8e90615412565b80601f0160208091040260200160405190810160405280929190818152602001828054613aba90615412565b8015613b055780601f10613adc57610100808354040283529160200191613b05565b820191905f5260205f20905b815481529060010190602001808311613ae857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613b7357613b73615260565b14613ba6575f8481526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613bea57613bea615260565b021790555060208201516001820190613c0390826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613ca08582613561565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0090565b6040516001600160a01b038381166024830152604482018390526104d591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506146b8565b5f610ca882613d87613cf7565b546001600160a01b031690614710565b5f613da0611d0b565b6009015460ff16613dc457604051637fab81e560e01b815260040160405180910390fd5b5f613dcd611d0b565b905042613de06060860160408701615213565b6001600160401b0316111580613e1a5750613dfe6202a300426157b6565b613e0e6060860160408701615213565b6001600160401b031610155b15613e5457613e2f6060850160408601615213565b604051635879da1360e11b81526001600160401b0390911660048201526024016104cc565b613e69613e646060860186615b08565b614871565b613e79613e646080860186615b08565b6030613e886020860186615a04565b905014613eba57613e9c6020850185615a04565b6040516326475b2f60e11b81526104cc925060040190815260200190565b613ec48480615a04565b90505f03613ef157613ed68480615a04565b604051633e08a12560e11b81526004016104cc929190615b1c565b5f60088201613f008680615a04565b604051613f0e9291906158c5565b90815260200160405180910390205414613f4757613f2c8480615a04565b60405163a41f772f60e01b81526004016104cc929190615b1c565b613f51835f61442a565b6040805160e08101909152815481525f90819061405d9060208101613f768980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613fbe908a018a615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161400760608a0160408b01615213565b6001600160401b0316815260200161402260608a018a615b08565b61402b90615b4a565b815260200161403d60808a018a615b08565b61404690615b4a565b8152602001876001600160401b03168152506149da565b5f8281526006860160205260409020919350915061407b82826156e7565b50816008840161408b8880615a04565b6040516140999291906158c5565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906140d5908590600401615458565b6020604051808303815f875af11580156140f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614115919061546a565b6040805160e0810190915290915080600181526020016141358980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156141c4576141c4615260565b0217905550602082015160018201906141dd90826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061427a8880615a04565b6040516142889291906158c5565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906142c69190615213565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f6142fd611d0b565b600101546001600160401b0316919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661435857604051631afcd79f60e31b815260040160405180910390fd5b565b61436261430f565b61436b81614bc7565b614373614be0565b610d666060820135608083013561439060c0850160a08601615213565b6143a060e0860160c08701615c11565b6143b1610100870160e08801615c2a565b6101008701356143c961014089016101208a01615481565b614bf0565b6143d661430f565b5f6143df613cf7565b90506001600160a01b03821661440a5781604051637330680360e01b81526004016104cc919061524c565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f614433611d0b565b90505f826001600160401b0316846001600160401b031611156144615761445a83856158f4565b905061446e565b61446b84846158f4565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806144d05750600184015481516144cc916001600160401b0316906157b6565b8210155b156144f6576001600160401b038316606082015281815260408101516020820152614515565b828160600181815161450891906158d4565b6001600160401b03169052505b6060810151614525906064615add565b602082015160018601546001600160401b0392909216916145509190600160401b900460ff166157eb565b101561458057606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104cc565b856001600160401b03168160400181815161459b91906157b6565b9052506040810180516001600160401b03871691906145bb9083906159f1565b905250600184015460408201516064916145e091600160401b90910460ff16906157eb565b1015614607578060400151604051635943317f60e01b81526004016104cc91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614659611d0b565b5f848152600782016020526040902060020180549192509060089061468d90600160401b90046001600160401b0316615c4a565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6146cc6001600160a01b03841683614d86565b905080515f141580156146f05750808060200190518101906146ee9190615c65565b155b156104d55782604051635274afe760e01b81526004016104cc919061524c565b5f80836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161473e919061524c565b602060405180830381865afa158015614759573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061477d919061546a565b90506147946001600160a01b038516333086614d93565b6040516370a0823160e01b81525f906001600160a01b038616906370a08231906147c290309060040161524c565b602060405180830381865afa1580156147dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614801919061546a565b90508181116148675760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104cc565b61382582826159f1565b61487e6020820182615146565b63ffffffff1615801561489e5750614899602082018261549c565b151590505b156148e5576148b06020820182615146565b6148bd602083018361549c565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104cc565b6148f2602082018261549c565b90506149016020830183615146565b63ffffffff16111561491a576148b06020820182615146565b60015b61492a602083018361549c565b90508110156112c257614940602083018361549c565b61494b6001846159f1565b81811061495a5761495a6154e1565b905060200201602081019061496f9190615481565b6001600160a01b0316614985602084018461549c565b83818110614995576149956154e1565b90506020020160208101906149aa9190615481565b6001600160a01b031610156149d257604051630dbc8d5f60e31b815260040160405180910390fd5b60010161491d565b5f6060826040015151603014614a035760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614a44988a986001989297929690959094909390929101615c80565b60405160208183030381529060405290505f5b84608001516020015151811015614ab657818560800151602001518281518110614a8357614a836154e1565b6020026020010151604051602001614a9c929190615d3a565b60408051601f198184030181529190529150600101614a57565b5060a0840151805160209182015151604051614ad6938593929101615d6b565b60405160208183030381529060405290505f5b8460a001516020015151811015614b4857818560a00151602001518281518110614b1557614b156154e1565b6020026020010151604051602001614b2e929190615d3a565b60408051601f198184030181529190529150600101614ae9565b5060c0840151604051614b5f918391602001615da6565b6040516020818303038152906040529050600281604051614b809190615692565b602060405180830381855afa158015614b9b573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614bbe919061546a565b94909350915050565b614bcf61430f565b614bd7614dcc565b610d6681614dd4565b614be861430f565b614358614eb7565b614bf861430f565b5f614c01612462565b905061ffff85161580614c19575061271061ffff8616115b15614c3d57604051635f12e6c360e11b815261ffff861660048201526024016104cc565b86881115614c615760405163222d164360e21b8152600481018990526024016104cc565b60ff84161580614c745750600a60ff8516115b15614c975760405163170db35960e31b815260ff851660048201526024016104cc565b614c9f6142f4565b6001600160401b0316866001600160401b03161015614cdb576040516202a06d60e11b81526001600160401b03871660048201526024016104cc565b825f03614cfb5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b6060611d0483835f614ebf565b6040516001600160a01b0384811660248301528381166044830152606482018390526106d79186918216906323b872dd90608401613d48565b61435861430f565b614ddc61430f565b5f614de5611d0b565b8235815590506014614dfd6060840160408501615c2a565b60ff161180614e1c5750614e176060830160408401615c2a565b60ff16155b15614e5057614e316060830160408401615c2a565b604051634a59bbff60e11b815260ff90911660048201526024016104cc565b614e606060830160408401615c2a565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614e916040830160208401615213565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612a6361430f565b606081471015614ee4573060405163cd78605960e01b81526004016104cc919061524c565b5f80856001600160a01b03168486604051614eff9190615692565b5f6040518083038185875af1925050503d805f8114614f39576040519150601f19603f3d011682016040523d82523d5f602084013e614f3e565b606091505b5091509150614f4e868383614f58565b9695505050505050565b606082614f6d57614f6882614fab565b611d04565b8151158015614f8457506001600160a01b0384163b155b15614fa45783604051639996b31560e01b81526004016104cc919061524c565b5080611d04565b805115614fbb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614fe090615412565b5f825580601f10614fef575050565b601f0160209004905f5260205f2090810190610d669190615048565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561505c575f8155600101615049565b5090565b8015158114610d66575f80fd5b803563ffffffff81168114615080575f80fd5b919050565b5f805f60608486031215615097575f80fd5b8335925060208401356150a981615060565b91506150b76040850161506d565b90509250925092565b5f602082840312156150d0575f80fd5b5035919050565b5f80604083850312156150e8575f80fd5b82356001600160401b038111156150fd575f80fd5b83016080818603121561510e575f80fd5b915061511c6020840161506d565b90509250929050565b5f8060408385031215615136575f80fd5b8235915061511c6020840161506d565b5f60208284031215615156575f80fd5b611d048261506d565b803561ffff81168114615080575f80fd5b80356001600160401b0381168114615080575f80fd5b5f805f8060808587031215615199575f80fd5b84356001600160401b038111156151ae575f80fd5b850160a081880312156151bf575f80fd5b93506151cd6020860161515f565b92506151db60408601615170565b9396929550929360600135925050565b5f80604083850312156151fc575f80fd5b6152058361506d565b946020939093013593505050565b5f60208284031215615223575f80fd5b611d0482615170565b5f806040838503121561523d575f80fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52602160045260245ffd5b6006811061528457615284615260565b9052565b5f5b838110156152a257818101518382015260200161528a565b50505f910152565b5f81518084526152c1816020860160208601615288565b601f01601f19169290920160200192915050565b602081526152e7602082018351615274565b5f602083015160e060408401526153026101008401826152aa565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610d66575f80fd5b5f8082840361016081121561537c575f80fd5b6101408082121561538b575f80fd5b849350830135905061539c81615355565b809150509250929050565b5f80602083850312156153b8575f80fd5b82356001600160401b03808211156153ce575f80fd5b818501915085601f8301126153e1575f80fd5b8135818111156153ef575f80fd5b866020828501011115615400575f80fd5b60209290920196919550909350505050565b600181811c9082168061542657607f821691505b60208210810361544457634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610ca88284615274565b602081525f611d0460208301846152aa565b5f6020828403121561547a575f80fd5b5051919050565b5f60208284031215615491575f80fd5b8135611d0481615355565b5f808335601e198436030181126154b1575f80fd5b8301803591506001600160401b038211156154ca575f80fd5b6020019150600581901b36038213156136a4575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615509575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561554957615549615513565b60405290565b604080519081016001600160401b038111828210171561554957615549615513565b604051601f8201601f191681016001600160401b038111828210171561559957615599615513565b604052919050565b5f6001600160401b038211156155b9576155b9615513565b50601f01601f191660200190565b5f82601f8301126155d6575f80fd5b81356155e96155e4826155a1565b615571565b8181528460208386010111156155fd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615629575f80fd5b615631615527565b82356001600160401b0380821115615647575f80fd5b615653368387016155c7565b83526020850135915080821115615668575f80fd5b50615675368286016155c7565b60208301525061568760408401615170565b604082015292915050565b5f8251615509818460208701615288565b601f8211156104d557805f5260205f20601f840160051c810160208510156156c85750805b601f840160051c820191505b81811015611641575f81556001016156d4565b81516001600160401b0381111561570057615700615513565b6157148161570e8454615412565b846156a3565b602080601f831160018114615747575f84156157305750858301515b5f19600386901b1c1916600185901b178555610eb4565b5f85815260208120601f198616915b8281101561577557888601518255948401946001909101908401615756565b508582101561579257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca857610ca86157a2565b5f63ffffffff8083168181036157e1576157e16157a2565b6001019392505050565b8082028115828204841417610ca857610ca86157a2565b5f8261581c57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061583557615835615260565b91905290565b5f60208083525f845461584d81615412565b806020870152604060018084165f811461586e576001811461588a576158b7565b60ff19851660408a0152604084151560051b8a010195506158b7565b895f5260205f205f5b858110156158ae5781548b8201860152908301908801615893565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611e8257611e826157a2565b6001600160401b03828116828216039080821115611e8257611e826157a2565b805161508081615060565b5f8060408385031215615930575f80fd5b82516001600160401b0380821115615946575f80fd5b9084019060608287031215615959575f80fd5b615961615527565b8251815260208084015161597481615355565b82820152604084015183811115615989575f80fd5b80850194505087601f85011261599d575f80fd5b835192506159ad6155e4846155a1565b83815288828587010111156159c0575f80fd5b6159cf84838301848801615288565b806040840152508195506159e4818801615914565b9450505050509250929050565b81810381811115610ca857610ca86157a2565b5f808335601e19843603018112615a19575f80fd5b8301803591506001600160401b03821115615a32575f80fd5b6020019150368190038213156136a4575f80fd5b5f8851615a57818460208d01615288565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615b0057615b006157a2565b505092915050565b5f8235603e19833603018112615509575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615b5a575f80fd5b615b6261554f565b615b6b8361506d565b81526020808401356001600160401b0380821115615b87575f80fd5b9085019036601f830112615b99575f80fd5b813581811115615bab57615bab615513565b8060051b9150615bbc848301615571565b8181529183018401918481019036841115615bd5575f80fd5b938501935b83851015615bff5784359250615bef83615355565b8282529385019390850190615bda565b94860194909452509295945050505050565b5f60208284031215615c21575f80fd5b611d048261515f565b5f60208284031215615c3a575f80fd5b813560ff81168114611d04575f80fd5b5f6001600160401b038083168181036157e1576157e16157a2565b5f60208284031215615c75575f80fd5b8151611d0481615060565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651615cc681602a850160208b01615288565b865190830190615cdd81602a840160208b01615288565b60c087901b6001600160c01b031916602a9290910191820152615d0f603282018660e01b6001600160e01b0319169052565b615d28603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615d4b818460208801615288565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615d7c818460208901615288565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615db7818460208801615288565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTokenAddress\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", + Bin: "0x3630383036303430353233343830313536313030306635373566383066643562353036303430353136313561356533383033383036313561356538333339383130313630343038313930353236313030326539313631303130373536356236303031383136303031383131313135363130303432353736313030343236313031326335363562303336313030346635373631303034663631303035353536356235303631303134303536356237666630633537653136383430646630343066313530383864633266383166653339316333393233626563373365323361393636326566633963323239633661303038303534363830313030303030303030303030303030303039303034363066663136313536313030613535373630343035313633663932656538613936306530316238313532363030343031363034303531383039313033393066643562383035343630303136303031363034303162303339303831313631343631303130343537383035343630303136303031363034303162303331393136363030313630303136303430316230333930383131373832353536303430353139303831353237666337663530356232663337316165323137356565343931336634343939653166323633336137623539333633323165656431636461656236313135313831643239303630323030313630343035313830393130333930613135623530353635623566363032303832383430333132313536313031313735373566383066643562383135313630303238313130363130313235353735663830666435623933393235303530353035363562363334653438376237313630653031623566353236303231363030343532363032343566666435623631353931313830363130313464356633393566663366653630383036303430353233343830313536313030306635373566383066643562353036303034333631303631303163313537356633353630653031633830363338323830613235613131363130306636353738303633626133613462393731313631303039613537383036336261336134623937313436313033643935373830363362633566626665633134363130336563353738303633626565306130336631343631303431333537383036336339373464316236313436313034323635373830363364356632306666363134363130343265353738303633646639336438646531343631303434653537383036336534613633633430313436313034353835373830363366373463363037623134363130343766353738303633666437616335653731343631303439323537356638306664356238303633383238306132356131343631303334333537383036333933653234353938313436313033346235373830363339386633653262343134363130333565353738303633396531626334656631343631303337313537383036336133613635653438313436313033383435373830363361393737386137613134363130323730353738303633616662393830393631343631303339373537383036336237373162336263313436313033626535373566383066643562383036333361316366666636313136313031363835373830363333613163666666363134363130323863353738303633343637656630366631343631303239663537383036333462656530303430313436313032623235373830363335323937666165363134363130326433353738303633363033303564363231343631303265363537383036333632303635383536313436313033303335373830363336363433356162663134363130333136353738303633373332323134663831343631303332393537383036333736663738363231313436313033333035373566383066643562383036333031313861636334313436313031633535373830363330333232656439383134363130316461353738303633313531643330643131343631303165643537383036333165633434373234313436313032306335373830363332306439316237613134363130323166353738303633323565316337373631343631303233323537383036333265323139346438313436313032343535373830363333353435356465643134363130323730353735623566383066643562363130316438363130316433333636303034363134396432353635623631303461353536356230303562363130316438363130316538333636303034363134613064353635623631303464613536356236313031663536303061383135363562363034303531363066663930393131363831353236303230303135623630343035313830393130333930663335623631303164383631303231613336363030343631343964323536356236313037353635363562363130316438363130323264333636303034363134613234353635623631303736313536356236313031643836313032343033363630303436313461373235363562363130643362353635623631303235383631303235333336363030343631346130643536356236313064616635363562363034303531363030313630303136303430316230333930393131363831353236303230303136313032303335363562363130323739363132373130383135363562363034303531363166666666393039313136383135323630323030313631303230333536356236313031643836313032396133363630303436313439643235363562363130653033353635623631303164383631303261643336363030343631346139333536356236313065306535363562363130326335363130326330333636303034363134616431353635623631306562653536356236303430353139303831353236303230303136313032303335363562363130316438363130326531333636303034363134623338353635623631306565353536356236313032656536303134383135363562363034303531363366666666666666663930393131363831353236303230303136313032303335363562363130326335363130333131333636303034363134623630353635623631313161643536356236313032353836313033323433363630303436313461306435363562363131316364353635623631303263353566383135363562363130316438363130333365333636303034363134396432353635623631313165313536356236313031663536303330383135363562363130316438363130333539333636303034363134613064353635623631313230633536356236313031643836313033366333363630303436313462333835363562363131326339353635623631303263353631303337663336363030343631346237623536356236313134663535363562363130316438363130333932333636303034363134613933353635623631313531333536356236313032633537663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303038313536356236313033636336303035363030313630393931623031383135363562363034303531363130323033393139303631346239623536356236313031643836313033653733363630303436313461306435363562363131373035353635623631303263353766653932353436643639383935306464643338393130643265313565643164393233636430613762336464653965326136613366333830353635353539636230303831353635623631303164383631303432313336363030343631346130643536356236313139363535363562363130316635363031343831353635623631303434313631303433633336363030343631346130643536356236313161383235363562363034303531363130323033393139303631346332343536356236313032353836323032613330303831353635623631303263353766366535626466636365313565353363333430366561363762666365333764636432366635313532643534393238323465343366643565336338616335616230303831353635623631303164383631303438643336363030343631346362383536356236313162633435363562363130326335363130346130333636303034363134636636353635623631316361333536356236313034623038333833383336313163646235363562363130346435353736303430353136333130333663663931363065313162383135323630303438313031383439303532363032343031356236303430353138303931303339306664356235303530353035363562356636313034653336313230323835363562356638333831353236303037383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303035383131313135363130353163353736313035316336313462616635363562363030353831313131353631303532643537363130353264363134626166353635623831353236303230303136303031383230313830353436313035343139303631346436313536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363130353664393036313464363135363562383031353631303562383537383036303166313036313035386635373631303130303830383335343034303238333532393136303230303139313631303562383536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313035396235373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333932383330313534313636306130393039313031353239303931353038313531363030353831313131353631303632333537363130363233363134626166353635623134363130363536353735663833383135323630303738333031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313034636339313630666631363930363030343031363134643939353635623630363038313031353136303430353136333432613265306235363065313162383135323630303438313031383539303532363030313630303136303430316230333930393131363630323438323031353235663630343438323031353236303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f393036333835343563313661393036303634303135663630343035313830383330333831383635616634313538303135363130366364353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631303666343931393038313031393036313465613235363562363034303531383236336666666666666666313636306530316238313532363030343031363130373130393139303631346564333536356236303230363034303531383038333033383135663837356166313135383031353631303732633537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313037353039313930363134656535353635623530353035303530353635623631303735303833383338333631316364623536356235663631303736613631323032383536356236303039383130313534393039313530363066663136313536313037393335373630343035313633376661623831653536306530316238313532363030343031363034303531383039313033393066643562363030353630303136303939316230313630303136303031363061303162303331363633343231336366373836303430353138313633666666666666666631363630653031623831353236303034303136303230363034303531383038333033383138363561666131353830313536313037643635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130376661393139303631346565353536356238333630323030313335313436313038323335373630343035313633373262306137653736306531316238313532363032303834303133353630303438323031353236303234303136313034636335363562333036313038333436303630383530313630343038363031363134656663353635623630303136303031363061303162303331363134363130383663353736313038353236303630383430313630343038353031363134656663353635623630343035313633326638383132306436306532316238313532363030343031363130346363393139303631346239623536356235663631303837613630363038353031383536313466313735363562393035303930353035663830356238323831363366666666666666663136313031353631306236313537356636313038396436303630383830313838363134663137353635623833363366666666666666663136383138313130363130386233353736313038623336313466356335363562393035303630323030323831303139303631303863353931393036313466373035363562363130386365393036313466646235363562383035313630343035313931393235303566393136303038383830313931363130386536393136313530353635363562393038313532363032303031363034303531383039313033393032303534313436313039313635373830353136303430353136336134316637373266363065303162383135323631303463633931393036303034303136313465643335363562356636303032383835663031333538343630343035313630323030313631303934353932393139303931383235323630653031623630303136303031363065303162303331393136363032303832303135323630323430313930353635623630343038303531363031663139383138343033303138313532393038323930353236313039356639313631353035363536356236303230363034303531383038333033383138353561666131353830313536313039376135373364356638303365336435666664356235303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631303939643931393036313465653535363562393035303830383636303038303138333566303135313630343035313631303962353931393036313530353635363562393038313532363034303830353136303230393238313930303338333031383132303933393039333535363065303833303138313532363030323833353238343531383238343031353238343831303138303531363030313630303136303430316230333930383131363835383430313532356636303630383630313831393035323931353138313136363038303836303135323432313636306130383530313532363063303834303138313930353238343831353236303037386130313930393235323930323038313531383135343832393036306666313931363630303138333630303538313131313536313061333735373631306133373631346261663536356230323137393035353530363032303832303135313630303138323031393036313061353039303832363135306162353635623530363034303832383130313531363030323833303138303534363036303836303135313630383038373031353136306130383830313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303933303135313630303339303932303138303534363030313630303136303430316230333139313639323834313639323930393231373930393135353833303135313631306166343931313638353631353137613536356238323531363034303531393139353530363130623035393136313530353635363562363034303830353139313832393030333832323039303834303135313630303136303031363034303162303331363832353239303832393037663964343766656639646130373736363135343665363436643631383330626663626461393035303663326535656564333831393565383263346562316362646639303630323030313630343035313830393130333930613335303530383036313062356139303631353138643536356239303530363130383831353635623530363030343833303138313930353536303031383330313534363036343930363130623835393036303031363034303162393030343630666631363833363135316166353635623130313536313062613735373630343035313633353934333331376636306530316238313532363030343831303138323930353236303234303136313034636335363562356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363331653664393738393631306263623837363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363130626562393139303631346564333536356236303230363034303531383038333033383138363561663431353830313536313063303635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130633261393139303631346565353536356239303530356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633383632626661363338383630343035313832363366666666666666663136363065303162383135323630303430313631306336343931393036313532663135363562356636303430353138303833303338313836356166343135383031353631306337653537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313063613539313930383130313930363134656132353635623930353035663630303238323630343035313631306362383931393036313530353635363562363032303630343035313830383330333831383535616661313538303135363130636433353733643566383033653364356666643562353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313063663639313930363134656535353635623930353038323831313436313064323235373630343035313633313837326663386436306530316238313532363030343831303138323930353236303234383130313834393035323630343430313631303463633536356235303530353036303039393039323031383035343630666631393136363030313137393035353530353035303530353635623631306434343832363132313537353635623631306436343537363034303531363333306566613938623630653031623831353236303034383130313833393035323630323430313631303463633536356235663631306436653833363131613832353635623531393035303630303238313630303538313131313536313064383535373631306438353631346261663536356231343631306461353537383036303430353136333137306363393333363065323162383135323630303430313631303463633931393036313464393935363562363130373530383338333631323138303536356235663830363130646239363132343361353635623630303330313534363130646337393038343631353337633536356239303530383031353830363130646463353735303630303136303031363034303162303338313131356231353631306466643537363034303531363332323264313634333630653231623831353236303034383130313834393035323630323430313631303463633536356239323931353035303536356236313037353038333833383336313234356535363562363130653136363132363239353635623566363130653166363132343361353635623930353035663830363130653263383436313236373335363562393135303931353036313065333938323631323135373536356236313065343535373530353035303631306562333536356235663832383135323630303538343031363032303532363034303930323035343630303136303031363061303162303331363630303438323531363030353831313131353631306537333537363130653733363134626166353635623033363130653938353735663833383135323630303838353031363032303532363034303831323038303534393139303535363130653936383238323631326132323536356235303562363130656165383136313065613938343630343030313531363131316164353635623631326139323536356235303530353035303562363130656262363132616230353635623530353635623566363130656337363132363239353635623631306564333835383538353835363132616436353635623930353036313065646436313261623035363562393439333530353035303530353635623566363130656565363132343361353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631306632373537363130663237363134626166353635623630303338313131313536313066333835373631306633383631346261663536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313832303135343630343038303833303139313930393135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353238313031353139303931353035663631306661653832363131613832353635623930353036303031383335313630303338313131313536313066633535373631306663353631346261663536356231343631306665363537383235313630343035313633336230643534306436306532316238313532363130346363393139303630303430313631353339623536356236303034383135313630303538313131313536313066666235373631306666623631346261663536356230333631313031313537363131303039383536313263386435363562353035303530353035303530353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363339646532336434303631313033363861363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131303536393139303631346564333536356236303630363034303531383038333033383138363561663431353830313536313130373135373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131303935393139303631353362353536356235303931353039313530383138343134363131306332353738343630343030313531363034303531363330383939333862333630653131623831353236303034303136313034636339313831353236303230303139303536356238303630303136303031363034303162303331363833363036303031353136303031363030313630343031623033313631303830363131306662353735303830363030313630303136303430316230333136383536306130303135313630303136303031363034303162303331363131356231353631313132343537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313034636335363562356638373831353236303036383730313630323039303831353236303430393138323930323038303534363066663139313636303032393038313137383235353031383035343630303136303031363034303162303334323136363030313630343031623831303236376666666666666666666666666666666636303430316231393930393231363931393039313137393039313535393135313931383235323835393138393931376630343730353962343635303639623862373531383336623431663966316438336461666635383364323233386363376662623436313433376563323361346636393130313630343035313830393130333930613335303530353035303530353035303530353635623566363131316236363132343361353635623630303330313534363130646664393036303031363030313630343031623033383431363631353161663536356235663631313164373832363131613832353635623630383030313531393239313530353035363562363131316563383338333833363132343565353635623631303464353537363034303531363335626666363833663630653131623831353236303034383130313834393035323630323430313631303463633536356235663631313231353631323433613536356239303530356636313132323138333631316138323536356235313930353036303034383136303035383131313135363131323338353736313132333836313462616635363562313436313132353835373830363034303531363331373063633933333630653231623831353236303034303136313034636339313930363134643939353635623566383338313532363030353833303136303230353236303430393032303534363030313630303136306130316230333136333331343631313239333537333335623630343035313633366532636364373536306531316238313532363030343031363130346363393139303631346239623536356235663833383135323630303838333031363032303930383135323630343038303833323038303534393038343930353536303035383630313930393235323930393132303534363130373530393036303031363030313630613031623033313638323631326132323536356236313132643136313236323935363562356636313132646136313234336135363562356638333831353236303036383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303033383131313135363131333133353736313133313336313462616635363562363030333831313131353631313332343537363131333234363134626166353635623831353238313534363130313030393030343630303136303031363061303162303331363630323038323031353236303031383230313534363034303832303135323630303239303931303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303530363030333831353136303033383131313135363131333964353736313133396436313462616635363562313436313133626535373830353136303430353136333362306435343064363065323162383135323631303463633931393036303034303136313533396235363562363030343631313363643832363034303031353136313161383235363562353136303035383131313135363131336466353736313133646636313462616635363562313436313134646535373566363131336565383536313230346335363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633396465323364343038343630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131343264393139303631346564333536356236303630363034303531383038333033383138363561663431353830313536313134343835373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131343663393139303631353362353536356235303931353039313530383138343630343030313531313436313134393835373630343035313633303839393338623336306531316238313532363030343831303138333930353236303234303136313034636335363562383036303031363030313630343031623033313638343630633030313531363030313630303136303430316230333136313131353631313464613537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313034636335363562353035303530356236313134653738333631326338643536356235303530363131346631363132616230353635623530353035363562356636313134666536313236323935363562363131353039383333333834363132656164353635623930353036313064666436313261623035363562356636313135316336313230323835363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363332653433636562353631313534333836363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131353633393139303631346564333536356236303430383035313830383330333831383635616634313538303135363131353764353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631313561313931393036313533663535363562393135303931353038303631313563373537363034303531363332643037313335333630653031623831353238313135313536303034383230313532363032343031363130346363353635623566383238313532363030363834303136303230353236303430393032303830353436313135653139303631346436313536356239303530356630333631313630353537363034303531363330383939333862333630653131623831353236303034383130313833393035323630323430313631303463633536356236303031356638333831353236303037383530313630323035323630343039303230353436306666313636303035383131313135363131363262353736313136326236313462616635363562313436313136356535373566383238313532363030373834303136303230353236303430393038313930323035343930353136333137306363393333363065323162383135323631303463633931363066663136393036303034303136313464393935363562356638323831353236303036383430313630323035323630343038313230363131363736393136313439323135363562356638323831353236303037383430313630323039303831353236303430393138323930323038303534363066663139313636303032393038313137383235353031383035343630303136303031363034303162303334323831383131363630303136306330316230323630303136303031363063303162303339303933313639323930393231373932383339303535383435313630303136303830316239303933303431363832353239313831303139313930393135323833393137666638666431633930666239636661326361323335386664663538303662303836616434333331356439326232323163393239656663376631303563653735363839313031363034303531383039313033393061323530353035303530353635623566363131373065363132343361353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631313734373537363131373437363134626166353635623630303338313131313536313137353835373631313735383631346261663536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313830383330313534363034303833303135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303931353038313531363030333831313131353631313764313537363131376431363134626166353635623134313538303135363131376632353735303630303338313531363030333831313131353631313765663537363131376566363134626166353635623134313535623135363131383133353738303531363034303531363333623064353430643630653231623831353236313034636339313930363030343031363135333962353635623566363131383231383236303430303135313631316138323536356239303530383036303630303135313630303136303031363034303162303331363566303336313138353335373630343035313633333962383934663936306532316238313532363030343831303138353930353236303234303136313034636335363562363034303830383330313531363036303833303135313630383038343031353139323531363334326132653062353630653131623831353236303035363030313630393931623031393336336565356234386562393337335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f39333633383534356331366139333631313863313933393036303034303139323833353236303031363030313630343031623033393138323136363032303834303135323136363034303832303135323630363030313930353635623566363034303531383038333033383138363561663431353830313536313138646235373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363131393032393139303831303139303631346561323536356236303430353138323633666666666666666631363630653031623831353236303034303136313139316539313930363134656433353635623630323036303430353138303833303338313566383735616631313538303135363131393361353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631313935653931393036313465653535363562353035303530353035303536356235663631313936653631323032383536356235663833383135323630303638323031363032303532363034303930323038303534393139323530393036313139386339303631346436313536356239303530356630333631313962303537363034303531363330383939333862333630653131623831353236303034383130313833393035323630323430313631303463633536356236303031356638333831353236303037383330313630323035323630343039303230353436306666313636303035383131313135363131396436353736313139643636313462616635363562313436313161303935373566383238313532363030373832303136303230353236303430393038313930323035343930353136333137306363393333363065323162383135323631303463633931363066663136393036303034303136313464393935363562356638323831353236303036383230313630323035323630343039303831393032303930353136336565356234386562363065303162383135323630303536303031363039393162303139313633656535623438656239313631316134323931393036303034303136313534313835363562363032303630343035313830383330333831356638373561663131353830313536313161356535373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130346435393139303631346565353536356236313161386136313439353835363562356636313161393336313230323835363562356638343831353236303037383230313630323035323630343039303831393032303831353136306530383130313930393235323830353439323933353039303931383239303630666631363630303538313131313536313161636135373631316163613631346261663536356236303035383131313135363131616462353736313161646236313462616635363562383135323630323030313630303138323031383035343631316165663930363134643631353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313162316239303631346436313536356238303135363131623636353738303630316631303631316233643537363130313030383038333534303430323833353239313630323030313931363131623636353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631316234393537383239303033363031663136383230313931356235303530353039313833353235303530363030323832303135343630303136303031363034303162303338303832313636303230383430313532363030313630343031623832303438313136363034303834303135323630303136303830316238323034383131363630363038343031353236303031363063303162393039313034383131363630383038333031353236303033393039323031353439303931313636306130393039313031353239333932353035303530353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436303032393139303630303136303430316239303034363066663136383036313163306435373530383035343630303136303031363034303162303338303834313639313136313031353562313536313163326235373630343035313633663932656538613936306530316238313532363030343031363034303531383039313033393066643562383035343638666666666666666666666666666666666666313931363630303136303031363034303162303338333136313736303031363034303162313738313535363131633536383438343631333138323536356238303534363066663630343031623139313638313535363034303531363030313630303136303430316230333833313638313532376663376635303562326633373161653231373565653439313366343439396531663236333361376235393336333231656564316364616562363131353138316432393036303230303136303430353138303931303339306131353035303530353035363562356638303631316361643631323032383536356239303530383036303038303138343834363034303531363131636333393239313930363135346132353635623930383135323630323030313630343035313830393130333930323035343931353035303932393135303530353635623566383036313163653536313234336135363562356638363831353236303036383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303033383131313135363131643165353736313164316536313462616635363562363030333831313131353631316432663537363131643266363134626166353635623831353238313534363130313030393030343630303136303031363061303162303331363630323038323031353236303031383230313534363034303830383330313931393039313532363030323930393230313534363030313630303136303430316230333830383231363630363038343031353236303031363034303162383230343831313636303830383430313532363030313630383031623832303438313136363061303834303135323630303136306330316239303931303431363630633039303931303135323831303135313930393135303566363131646135383236313161383235363562393035303630303238333531363030333831313131353631316462633537363131646263363134626166353635623134363131646464353738323531363034303531363333623064353430643630653231623831353236313034636339313930363030343031363135333962353635623630323038333031353136303031363030313630613031623033313633333134363131653739353735663832383135323630303538353031363032303532363034303930323035343630303136303031363061303162303331363333313436313165313635373333363131323739353635623566383238313532363030353835303136303230353236303430393032303534363061303832303135313631316534353931363030313630623031623930303436303031363030313630343031623033313639303631353462313536356236303031363030313630343031623033313634323130313536313165373935373630343035313633666236636536336636306530316238313532363030313630303136303430316230333432313636303034383230313532363032343031363130346363353635623630303238313531363030353831313131353631316538653537363131653865363134626166353635623033363131666263353736303032383430313534363038303834303135313631316562303931363030313630303136303430316230333136393036313534623135363562363030313630303136303430316230333136343231303135363131656534353736303430353136336662366365363366363065303162383135323630303136303031363034303162303334323136363030343832303135323630323430313631303463633536356238363135363131656636353736313165663438323837363132313830353635623530356235663838383135323630303638353031363032303532363034303930323038303534363066663139313636303033313739303535363036303833303135313630383038323031353136313166326639313834393136313166326139313930363135346431353635623631333139633536356235303566383938313532363030363836303136303230353236303430383132303630303230313830353436303031363030313630343031623033393039333136363030313630633031623032363030313630303136306330316230333930393331363932393039323137393039313535363131663730383436313333363635363562356638613831353236303037383730313630323035323630343038303832323038333930353535313931393235303834393138623931376633363664333336633061623338306463373939663039356136663832613236333236353835633532393039636336393862303962613435343037303965643537393161333135313539343530363132303231393335303530353035303536356236303034383135313630303538313131313536313166643135373631316664313631346261663536356230333631323030353537363131666466383336313333363635363562356638393831353236303037383630313630323035323630343039303230353536313166663838383631326338643536356236303031393435303530353035303530363132303231353635623830353136303430353136333137306363393333363065323162383135323631303463633931393036303034303136313464393935363562393339323530353035303536356237666539323534366436393839353064646433383931306432653135656431643932336364306137623364646539653261366133663338303536353535396362303039303536356236303430383035313630363038303832303138333532356638303833353236303230383330313532393138313031393139303931353236303430353136333036663832353335363065343162383135323633666666666666666638333136363030343832303135323566393038313930363030353630303136303939316230313930363336663832353335303930363032343031356636303430353138303833303338313836356166613135383031353631323062303537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313230643739313930383130313930363135346631353635623931353039313530383036313230663935373630343035313633366232663139653936306530316238313532363030343031363034303531383039313033393066643562383135313135363132313166353738313531363034303531363336626135383961353630653031623831353236303034383130313931393039313532363032343031363130346363353635623630323038323031353136303031363030313630613031623033313631353631323135303537383136303230303135313630343035313632346465373564363065333162383135323630303430313631303463633931393036313462396235363562353039323931353035303536356235663830363132313631363132343361353635623566393338343532363030353031363032303532353035303630343039303230353436303031363030313630613031623033313631353135393035363562363034303531363330366638323533353630653431623831353236336666666666666666383231363630303438323031353235663930383139303831393036303035363030313630393931623031393036333666383235333530393036303234303135663630343035313830383330333831383635616661313538303135363132316362353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631323166323931393038313031393036313534663135363562393135303931353038303631323231343537363034303531363336623266313965393630653031623831353236303034303136303430353138303931303339306664356236303035363030313630393931623031363030313630303136306130316230333136363334323133636637383630343035313831363366666666666666663136363065303162383135323630303430313630323036303430353138303833303338313836356166613135383031353631323235373537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313232376239313930363134656535353635623832353131343631323261313537383135313630343035313633366261353839613536306530316238313532363030343831303139313930393135323630323430313631303463633536356236303230383230313531363030313630303136306130316230333136313536313232643235373831363032303031353136303430353136323464653735643630653331623831353236303034303136313034636339313930363134623962353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363330383863323436333835363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313233306639313930363134656433353635623630343038303531383038333033383138363561663431353830313536313233323935373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132333464393139303631353538313536356239313530393135303831383731343631323337343537363034303531363330383939333862333630653131623831353236303034383130313838393035323630323430313631303463633536356235663631323337643631323433613536356235663839383135323630303538323031363032303532363034303930323036303031303135343930393135303630303136303031363034303162303339303831313639303833313631313135363132343130353735663838383135323630303538323031363032303930383135323630343039313832393032303630303130313830353436303031363030313630343031623033313931363630303136303031363034303162303338363136393038313137393039313535393135313931383235323839393137666563343431343865386666323731663264306261636566313134323135346162616362306162623361323965623365623530653263613937653836643034333539313031363034303531383039313033393061323631323432663536356235663838383135323630303538323031363032303532363034303930323036303031303135343630303136303031363034303162303331363931353035623530393639353530353035303530353035303536356237663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303039303536356235663830363132343638363132343361353635623930353035663631323437343836363133346539353635623930353036313234376638363631323135373536356236313234386535373630303139323530353035303631323032313536356235663836383135323630303538333031363032303532363034303930323035343630303136303031363061303162303331363333313436313234623335373333363131323739353635623566383638313532363030353833303136303230353236303430393032303534363061303832303135313631323465323931363030313630623031623930303436303031363030313630343031623033313639303631353462313536356236303031363030313630343031623033313638313630633030313531363030313630303136303430316230333136313031353631323532393537363063303831303135313630343035313633666236636536336636306530316238313532363030313630303136303430316230333930393131363630303438323031353236303234303136313034636335363562356638353135363132353431353736313235336138373836363132313830353635623930353036313235356635363562353035663836383135323630303538333031363032303532363034303930323036303031303135343630303136303031363034303162303331363562363030343833303135343630343038333031353135663931363030313630303136306130316230333136393036333466323234323966393036313235383439303631313161643536356236306130383630313531363063303837303135313630343035313630303136303031363065303162303331393630653038363930316231363831353236313235623439333932393138323931383939303630303430313631353561343536356236303230363034303531383038333033383138363561666131353830313536313235636635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132356633393139303631346565353536356239303530383038343630303830313566386138313532363032303031393038313532363032303031356632303566383238323534363132363137393139303631353137613536356239303931353535303530313531353937393635303530353035303530353035303536356237663962373739623137343232643064663932323233303138623332623464316661343665303731373233643638313765323438366430303362656363353566303038303534363030313139303136313236366435373630343035313633336565356165623536306530316238313532363030343031363034303531383039313033393066643562363030323930353535363562356636313236376336313439353835363562356636313236383536313230323835363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363332653433636562353631323661633838363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363132366363393139303631346564333536356236303430383035313830383330333831383635616634313538303135363132366536353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631323730613931393036313533663535363562393135303931353038303135363132373331353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313034636335363562356638323831353236303037383430313630323035323630343038303832323038313531363065303831303139303932353238303534383239303630666631363630303538313131313536313237363235373631323736323631346261663536356236303035383131313135363132373733353736313237373336313462616635363562383135323630323030313630303138323031383035343631323738373930363134643631353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313237623339303631346436313536356238303135363132376665353738303630316631303631323764353537363130313030383038333534303430323833353239313630323030313931363132376665353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631323765313537383239303033363031663136383230313931356235303530353039313833353235303530363030323832303135343630303136303031363034303162303338303832313636303230383430313532363030313630343031623832303438313136363034303834303135323630303136303830316238323034383131363630363038343031353236303031363063303162393039313034383131363630383038333031353236303033393238333031353431363630613039303931303135323930393135303831353136303035383131313135363132383639353736313238363936313462616635363562313431353830313536313238386135373530363030313831353136303035383131313135363132383837353736313238383736313462616635363562313431353562313536313238616235373830353136303430353136333137306363393333363065323162383135323631303463633931393036303034303136313464393935363562363030333831353136303035383131313135363132386330353736313238633036313462616635363562303336313238636535373630303438313532363132386433353635623630303538313532356238333630303830313831363032303031353136303430353136313238653939313930363135303536353635623930383135323630343038303531363032303932383139303033383330313930323035663930383139303535383538313532363030373837303139303932353239303230383135313831353438333932393139303832393036306666313931363630303138333630303538313131313536313239326435373631323932643631346261663536356230323137393035353530363032303832303135313630303138323031393036313239343639303832363135306162353635623530363034303832303135313630303238323031383035343630363038353031353136303830383630313531363061303837303135313630303136303031363034303162303339353836313636303031363030313630383031623033313939303934313639333930393331373630303136303430316239323836313639323930393230323931393039313137363030313630303136303830316230333136363030313630383031623931383531363931393039313032363030313630303136306330316230333136313736303031363063303162393138343136393139303931303231373930353536306330393039323031353136303033393039313031383035343630303136303031363034303162303331393136393139303932313631373930353538303531363030353831313131353631323965623537363132396562363134626166353635623630343035313834393037663163303865353936353666316131386463326461373638323663646335323830356334336538393761313763353066616566623861623363313532366363313639303566393061333931393639313935353039303933353035303530353035363562356636313261326236313337633135363562383035343630343035313633343063313066313936306530316238313532363030313630303136306130316230333836383131363630303438333031353236303234383230313836393035323932393335303931313639303633343063313066313939303630343430313566363034303531383038333033383135663837383033623135383031353631326137373537356638306664356235303561663131353830313536313261383935373364356638303365336435666664356235303530353035303530353035303536356236313134663138323832363132613966363133376331353635623534363030313630303136306130316230333136393139303631333765353536356236303031376639623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030353535363562356638303631326165303631323433613536356236303032383130313534393039313530363166666666363030313630343031623930393130343831313639303836313631303830363132623039353735303631323731303631666666663836313631313562313536313262326435373630343035313633356631326536633336306531316238313532363166666666383631363630303438323031353236303234303136313034636335363562363030323831303135343630303136303031363034303162303339303831313639303835313631303135363132623639353736303430353136323032613036643630653131623831353236303031363030313630343031623033383531363630303438323031353236303234303136313034636335363562383035343833313038303631326237623537353038303630303130313534383331313562313536313262396335373630343035313633323232643136343336306532316238313532363030343831303138343930353236303234303136313034636335363562356636313262613638343631333834343536356239303530356636313262623238323631306461663536356239303530356636313262626638393833363133383631353635623930353036303430353138303630383030313630343035323830363132626433333339303536356236303031363030313630613031623033393038313136383235323631666666663830386331363630323038303835303139313930393135323630303136303031363034303162303338303864313636303430383038373031393139303931353235663630363039363837303138313930353238383831353236303035393039623031383335323939386139303230383635313831353439333838303135313962383830313531383331363630303136306230316230323637666666666666666666666666666666663630623031623139396339303935313636303031363061303162303236303031363030313630623031623033313939303934313639353136393439303934313739313930393131373938393039383136313738313535393130313531363030313930393130313830353439313930393531363630303136303031363034303162303331393930393131363137393039333535353039303931353035303934393335303530353035303536356235663631326339363631323433613536356235663833383135323630303638323031363032303532363034303830383232303831353136306530383130313930393235323830353439333934353039313932393039313930383239303630666631363630303338313131313536313263636635373631326363663631346261663536356236303033383131313135363132636530353736313263653036313462616635363562383135323831353436313031303039303034363030313630303136306130316230333136363032303832303135323630303138323031353436303430383038333031393139303931353236303032393039323031353436303031363030313630343031623033383038323136363036303834303135323630303136303430316238323034383131363630383038343031353236303031363038303162383230343831313636306130383430313532363030313630633031623930393130343136363063303930393130313532383130313531393039313530363132643534363133653265353635623832363038303031353136313264363339313930363135346231353635623630303136303031363034303162303331363432313031353631326439373537363034303531363366623663653633663630653031623831353236303031363030313630343031623033343231363630303438323031353236303234303136313034636335363562356638343831353236303036383430313630323039303831353236303430383038333230383035343630303136303031363061383162303331393136383135353630303138313031383439303535363030323031383339303535363030373836303139303931353238313230383035343930383239303535393038303832313536313265353235373566383438313532363030353837303136303230353236303430393032303534363132373130393036313265303439303630303136306130316239303034363166666666313638353631353161663536356236313265306539313930363135333763353635623931353038313836363030383031356638363831353236303230303139303831353236303230303135663230356638323832353436313265333239313930363135313761353635623930393135353530363132653432393035303832383436313535643235363562393035303631326535323835363032303031353138323631326132323536356236313265363738353630323030313531363130656139383736303630303135313631313161643536356236303430383035313832383135323630323038313031383439303532383539313839393137663865636563663531303037306333323064396135353332336666616265333530653239346165353035666330633530396463353733366461366635636339393339313031363034303531383039313033393061333530353035303530353035303530353635623566383036313265623736313234336135363562393035303566363132656336363130323533383536313338343435363562393035303566363132656432383736313161383235363562393035303631326564643837363132313537353635623631326566643537363034303531363333306566613938623630653031623831353236303034383130313838393035323630323430313631303463633536356236303032383135313630303538313131313536313266313235373631326631323631346261663536356231343631326633333537383035313630343035313633313730636339333336306532316238313532363130346363393139303630303430313631346439393536356235663832383236303830303135313631326634343931393036313534623135363562393035303833363030323031363030613930353439303631303130303061393030343630303136303031363034303162303331363832363034303031353136313266366439313930363135356535353635623630303136303031363034303162303331363831363030313630303136303430316230333136313131353631326661613537363034303531363336643531666530353630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313034636335363562356638303631326662363861383436313331396335363562393135303931353035663861383336303430353136303230303136313266653439323931393039313832353236306330316236303031363030313630633031623033313931363630323038323031353236303238303139303536356236303430383035313630316631393831383430333031383135323832383235323830353136303230393039313031323036306530383330313930393135323931353038303630303138313532363030313630303136306130316230333863313636303230383038333031393139303931353236303430383038333031386639303532363030313630303136303430316230333830386231363630363038353031353235663630383038353031383139303532393038383136363061303835303135323630633039303933303138333930353238343833353236303036386230313930393135323930323038313531383135343832393036306666313931363630303138333630303338313131313536313330373735373631333037373631346261663536356230323137393035353530363032303832383130313531383235343631303130303630303136306138316230333139313636313031303036303031363030313630613031623033393238333136303231373833353536303430383038353031353136303031383530313535363036303830383630313531363030323930393530313830353436303830383038393031353136306130386130313531363063303930396130313531363030313630303136303430316230333939386131363630303136303031363038303162303331393930393431363933393039333137363030313630343031623931386131363931393039313032313736303031363030313630383031623033313636303031363038303162393938393136393939303939303236303031363030313630633031623033313639383930393831373630303136306330316239313838313639313930393130323137393035353831353138393836313638313532386138363136393438313031393439303934353239333862313639303833303135323931383130313835393035323930386331363931386439313834393137666230303234623236336263336130623732386136656465613530613639656661383431313839663864333265653861663964316332623161316132323334323639313031363034303531383039313033393061343961393935303530353035303530353035303530353035303536356236313331386136313365343935363562363133313933383236313365393435363562363131346631383136313366303835363562356638303566363133316137363132303238353635623566383638313532363030373832303136303230353236303430393032303630303230313534393039313530363030313630383031623930303436303031363030313630343031623033313636313331643738353832363133663634353635623566363133316531383736313431383935363562356638383831353236303037383530313630323035323630343038303832323036303032303138303534363766666666666666666666666666666666363038303162313931363630303136303830316236303031363030313630343031623033386338313136393138323032393239303932313739303932353539313531363334326132653062353630653131623831353236303034383130313863393035323931383431363630323438333031353236303434383230313532393139323530393036303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f39303633383534356331366139303630363430313566363034303531383038333033383138363561663431353830313536313332386135373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363133326231393139303831303139303631346561323536356236303430353138323633666666666666666631363630653031623831353236303034303136313332636439313930363134656433353635623630323036303430353138303833303338313566383735616631313538303135363133326539353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631333330643931393036313465653535363562363034303830353136303031363030313630343031623033386138313136383235323630323038323031383439303532383235313933393435303835313639323862393237663037646535666633356136373461383030356536363166333333336339303763613633333334363238303837363264313964633762336162623161386331646639323832393030333031393061333930393435303932353035303530356239323530393239303530353635623566383036313333373036313234336135363562393035303566363133333830383436303430303135313631316138323536356239303530356636303033383235313630303538313131313536313333393835373631333339383631346261663536356231343830363133336236353735303630303438323531363030353831313131353631333362343537363133336234363134626166353635623134356231353631333363363537353036306330383130313531363133343033353635623630303238323531363030353831313131353631333364623537363133336462363134626166353635623033363133336537353735303432363133343033353635623831353136303430353136333137306363393333363065323162383135323631303463633931393036303034303136313464393935363562383436303830303135313630303136303031363034303162303331363831363030313630303136303430316230333136313136313334326135373530356639343933353035303530353035363562363030343833303135343630363038363031353136303031363030313630613031623033393039313136393036333466323234323966393036313334346639303631313161643536356236306130383530313531363038303839303135313630343038303862303135313566393038313532363030353861303136303230353238313930323036303031303135343930353136303031363030313630653031623033313936306530383739303162313638313532363133346131393439333932393138383931363030313630303136303430316230333930393131363930363030343031363135356134353635623630323036303430353138303833303338313836356166613135383031353631333462633537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313334653039313930363134656535353635623935393435303530353035303530353635623631333466313631343935383536356235663631333466613631323032383536356235663834383135323630303738323031363032303532363034303830383232303831353136306530383130313930393235323830353439333934353039313932393039313930383239303630666631363630303538313131313536313335333335373631333533333631346261663536356236303035383131313135363133353434353736313335343436313462616635363562383135323630323030313630303138323031383035343631333535383930363134643631353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313335383439303631346436313536356238303135363133356366353738303630316631303631333561363537363130313030383038333534303430323833353239313630323030313931363133356366353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631333562323537383239303033363031663136383230313931356235303530353039313833353235303530363030323832383130313534363030313630303136303430316230333830383231363630323038353031353236303031363034303162383230343831313636303430383530313532363030313630383031623832303438313136363036303835303135323630303136306330316239303931303438313136363038303834303135323630303339303933303135343930393231363630613039303931303135323930393135303831353136303035383131313135363133363364353736313336336436313462616635363562313436313336373035373566383438313532363030373833303136303230353236303430393038313930323035343930353136333137306363393333363065323162383135323631303463633931363066663136393036303034303136313464393935363562363030333831353234323630303136303031363034303162303331363630633038323031353235663834383135323630303738333031363032303532363034303930323038313531383135343833393239313930383239303630666631393136363030313833363030353831313131353631333662343537363133366234363134626166353635623032313739303535353036303230383230313531363030313832303139303631333663643930383236313530616235363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353566363133373661383538323631333139633536356236303830383430313531363034303830353136303031363030313630343031623033393039323136383235323432363032303833303135323931393335303833393235303837393137663133643538333934636632363964343862636639323739353961323961356666656537633939323464616666663839323765636466336334386666613763363739313031363034303531383039313033393061333530393339323530353035303536356237663665356264666363653135653533633334303665613637626663653337646364323666353135326435343932383234653433666435653363386163356162303039303536356236303430353136303031363030313630613031623033383338313136363032343833303135323630343438323031383339303532363130346435393138353931383231363930363361393035396362623930363036343031356236303430353136303230383138333033303338313532393036303430353239313530363065303162363032303832303138303531363030313630303136306530316230333833383138333136313738333532353035303530353036313431663235363562356636313064666438323631333835313631333763313536356235343630303136303031363061303162303331363930363134323461353635623566363133383661363132303238353635623630303930313534363066663136363133383865353736303430353136333766616238316535363065303162383135323630303430313630343035313830393130333930666435623566363133383937363132303238353635623930353034323631333861613630363038363031363034303837303136313462363035363562363030313630303136303430316230333136313131353830363133386534353735303631333863383632303261333030343236313531376135363562363133386438363036303836303136303430383730313631346236303536356236303031363030313630343031623033313631303135356231353631333931653537363133386639363036303835303136303430383630313631346236303536356236303430353136333538373964613133363065313162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130346363353635623631333933333631333932653630363038363031383636313536313035363562363134336162353635623631333934333631333932653630383038363031383636313536313035363562363033303631333935323630323038363031383636313536323435363562393035303134363133393834353736313339363636303230383530313835363135363234353635623630343035313633323634373562326636306531316238313532363130346363393235303630303430313930383135323630323030313930353635623631333938653834383036313536323435363562393035303566303336313339626235373631333961303834383036313536323435363562363034303531363333653038613132353630653131623831353236303034303136313034636339323931393036313536363635363562356636303038383230313631333963613836383036313536323435363562363034303531363133396438393239313930363135346132353635623930383135323630323030313630343035313830393130333930323035343134363133613131353736313339663638343830363135363234353635623630343035313633613431663737326636306530316238313532363030343031363130346363393239313930363135363636353635623631336131623833356636313366363435363562363034303830353136306530383130313930393135323831353438313532356639303831393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363365303437623238333930363032303831303136313361353838613830363135363234353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323039303831303139303631336161303930386230313862363135363234353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323030313631336165393630363038623031363034303863303136313462363035363562363030313630303136303430316230333136383135323630323030313631336230343630363038623031386236313536313035363562363133623064393036313536373935363562383135323630323030313631336231663630383038623031386236313536313035363562363133623238393036313536373935363562383135323630323030313838363030313630303136303430316230333136383135323530363034303531383236336666666666666666313636306530316238313532363030343031363133623536393139303631353739623536356235663630343035313830383330333831383635616634313538303135363133623730353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631336239373931393038313031393036313538353235363562356638323831353236303036383630313630323035323630343039303230393139333530393135303631336262353832383236313530616235363562353038313630303838343031363133626335383838303631353632343536356236303430353136313362643339323931393036313534613235363562393038313532363034303531393038313930303336303230303138313230393139303931353536336565356234386562363065303162383135323566393036303035363030313630393931623031393036336565356234386562393036313363306639303835393036303034303136313465643335363562363032303630343035313830383330333831356638373561663131353830313536313363326235373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363133633466393139303631346565353536356236303430383035313630653038313031393039313532393039313530383036303031383135323630323030313631336336663839383036313536323435363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303138323930353235303933383535323530353035303630303136303031363034303162303338393136363032303830383430313832393035323630343038303835303138343930353236303630383530313932393039323532363038303834303138333930353236306130393039333031383239303532383638323532363030373838303139303932353232303831353138313534383239303630666631393136363030313833363030353831313131353631336366653537363133636665363134626166353635623032313739303535353036303230383230313531363030313832303139303631336431373930383236313530616235363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353830363133646234383838303631353632343536356236303430353136313364633239323931393036313534613235363562363034303531383039313033393032303834376662373732393765336265666336393162666338363461383165323431663833653265663732326236653762656361613265636563323530633664353262343330383938623630343030313630323038313031393036313365303039313930363134623630353635623630343038303531363030313630303136303430316230333933383431363831353239323930393131363630323038333031353230313630343035313830393130333930613435303930393539343530353035303530353035363562356636313365333736313230323835363562363030313031353436303031363030313630343031623033313639313930353035363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030353436303031363034303162393030343630666631363631336539323537363034303531363331616663643739663630653331623831353236303034303136303430353138303931303339306664356235363562363133653963363133653439353635623631336561353831363134353134353635623631336561643631343532643536356236313065626236303630383230313335363038303833303133353631336563613630633038353031363061303836303136313462363035363562363133656461363065303836303136306330383730313631353839353536356236313365656236313031303038373031363065303838303136313538616535363562363130313030383730313335363133663033363130313430383930313631303132303861303136313465666335363562363134353364353635623631336631303631336534393536356235663631336631393631333763313536356239303530363030313630303136306130316230333832313636313366343435373831363034303531363337333330363830333630653031623831353236303034303136313034636339313930363134623962353635623830353436303031363030313630613031623033313931363630303136303031363061303162303339323930393231363931393039313137393035353536356235663631336636643631323032383536356239303530356638323630303136303031363034303162303331363834363030313630303136303430316230333136313131353631336639623537363133663934383338353631353464313536356239303530363133666138353635623631336661353834383436313534643135363562393035303562363034303830353136303830383130313832353236303032383430313534383038323532363030333835303135343630323038333031353236303034383530313534393238323031393239303932353236303035383430313534363030313630303136303430316230333136363036303832303135323432393131353830363134303061353735303630303138343031353438313531363134303036393136303031363030313630343031623033313639303631353137613536356238323130313535623135363134303330353736303031363030313630343031623033383331363630363038323031353238313831353236303430383130313531363032303832303135323631343034663536356238323831363036303031383138313531363134303432393139303631353462313536356236303031363030313630343031623033313639303532353035623630363038313031353136313430356639303630363436313535653535363562363032303832303135313630303138363031353436303031363030313630343031623033393239303932313639313631343038613931393036303031363034303162393030343630666631363631353161663536356231303135363134306261353736303630383130313531363034303531363364666165383830313630653031623831353236303031363030313630343031623033393039313136363030343832303135323630323430313631303463633536356238353630303136303031363034303162303331363831363034303031383138313531363134306435393139303631353137613536356239303532353036303430383130313830353136303031363030313630343031623033383731363931393036313430663539303833393036313535643235363562393035323530363030313834303135343630343038323031353136303634393136313431316139313630303136303430316239303931303436306666313639303631353161663536356231303135363134313431353738303630343030313531363034303531363335393433333137663630653031623831353236303034303136313034636339313831353236303230303139303536356238303531363030323835303135353630323038313031353136303033383530313535363034303831303135313630303438353031353536303630303135313630303539303933303138303534363030313630303136303430316230333139313636303031363030313630343031623033393039343136393339303933313739303932353535303530353035303536356235663830363134313933363132303238353635623566383438313532363030373832303136303230353236303430393032303630303230313830353439313932353039303630303839303631343163373930363030313630343031623930303436303031363030313630343031623033313636313538636535363562393139303631303130303061383135343831363030313630303136303430316230333032313931363930383336303031363030313630343031623033313630323137393035353931353035303931393035303536356235663631343230363630303136303031363061303162303338343136383336313436643335363562393035303830353135663134313538303135363134323261353735303830383036303230303139303531383130313930363134323238393139303631353865393536356231353562313536313034643535373832363034303531363335323734616665373630653031623831353236303034303136313034636339313930363134623962353635623566383038333630303136303031363061303162303331363633373061303832333133303630343035313832363366666666666666663136363065303162383135323630303430313631343237383931393036313462396235363562363032303630343035313830383330333831383635616661313538303135363134323933353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631343262373931393036313465653535363562393035303631343263653630303136303031363061303162303338353136333333303836363134366530353635623630343035313633373061303832333136306530316238313532356639303630303136303031363061303162303338363136393036333730613038323331393036313432666339303330393036303034303136313462396235363562363032303630343035313830383330333831383635616661313538303135363134333137353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631343333623931393036313465653535363562393035303831383131313631343361313537363034303531363234363162636436306535316238313532363032303630303438323031353236303263363032343832303135323766353336313636363534353532343333323330353437323631366537333636363537323436373236663664336132303632363136633631366536333635323036653630343438323031353236623162646430383161356239386463393935383563643935393630613231623630363438323031353236303834303136313034636335363562363133346530383238323631353564323536356236313433623836303230383230313832363134613933353635623633666666666666666631363135383031353631343364383537353036313433643336303230383230313832363134663137353635623135313539303530356231353631343431663537363134336561363032303832303138323631346139333536356236313433663736303230383330313833363134663137353635623630343035313633633038613066316436306530316238313532363366666666666666663930393331363630303438343031353236303234383330313532353036303434303136313034636335363562363134343263363032303832303138323631346631373536356239303530363134343362363032303833303138333631346139333536356236336666666666666666313631313135363134343534353736313433656136303230383230313832363134613933353635623630303135623631343436343630323038333031383336313466313735363562393035303831313031353631313466313537363134343761363032303833303138333631346631373536356236313434383536303031383436313535643235363562383138313130363134343934353736313434393436313466356335363562393035303630323030323031363032303831303139303631343461393931393036313465666335363562363030313630303136306130316230333136363134346266363032303834303138343631346631373536356238333831383131303631343463663537363134346366363134663563353635623930353036303230303230313630323038313031393036313434653439313930363134656663353635623630303136303031363061303162303331363130313536313435306335373630343035313633306462633864356636306533316238313532363030343031363034303531383039313033393066643562363030313031363134343537353635623631343531633631336534393536356236313435323436313437313935363562363130656262383136313437323135363562363134353335363133653439353635623631336539323631343830343536356236313435343536313365343935363562356636313435346536313234336135363562393035303631666666663835313631353830363134353636353735303631323731303631666666663836313631313562313536313435386135373630343035313633356631326536633336306531316238313532363166666666383631363630303438323031353236303234303136313034636335363562383638383131313536313435616535373630343035313633323232643136343336306532316238313532363030343831303138393930353236303234303136313034636335363562363066663834313631353830363134356331353735303630306136306666383531363131356231353631343565343537363034303531363331373064623335393630653331623831353236306666383531363630303438323031353236303234303136313034636335363562363134356563363133653265353635623630303136303031363034303162303331363836363030313630303136303430316230333136313031353631343632383537363034303531363230326130366436306531316238313532363030313630303136303430316230333837313636303034383230313532363032343031363130346363353635623832356630333631343634383537363034303531363361373333303037313630653031623831353236303034303136303430353138303931303339306664356239363837353536303031383730313935393039353535363030323836303138303534363030313630303136303430316230333935393039353136363966666666666666666666666666666666666666663139393039353136393439303934313736303031363034303162363166666666393439303934313639333930393330323932393039323137363766666666666666666666666666666666363035303162313931363630666639313930393131363630303136303530316230323137393039313535363030333833303135353630303439303931303138303534363030313630303136306130316230333139313636303031363030313630613031623033393039323136393139303931313739303535353635623630363036313230323138333833356636313438306335363562363034303531363030313630303136306130316230333834383131363630323438333031353238333831313636303434383330313532363036343832303138333930353236313037353039313836393138323136393036333233623837326464393036303834303136313338313235363562363133653932363133653439353635623631343732393631336534393536356235663631343733323631323032383536356238323335383135353930353036303134363134373461363036303834303136303430383530313631353861653536356236306666313631313830363134373639353735303631343736343630363038333031363034303834303136313538616535363562363066663136313535623135363134373964353736313437376536303630383330313630343038343031363135386165353635623630343035313633346135396262666636306531316238313532363066663930393131363630303438323031353236303234303136313034636335363562363134376164363036303833303136303430383430313631353861653536356236303031383230313830353436306666393239303932313636303031363034303162303236306666363034303162313939303932313639313930393131373930353536313437646536303430383330313630323038343031363134623630353635623630303139313930393130313830353436303031363030313630343031623033313931363630303136303031363034303162303339303932313639313930393131373930353535303536356236313261623036313365343935363562363036303831343731303135363134383331353733303630343035313633636437383630353936306530316238313532363030343031363130346363393139303631346239623536356235663830383536303031363030313630613031623033313638343836363034303531363134383463393139303631353035363536356235663630343035313830383330333831383538373561663139323530353035303364383035663831313436313438383635373630343035313931353036303166313936303366336430313136383230313630343035323364383235323364356636303230383430313365363134383862353635623630363039313530356235303931353039313530363134383962383638333833363134386135353635623936393535303530353035303530353035363562363036303832363134386261353736313438623538323631343866383536356236313230323135363562383135313135383031353631343864313537353036303031363030313630613031623033383431363362313535623135363134386631353738333630343035313633393939366233313536306530316238313532363030343031363130346363393139303631346239623536356235303830363132303231353635623830353131353631343930383537383035313830383236303230303166643562363034303531363330613132663532313630653131623831353236303034303136303430353138303931303339306664356235303830353436313439326439303631346436313536356235663832353538303630316631303631343933633537353035303536356236303166303136303230393030343930356635323630323035663230393038313031393036313065626239313930363134393935353635623630343038303531363065303831303139303931353238303566383135323630363036303230383230313831393035323566363034303833303138313930353239303832303138313930353236303830383230313831393035323630613038323031383139303532363063303930393130313532393035363562356238303832313131353631343961393537356638313535363030313031363134393936353635623530393035363562383031353135383131343631306562623537356638306664356238303335363366666666666666663831313638313134363134396364353735663830666435623931393035303536356235663830356636303630383438363033313231353631343965343537356638306664356238333335393235303630323038343031333536313439663638313631343961643536356239313530363134613034363034303835303136313439626135363562393035303932353039323530393235363562356636303230383238343033313231353631346131643537356638306664356235303335393139303530353635623566383036303430383338353033313231353631346133353537356638306664356238323335363030313630303136303430316230333831313131353631346134613537356638306664356238333031363038303831383630333132313536313461356235373566383066643562393135303631346136393630323038343031363134396261353635623930353039323530393239303530353635623566383036303430383338353033313231353631346138333537356638306664356238323335393135303631346136393630323038343031363134396261353635623566363032303832383430333132313536313461613335373566383066643562363132303231383236313439626135363562383033353631666666663831313638313134363134396364353735663830666435623630303136303031363034303162303338313136383131343631306562623537356638306664356235663830356638303630383038353837303331323135363134616534353735663830666435623834333536303031363030313630343031623033383131313135363134616639353735663830666435623835303136306130383138383033313231353631346230613537356638306664356239333530363134623138363032303836303136313461616335363562393235303630343038353031333536313462323838313631346162643536356239333936393239353530393239333630363030313335393235303530353635623566383036303430383338353033313231353631346234393537356638306664356236313462353238333631343962613536356239343630323039333930393330313335393335303530353035363562356636303230383238343033313231353631346237303537356638306664356238313335363132303231383136313461626435363562356638303630343038333835303331323135363134623863353735663830666435623530353038303335393236303230393039313031333539313530353635623630303136303031363061303162303339313930393131363831353236303230303139303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363030363831313036313462643335373631346264333631346261663536356239303532353635623566356238333831313031353631346266313537383138313031353138333832303135323630323030313631346264393536356235303530356639313031353235363562356638313531383038343532363134633130383136303230383630313630323038363031363134626437353635623630316630313630316631393136393239303932303136303230303139323931353035303536356236303230383135323631346333363630323038323031383335313631346263333536356235663630323038333031353136306530363034303834303135323631346335313631303130303834303138323631346266393536356239303530363034303834303135313630303136303031363034303162303338303832313636303630383630313532383036303630383730313531313636303830383630313532383036303830383730313531313636306130383630313532383036306130383730313531313636306330383630313532383036306330383730313531313636306530383630313532353035303830393135303530393239313530353035363562363030313630303136306130316230333831313638313134363130656262353735663830666435623566383038323834303336313031363038313132313536313463636235373566383066643562363130313430383038323132313536313463646135373566383066643562383439333530383330313335393035303631346365623831363134636134353635623830393135303530393235303932393035303536356235663830363032303833383530333132313536313464303735373566383066643562383233353630303136303031363034303162303338303832313131353631346431643537356638306664356238313835303139313530383536303166383330313132363134643330353735663830666435623831333538313831313131353631346433653537356638306664356238363630323038323835303130313131313536313464346635373566383066643562363032303932393039323031393639313935353039303933353035303530353035363562363030313831383131633930383231363830363134643735353736303766383231363931353035623630323038323130383130333631346439333537363334653438376237313630653031623566353236303232363030343532363032343566666435623530393139303530353635623630323038313031363130646664383238343631346263333536356236333465343837623731363065303162356635323630343136303034353236303234356666643562363034303531363036303831303136303031363030313630343031623033383131313832383231303137313536313464646435373631346464643631346461373536356236303430353239303536356236303430383035313930383130313630303136303031363034303162303338313131383238323130313731353631346464643537363134646464363134646137353635623630343035313630316638323031363031663139313638313031363030313630303136303430316230333831313138323832313031373135363134653264353736313465326436313464613735363562363034303532393139303530353635623566363030313630303136303430316230333832313131353631346534643537363134653464363134646137353635623530363031663031363031663139313636303230303139303536356235663832363031663833303131323631346536613537356638306664356238313531363134653764363134653738383236313465333535363562363134653035353635623831383135323834363032303833383630313031313131353631346539313537356638306664356236313065646438323630323038333031363032303837303136313462643735363562356636303230383238343033313231353631346562323537356638306664356238313531363030313630303136303430316230333831313131353631346563373537356638306664356236313065646438343832383530313631346535623536356236303230383135323566363132303231363032303833303138343631346266393536356235663630323038323834303331323135363134656635353735663830666435623530353139313930353035363562356636303230383238343033313231353631346630633537356638306664356238313335363132303231383136313463613435363562356638303833333536303165313938343336303330313831313236313466326335373566383066643562383330313830333539313530363030313630303136303430316230333832313131353631346634353537356638306664356236303230303139313530363030353831393031623336303338323133313536313333356635373566383066643562363334653438376237313630653031623566353236303332363030343532363032343566666435623566383233353630356531393833333630333031383131323631346638343537356638306664356239313930393130313932393135303530353635623566383236303166383330313132363134663964353735663830666435623831333536313466616236313465373838323631346533353536356238313831353238343630323038333836303130313131313536313466626635373566383066643562383136303230383530313630323038333031333735663931383130313630323030313931393039313532393339323530353035303536356235663630363038323336303331323135363134666562353735663830666435623631346666333631346462623536356238323335363030313630303136303430316230333830383231313135363135303039353735663830666435623631353031353336383338373031363134663865353635623833353236303230383530313335393135303830383231313135363135303261353735663830666435623530363135303337333638323836303136313466386535363562363032303833303135323530363034303833303133353631353034623831363134616264353635623630343038323031353239323931353035303536356235663832353136313466383438313834363032303837303136313462643735363562363031663832313131353631303464353537383035663532363032303566323036303166383430313630303531633831303136303230383531303135363135303863353735303830356236303166383430313630303531633832303139313530356238313831313031353631313935653537356638313535363030313031363135303938353635623831353136303031363030313630343031623033383131313135363135306334353736313530633436313464613735363562363135306438383136313530643238343534363134643631353635623834363135303637353635623630323038303630316638333131363030313831313436313531306235373566383431353631353066343537353038353833303135313562356631393630303338363930316231633139313636303031383539303162313738353535363131303039353635623566383538313532363032303831323036303166313938363136393135623832383131303135363135313339353738383836303135313832353539343834303139343630303139303931303139303834303136313531316135363562353038353832313031353631353135363537383738353031353135663139363030333838393031623630663831363163313931363831353535623530353035303530353036303031393038313162303139303535353035363562363334653438376237313630653031623566353236303131363030343532363032343566666435623830383230313830383231313135363130646664353736313064666436313531363635363562356636336666666666666666383038333136383138313033363135316135353736313531613536313531363635363562363030313031393339323530353035303536356238303832303238313135383238323034383431343137363130646664353736313064666436313531363635363562356638303833333536303165313938343336303330313831313236313531646235373566383066643562383330313630323038313031393235303335393035303630303136303031363034303162303338313131313536313531663935373566383066643562383033363033383231333135363133333566353735663830666435623831383335323831383136303230383530313337353035663832383230313630323039303831303139313930393135323630316639303931303136303166313931363930393130313031393035363562356638333833383535323630323038303836303139353530383038353630303531623833303130313834356635623837383131303135363135326534353738343833303336303166313930313839353238313335333638383930303336303565313930313831313236313532366235373566383066643562383730313630363036313532373938323830363135316336353635623832383735323631353238393833383830313832383436313532303735363562393235303530353036313532393938363833303138333631353163363536356238363833303338383838303135323631353261623833383238343631353230373536356239323530353035303630343038303833303133353932353036313532633038333631346162643536356236303031363030313630343031623033393239303932313639343930393130313933393039333532393738333031393739303833303139303630303130313631353234363536356235303930393739363530353035303530353035303530353635623630323038313532383133353630323038323031353236303230383230313335363034303832303135323566363034303833303133353631353331353831363134636134353635623630303136303031363061303162303331363630363038333831303139313930393135323833303133353336383439303033363031653139303138313132363135333363353735663830666435623833303136303230383130313930333536303031363030313630343031623033383131313135363135333537353735663830666435623830363030353162333630333832313331353631353336383537356638306664356236303830383038353031353236313334653036306130383530313832383436313532326635363562356638323631353339363537363334653438376237313630653031623566353236303132363030343532363032343566666435623530303439303536356236303230383130313630303438333130363135336166353736313533616636313462616635363562393139303532393035363562356638303566363036303834383630333132313536313533633735373566383066643562383335313932353036303230383430313531363135336439383136313461626435363562363034303835303135313930393235303631353365613831363134616264353635623830393135303530393235303932353039323536356235663830363034303833383530333132313536313534303635373566383066643562383235313931353036303230383330313531363134636562383136313439616435363562356636303230383038333532356638343534363135343261383136313464363135363562383036303230383730313532363034303630303138303834313635663831313436313534346235373630303138313134363135343637353736313534393435363562363066663139383531363630343038613031353236303430383431353135363030353162386130313031393535303631353439343536356238393566353236303230356632303566356238353831313031353631353438623537383135343862383230313836303135323930383330313930383830313631353437303536356238613031363034303031393635303530356235303933393839373530353035303530353035303530353035363562383138333832333735663931303139303831353239313930353035363562363030313630303136303430316230333831383131363833383231363031393038303832313131353631323135303537363132313530363135313636353635623630303136303031363034303162303338323831313638323832313630333930383038323131313536313231353035373631323135303631353136363536356235663830363034303833383530333132313536313535303235373566383066643562383235313630303136303031363034303162303338303832313131353631353531383537356638306664356239303834303139303630363038323837303331323135363135353262353735663830666435623631353533333631346462623536356238323531383135323630323038333031353136313535343538313631346361343536356236303230383230313532363034303833303135313832383131313135363135353562353735663830666435623631353536373838383238363031363134653562353635623630343038333031353235303830393435303530353035303630323038333031353136313463656238313631343961643536356235663830363034303833383530333132313536313535393235373566383066643562383235313931353036303230383330313531363134636562383136313461626435363562393438353532363030313630303136303430316230333933383431363630323038363031353239313833313636303430383530313532383231363630363038343031353231363630383038323031353236306130303139303536356238313831303338313831313131353631306466643537363130646664363135313636353635623630303136303031363034303162303338313831313638333832313630323830383231363931393038323831313436313536303835373631353630383631353136363536356235303530393239313530353035363562356638323335363033653139383333363033303138313132363134663834353735663830666435623566383038333335363031653139383433363033303138313132363135363339353735663830666435623833303138303335393135303630303136303031363034303162303338323131313536313536353235373566383066643562363032303031393135303336383139303033383231333135363133333566353735663830666435623630323038313532356636313065646436303230383330313834383636313532303735363562356636303430383233363033313231353631353638393537356638306664356236313536393136313464653335363562363135363961383336313439626135363562383135323630323038303834303133353630303136303031363034303162303338303832313131353631353662363537356638306664356239303835303139303336363031663833303131323631353663383537356638306664356238313335383138313131313536313536646135373631353664613631346461373536356238303630303531623931353036313536656238343833303136313465303535363562383138313532393138333031383430313931383438313031393033363834313131353631353730343537356638306664356239333835303139333562383338353130313536313537326535373834333539323530363135373165383336313463613435363562383238323532393338353031393339303835303139303631353730393536356239343836303139343930393435323530393239353934353035303530353035303536356235663630343038333031363366666666666666663833353131363834353236303230383038343031353136303430363032303837303135323832383135313830383535323630363038383031393135303630323038333031393435303566393235303562383038333130313536313234326635373834353136303031363030313630613031623033313638323532393338333031393336303031393239303932303139313930383330313930363135373732353635623630323038313532383135313630323038323031353235663630323038333031353136306530363034303834303135323631353763313631303130303834303138323631346266393536356239303530363034303834303135313630316631393830383538343033303136303630383630313532363135376466383338333631346266393536356239323530363030313630303136303430316230333630363038373031353131363630383038363031353236303830383630313531393135303830383538343033303136306130383630313532363135383066383338333631353734303536356239323530363061303836303135313931353038303835383430333031363063303836303135323530363135383264383238323631353734303536356239313530353036306330383430313531363135383461363065303835303138323630303136303031363034303162303331363930353235363562353039333932353035303530353635623566383036303430383338353033313231353631353836333537356638306664356238323531393135303630323038333031353136303031363030313630343031623033383131313135363135383766353735663830666435623631353838623835383238363031363134653562353635623931353035303932353039323930353035363562356636303230383238343033313231353631353861353537356638306664356236313230323138323631346161633536356235663630323038323834303331323135363135386265353735663830666435623831333536306666383131363831313436313230323135373566383066643562356636303031363030313630343031623033383038333136383138313033363135316135353736313531613536313531363635363562356636303230383238343033313231353631353866393537356638306664356238313531363132303231383136313439616435366665613136343733366636633633343330303038313930303061", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index eb53a49c9..dc35ef10a 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -91,8 +91,8 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615c4c380380615c4c83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615aff8061014d5f395ff3fe6080604052600436106101b5575f3560e01c80638280a25a116100ea578063ba3a4b971161008e578063ba3a4b97146104dc578063bc5fbfec146104fb578063bee0a03f1461052e578063c257a0f51461054d578063c599e24f1461056c578063c974d1b61461057f578063d5f20ff614610593578063df93d8de146105bf578063fd7ac5e7146105d5575f80fd5b80638280a25a1461040b57806393e245981461041f57806398f3e2b41461043e578063a3a65e481461045d578063a9778a7a146102df578063af2f5feb1461047c578063afb980961461048f578063b771b3bc146104c2575f80fd5b806335455ded1161015c57806335455ded146102df5780633a1cfff614610307578063467ef06f146103265780635297fae61461034557806360305d6214610364578063620658561461038d57806366435abf146103ba578063732214f8146103d957806376f78621146103ec575f80fd5b80630118acc4146101b95780630322ed98146101da578063151d30d1146101f95780631ec447241461022457806320d91b7a1461024357806325e1c776146102625780632e2194d814610281578063329c3e12146102b8575b5f80fd5b3480156101c4575f80fd5b506101d86101d3366004614e19565b6105f4565b005b3480156101e5575f80fd5b506101d86101f4366004614e54565b610629565b348015610204575f80fd5b5061020d600a81565b60405160ff90911681526020015b60405180910390f35b34801561022f575f80fd5b506101d861023e366004614e19565b61082c565b34801561024e575f80fd5b506101d861025d366004614e6b565b610837565b34801561026d575f80fd5b506101d861027c366004614eb9565b610d35565b34801561028c575f80fd5b506102a061029b366004614e54565b610da9565b6040516001600160401b03909116815260200161021b565b3480156102c3575f80fd5b506102d26001600160991b0181565b60405161021b9190614eda565b3480156102ea575f80fd5b506102f461271081565b60405161ffff909116815260200161021b565b348015610312575f80fd5b506101d8610321366004614e19565b610dfd565b348015610331575f80fd5b506101d8610340366004614eee565b610e08565b348015610350575f80fd5b506101d861035f366004614f07565b610eb8565b34801561036f575f80fd5b50610378601481565b60405163ffffffff909116815260200161021b565b348015610398575f80fd5b506103ac6103a7366004614f45565b611113565b60405190815260200161021b565b3480156103c5575f80fd5b506102a06103d4366004614e54565b611133565b3480156103e4575f80fd5b506103ac5f81565b3480156103f7575f80fd5b506101d8610406366004614e19565b611147565b348015610416575f80fd5b5061020d603081565b34801561042a575f80fd5b506101d8610439366004614e54565b611172565b348015610449575f80fd5b506101d8610458366004614f07565b61122f565b348015610468575f80fd5b506101d8610477366004614eee565b6113ee565b6103ac61048a366004614f6f565b611574565b34801561049a575f80fd5b506103ac7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104cd575f80fd5b506102d26005600160991b0181565b3480156104e7575f80fd5b506101d86104f6366004614e54565b61159a565b348015610506575f80fd5b506103ac7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b348015610539575f80fd5b506101d8610548366004614e54565b611778565b348015610558575f80fd5b506101d8610567366004614fc3565b611895565b6103ac61057a366004614e54565b611972565b34801561058a575f80fd5b5061020d601481565b34801561059e575f80fd5b506105b26105ad366004614e54565b611995565b60405161021b919061504f565b3480156105ca575f80fd5b506102a06202a30081565b3480156105e0575f80fd5b506103ac6105ef3660046150cf565b611ad7565b6105ff838383611b0f565b61062457604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f610632611e55565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561066b5761066b614fda565b600581111561067c5761067c614fda565b81526020016001820180546106909061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc9061513a565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561077257610772614fda565b146107a5575f8381526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b6005600160991b016001600160a01b031663ee5b48eb6107ca8584606001515f611e79565b6040518263ffffffff1660e01b81526004016107e6919061517a565b6020604051808303815f875af1158015610802573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610826919061518c565b50505050565b610826838383611b0f565b5f610840611e55565b600981015490915060ff161561086957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d0919061518c565b8360200135146108f9576040516372b0a7e760e11b81526020840135600482015260240161061b565b3061090a60608501604086016151b7565b6001600160a01b0316146109425761092860608401604085016151b7565b604051632f88120d60e21b815260040161061b9190614eda565b5f61095060608501856151d2565b905090505f805b828163ffffffff161015610c37575f61097360608801886151d2565b8363ffffffff1681811061098957610989615217565b905060200281019061099b919061522b565b6109a49061534f565b80516040519192505f9160088801916109bc916153c8565b908152602001604051809103902054146109ec57805160405163a41f772f60e01b815261061b919060040161517a565b5f6002885f013584604051602001610a1b92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a35916153c8565b602060405180830381855afa158015610a50573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a73919061518c565b90508086600801835f0151604051610a8b91906153c8565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610b0d57610b0d614fda565b021790555060208201516001820190610b26908261541d565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610bca9116856154ec565b8251604051919550610bdb916153c8565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610c30906154ff565b9050610957565b50600483018190556001830154606490610c5b90600160401b900460ff1683615521565b1015610c7d57604051635943317f60e01b81526004810182905260240161061b565b5f610c93610c8a86611ec8565b60400151611fd3565b90505f610c9f87612160565b90505f600282604051610cb291906153c8565b602060405180830381855afa158015610ccd573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cf0919061518c565b9050828114610d1c57604051631872fc8d60e01b8152600481018290526024810184905260440161061b565b5050506009909201805460ff1916600117905550505050565b610d3e82612335565b610d5e576040516330efa98b60e01b81526004810183905260240161061b565b5f610d6883611995565b5190506002816005811115610d7f57610d7f614fda565b14610d9f578060405163170cc93360e21b815260040161061b919061516c565b610826838361235e565b5f80610db36125ac565b60030154610dc19084615538565b9050801580610dd657506001600160401b0381115b15610df75760405163222d164360e21b81526004810184905260240161061b565b92915050565b6108268383836125d0565b610e1061279b565b5f610e196125ac565b90505f80610e26846127e5565b91509150610e3382612335565b610e3f57505050610ead565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610e6d57610e6d614fda565b03610e92575f83815260088501602052604081208054919055610e908282612b1f565b505b610ea881610ea38460400151611113565b612b7d565b505050505b610eb5612b90565b50565b5f610ec16125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610efa57610efa614fda565b6003811115610f0b57610f0b614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610f8182611995565b9050600183516003811115610f9857610f98614fda565b14610fb9578251604051633b0d540d60e21b815261061b9190600401615557565b600481516005811115610fce57610fce614fda565b03610fe457610fdc85612bb6565b505050505050565b5f80610ffb610ff289611ec8565b60400151612dd6565b509150915081841461102857846040015160405163089938b360e11b815260040161061b91815260200190565b806001600160401b031683606001516001600160401b031610806110615750806001600160401b03168560a001516001600160401b0316115b1561108a57604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61111c6125ac565b60030154610df7906001600160401b038416615521565b5f61113d82611995565b6080015192915050565b6111528383836125d0565b61062457604051635bff683f60e11b81526004810184905260240161061b565b5f61117b6125ac565b90505f61118783611995565b519050600481600581111561119e5761119e614fda565b146111be578060405163170cc93360e21b815260040161061b919061516c565b5f8381526005830160205260409020546001600160a01b031633146111f957335b604051636e2ccd7560e11b815260040161061b9190614eda565b5f83815260088301602090815260408083208054908490556005860190925290912054610826906001600160a01b031682612b1f565b61123761279b565b5f6112406125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561127957611279614fda565b600381111561128a5761128a614fda565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561130357611303614fda565b14611324578051604051633b0d540d60e21b815261061b9190600401615557565b60046113338260400151611995565b51600581111561134557611345614fda565b146113d7575f61135485611ec8565b90505f806113658360400151612dd6565b5091509150818460400151146113915760405163089938b360e11b81526004810183905260240161061b565b806001600160401b03168460c001516001600160401b031611156113d357604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5050505b6113e083612bb6565b50506113ea612b90565b5050565b5f6113f7611e55565b90505f8061141061140785611ec8565b6040015161302c565b915091508061143657604051632d07135360e01b8152811515600482015260240161061b565b5f828152600684016020526040902080546114509061513a565b90505f036114745760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078501602052604090205460ff16600581111561149a5761149a614fda565b146114cd575f8281526007840160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068401602052604081206114e591614d6d565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f61157d61279b565b611589848484346131e8565b9050611593612b90565b9392505050565b5f6115a36125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156115dc576115dc614fda565b60038111156115ed576115ed614fda565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561166657611666614fda565b14158015611687575060038151600381111561168457611684614fda565b14155b156116a8578051604051633b0d540d60e21b815261061b9190600401615557565b5f6116b68260400151611995565b905080606001516001600160401b03165f036116e8576040516339b894f960e21b81526004810185905260240161061b565b6005600160991b016001600160a01b031663ee5b48eb611715846040015184606001518560800151611e79565b6040518263ffffffff1660e01b8152600401611731919061517a565b6020604051808303815f875af115801561174d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611771919061518c565b5050505050565b5f611781611e55565b5f838152600682016020526040902080549192509061179f9061513a565b90505f036117c35760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078301602052604090205460ff1660058111156117e9576117e9614fda565b1461181c575f8281526007820160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916118559190600401615571565b6020604051808303815f875af1158015611871573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610624919061518c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118de575080546001600160401b03808416911610155b156118fc5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561192683613394565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f61197b61279b565b6119868233346133a5565b9050611990612b90565b919050565b61199d614da4565b5f6119a6611e55565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156119dd576119dd614fda565b60058111156119ee576119ee614fda565b8152602001600182018054611a029061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2e9061513a565b8015611a795780601f10611a5057610100808354040283529160200191611a79565b820191905f5260205f20905b815481529060010190602001808311611a5c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b5f80611ae1611e55565b9050806008018484604051611af79291906155fb565b90815260200160405180910390205491505092915050565b5f80611b196125ac565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b5257611b52614fda565b6003811115611b6357611b63614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611bd982611995565b9050600283516003811115611bf057611bf0614fda565b14611c11578251604051633b0d540d60e21b815261061b9190600401615557565b60208301516001600160a01b03163314611cad575f8281526005850160205260409020546001600160a01b03163314611c4a57336111df565b5f82815260058501602052604090205460a0820151611c7991600160b01b90046001600160401b03169061560a565b6001600160401b0316421015611cad5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b600281516005811115611cc257611cc2614fda565b03611df05760028401546080840151611ce4916001600160401b03169061560a565b6001600160401b0316421015611d185760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b8615611d2a57611d28828761235e565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611d63918491611d5e919061562a565b613677565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611da4846137c1565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506115939350505050565b600481516005811115611e0557611e05614fda565b03611e3957611e13836137c1565b5f898152600786016020526040902055611e2c88612bb6565b6001945050505050611593565b805160405163170cc93360e21b815261061b919060040161516c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611f2c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f539190810190615655565b9150915080611f7557604051636b2f19e960e01b815260040160405180910390fd5b815115611f9b578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b031615611fcc578160200151604051624de75d60e31b815260040161061b9190614eda565b5092915050565b5f815160261461200857815160405163cc92daa160e01b815263ffffffff90911660048201526026602482015260440161061b565b5f805b60028110156120575761201f816001615727565b61202a906008615521565b61ffff1684828151811061204057612040615217565b016020015160f81c901b919091179060010161200b565b5061ffff8116156120815760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b60048110156120dc57612098816003615727565b6120a3906008615521565b63ffffffff16856120b58360026154ec565b815181106120c5576120c5615217565b016020015160f81c901b9190911790600101612084565b5063ffffffff81161561210257604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156121575761211981601f615727565b612124906008615521565b866121308360066154ec565b8151811061214057612140615217565b016020015160f81c901b9190911790600101612105565b50949350505050565b60605f8083356020850135601461217c878701604089016151b7565b61218960608901896151d2565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b61220a60608501856151d2565b9050811015611fcc578161222160608601866151d2565b8381811061223157612231615217565b9050602002810190612243919061522b565b61224d908061573a565b905061225c60608701876151d2565b8481811061226c5761226c615217565b905060200281019061227e919061522b565b612288908061573a565b61229560608901896151d2565b868181106122a5576122a5615217565b90506020028101906122b7919061522b565b6122c590602081019061573a565b6122d260608b018b6151d2565b888181106122e2576122e2615217565b90506020028101906122f4919061522b565b612305906060810190604001614f45565b60405160200161231b979695949392919061577c565b60408051601f1981840301815291905291506001016121fd565b5f8061233f6125ac565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156123a9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123d09190810190615655565b91509150806123f257604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612459919061518c565b82511461247f578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b0316156124b0578160200151604051624de75d60e31b815260040161061b9190614eda565b5f806124bf8460400151613944565b915091508187146124e65760405163089938b360e11b81526004810188905260240161061b565b5f6124ef6125ac565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612582575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26125a1565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806125da6125ac565b90505f6125e686613b35565b90506125f186612335565b61260057600192505050611593565b5f8681526005830160205260409020546001600160a01b0316331461262557336111df565b5f86815260058301602052604090205460a082015161265491600160b01b90046001600160401b03169061560a565b6001600160401b03168160c001516001600160401b0316101561269b5760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161061b565b5f85156126b3576126ac878661235e565b90506126d1565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126f690611113565b60a086015160c08701516040516001600160e01b031960e086901b168152612726939291829189906004016157e5565b602060405180830381865afa158015612741573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612765919061518c565b905080846008015f8a81526020019081526020015f205f82825461278991906154ec565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016127df57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ee614da4565b5f6127f7611e55565b90505f8061280761140787611ec8565b91509150801561282e57604051632d07135360e01b8152811515600482015260240161061b565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561285f5761285f614fda565b600581111561287057612870614fda565b81526020016001820180546128849061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546128b09061513a565b80156128fb5780601f106128d2576101008083540402835291602001916128fb565b820191905f5260205f20905b8154815290600101906020018083116128de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561296657612966614fda565b14158015612987575060018151600581111561298457612984614fda565b14155b156129a857805160405163170cc93360e21b815261061b919060040161516c565b6003815160058111156129bd576129bd614fda565b036129cb57600481526129d0565b600581525b8360080181602001516040516129e691906153c8565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a2a57612a2a614fda565b021790555060208201516001820190612a43908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b0319169190921617905580516005811115612ae857612ae8614fda565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612b6b575f80fd5b505af1158015610fdc573d5f803e3d5ffd5b6113ea6001600160a01b03831682613e0d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612bbf6125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612bf857612bf8614fda565b6003811115612c0957612c09614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612c7d613ea0565b8260800151612c8c919061560a565b6001600160401b0316421015612cc05760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612d7b575f84815260058701602052604090205461271090612d2d90600160a01b900461ffff1685615521565b612d379190615538565b915081866008015f8681526020019081526020015f205f828254612d5b91906154ec565b90915550612d6b90508284615727565b9050612d7b856020015182612b1f565b612d908560200151610ea38760600151611113565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e0d57835160405163cc92daa160e01b815263ffffffff90911660048201526036602482015260440161061b565b5f805b6002811015612e5c57612e24816001615727565b612e2f906008615521565b61ffff16868281518110612e4557612e45615217565b016020015160f81c901b9190911790600101612e10565b5061ffff811615612e865760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015612ee157612e9d816003615727565b612ea8906008615521565b63ffffffff1687612eba8360026154ec565b81518110612eca57612eca615217565b016020015160f81c901b9190911790600101612e89565b5063ffffffff8116600314612f0957604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612f5e57612f2081601f615727565b612f2b906008615521565b88612f378360066154ec565b81518110612f4757612f47615217565b016020015160f81c901b9190911790600101612f0c565b505f805b6008811015612fbd57612f76816007615727565b612f81906008615521565b6001600160401b031689612f968360266154ec565b81518110612fa657612fa6615217565b016020015160f81c901b9190911790600101612f62565b505f805b600881101561301c57612fd5816007615727565b612fe0906008615521565b6001600160401b03168a612ff583602e6154ec565b8151811061300557613005615217565b016020015160f81c901b9190911790600101612fc1565b5091989097509095509350505050565b5f80825160271461306257825160405163cc92daa160e01b815263ffffffff90911660048201526027602482015260440161061b565b5f805b60028110156130b157613079816001615727565b613084906008615521565b61ffff1685828151811061309a5761309a615217565b016020015160f81c901b9190911790600101613065565b5061ffff8116156130db5760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613136576130f2816003615727565b6130fd906008615521565b63ffffffff168661310f8360026154ec565b8151811061311f5761311f615217565b016020015160f81c901b91909117906001016130de565b5063ffffffff811660021461315e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156131b35761317581601f615727565b613180906008615521565b8761318c8360066154ec565b8151811061319c5761319c615217565b016020015160f81c901b9190911790600101613161565b505f866026815181106131c8576131c8615217565b016020015191976001600160f81b03199092161515965090945050505050565b5f806131f26125ac565b600281015490915061ffff600160401b9091048116908616108061321b575061271061ffff8616115b1561323f57604051635f12e6c360e11b815261ffff8616600482015260240161061b565b60028101546001600160401b03908116908516101561327b576040516202a06d60e11b81526001600160401b038516600482015260240161061b565b805483108061328d5750806001015483115b156132ae5760405163222d164360e21b81526004810184905260240161061b565b825f6132b982610da9565b90505f6132c68983613ebb565b905060405180608001604052806132da3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b61339c614418565b610eb581614463565b5f806133af6125ac565b90505f6133bb84610da9565b90505f6133c787611995565b90506133d287612335565b6133f2576040516330efa98b60e01b81526004810188905260240161061b565b60028151600581111561340757613407614fda565b1461342857805160405163170cc93360e21b815261061b919060040161516c565b5f828260800151613439919061560a565b905083600201600a9054906101000a90046001600160401b031682604001516134629190615813565b6001600160401b0316816001600160401b0316111561349f57604051636d51fe0560e11b81526001600160401b038216600482015260240161061b565b5f806134ab8a84613677565b915091505f8a836040516020016134d992919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561356c5761356c614fda565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f805f613682611e55565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166136b285826144d7565b5f6136bc876146fc565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb61370c8a858b611e79565b6040518263ffffffff1660e01b8152600401613728919061517a565b6020604051808303815f875af1158015613744573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613768919061518c565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806137cb6125ac565b90505f6137db8460400151611995565b90505f6003825160058111156137f3576137f3614fda565b1480613811575060048251600581111561380f5761380f614fda565b145b15613821575060c081015161385e565b60028251600581111561383657613836614fda565b0361384257504261385e565b815160405163170cc93360e21b815261061b919060040161516c565b84608001516001600160401b0316816001600160401b03161161388557505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906138aa90611113565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526138fc9493929188916001600160401b03909116906004016157e5565b602060405180830381865afa158015613917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061393b919061518c565b95945050505050565b5f808251602e1461397a57825160405163cc92daa160e01b815263ffffffff9091166004820152602e602482015260440161061b565b5f805b60028110156139c957613991816001615727565b61399c906008615521565b61ffff168582815181106139b2576139b2615217565b016020015160f81c901b919091179060010161397d565b5061ffff8116156139f35760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613a4e57613a0a816003615727565b613a15906008615521565b63ffffffff1686613a278360026154ec565b81518110613a3757613a37615217565b016020015160f81c901b91909117906001016139f6565b5063ffffffff811615613a7457604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613ac957613a8b81601f615727565b613a96906008615521565b87613aa28360066154ec565b81518110613ab257613ab2615217565b016020015160f81c901b9190911790600101613a77565b505f805b6008811015613b2857613ae1816007615727565b613aec906008615521565b6001600160401b031688613b018360266154ec565b81518110613b1157613b11615217565b016020015160f81c901b9190911790600101613acd565b5090969095509350505050565b613b3d614da4565b5f613b46611e55565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613b7f57613b7f614fda565b6005811115613b9057613b90614fda565b8152602001600182018054613ba49061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054613bd09061513a565b8015613c1b5780601f10613bf257610100808354040283529160200191613c1b565b820191905f5260205f20905b815481529060010190602001808311613bfe57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613c8957613c89614fda565b14613cbc575f8481526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613d0057613d00614fda565b021790555060208201516001820190613d19908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613db68582613677565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613e30573060405163cd78605960e01b815260040161061b9190614eda565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613e79576040519150601f19603f3d011682016040523d82523d5f602084013e613e7e565b606091505b505090508061062457604051630a12f52160e11b815260040160405180910390fd5b5f613ea9611e55565b600101546001600160401b0316919050565b5f613ec4611e55565b6009015460ff16613ee857604051637fab81e560e01b815260040160405180910390fd5b5f613ef1611e55565b905042613f046060860160408701614f45565b6001600160401b0316111580613f3e5750613f226202a300426154ec565b613f326060860160408701614f45565b6001600160401b031610155b15613f7857613f536060850160408601614f45565b604051635879da1360e11b81526001600160401b03909116600482015260240161061b565b613f8d613f88606086018661583e565b614765565b613f9d613f88608086018661583e565b6030613fac602086018661573a565b905014613fde57613fc0602085018561573a565b6040516326475b2f60e11b815261061b925060040190815260200190565b613fe8848061573a565b90505f0361401557613ffa848061573a565b604051633e08a12560e11b815260040161061b929190615852565b5f60088201614024868061573a565b6040516140329291906155fb565b9081526020016040518091039020541461406b57614050848061573a565b60405163a41f772f60e01b815260040161061b929190615852565b614075835f6144d7565b6040805160e08101909152815481525f908190614181906020810161409a898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906140e2908a018a61573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161412b60608a0160408b01614f45565b6001600160401b0316815260200161414660608a018a61583e565b61414f90615880565b815260200161416160808a018a61583e565b61416a90615880565b8152602001876001600160401b03168152506148ce565b5f8281526006860160205260409020919350915061419f828261541d565b5081600884016141af888061573a565b6040516141bd9291906155fb565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906141f990859060040161517a565b6020604051808303815f875af1158015614215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614239919061518c565b6040805160e081019091529091508060018152602001614259898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156142e8576142e8614fda565b021790555060208201516001820190614301908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061439e888061573a565b6040516143ac9291906155fb565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906143ea9190614f45565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661446157604051631afcd79f60e31b815260040160405180910390fd5b565b61446b614418565b61447481614abb565b61447c614ad4565b610eb56060820135608083013561449960c0850160a08601614f45565b6144a960e0860160c08701615947565b6144ba610100870160e08801615960565b6101008701356144d261014089016101208a016151b7565b614ae4565b5f6144e0611e55565b90505f826001600160401b0316846001600160401b0316111561450e57614507838561562a565b905061451b565b614518848461562a565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061457d575060018401548151614579916001600160401b0316906154ec565b8210155b156145a3576001600160401b0383166060820152818152604081015160208201526145c2565b82816060018181516145b5919061560a565b6001600160401b03169052505b60608101516145d2906064615813565b602082015160018601546001600160401b0392909216916145fd9190600160401b900460ff16615521565b101561462d57606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161061b565b856001600160401b03168160400181815161464891906154ec565b9052506040810180516001600160401b0387169190614668908390615727565b9052506001840154604082015160649161468d91600160401b90910460ff1690615521565b10156146b4578060400151604051635943317f60e01b815260040161061b91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614706611e55565b5f848152600782016020526040902060020180549192509060089061473a90600160401b90046001600160401b0316615980565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6147726020820182614eee565b63ffffffff16158015614792575061478d60208201826151d2565b151590505b156147d9576147a46020820182614eee565b6147b160208301836151d2565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161061b565b6147e660208201826151d2565b90506147f56020830183614eee565b63ffffffff16111561480e576147a46020820182614eee565b60015b61481e60208301836151d2565b90508110156113ea5761483460208301836151d2565b61483f600184615727565b81811061484e5761484e615217565b905060200201602081019061486391906151b7565b6001600160a01b031661487960208401846151d2565b8381811061488957614889615217565b905060200201602081019061489e91906151b7565b6001600160a01b031610156148c657604051630dbc8d5f60e31b815260040160405180910390fd5b600101614811565b5f60608260400151516030146148f75760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614938988a98600198929792969095909490939092910161599b565b60405160208183030381529060405290505f5b846080015160200151518110156149aa5781856080015160200151828151811061497757614977615217565b6020026020010151604051602001614990929190615a55565b60408051601f19818403018152919052915060010161494b565b5060a08401518051602091820151516040516149ca938593929101615a86565b60405160208183030381529060405290505f5b8460a001516020015151811015614a3c57818560a00151602001518281518110614a0957614a09615217565b6020026020010151604051602001614a22929190615a55565b60408051601f1981840301815291905291506001016149dd565b5060c0840151604051614a53918391602001615ac1565b6040516020818303038152906040529050600281604051614a7491906153c8565b602060405180830381855afa158015614a8f573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614ab2919061518c565b94909350915050565b614ac3614418565b614acb614c7a565b610eb581614c82565b614adc614418565b614461614d65565b614aec614418565b5f614af56125ac565b905061ffff85161580614b0d575061271061ffff8616115b15614b3157604051635f12e6c360e11b815261ffff8616600482015260240161061b565b86881115614b555760405163222d164360e21b81526004810189905260240161061b565b60ff84161580614b685750600a60ff8516115b15614b8b5760405163170db35960e31b815260ff8516600482015260240161061b565b614b93613ea0565b6001600160401b0316866001600160401b03161015614bcf576040516202a06d60e11b81526001600160401b038716600482015260240161061b565b825f03614bef5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614461614418565b614c8a614418565b5f614c93611e55565b8235815590506014614cab6060840160408501615960565b60ff161180614cca5750614cc56060830160408401615960565b60ff16155b15614cfe57614cdf6060830160408401615960565b604051634a59bbff60e11b815260ff909116600482015260240161061b565b614d0e6060830160408401615960565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614d3f6040830160208401614f45565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612b90614418565b508054614d799061513a565b5f825580601f10614d88575050565b601f0160209004905f5260205f2090810190610eb59190614de1565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614df5575f8155600101614de2565b5090565b8015158114610eb5575f80fd5b803563ffffffff81168114611990575f80fd5b5f805f60608486031215614e2b575f80fd5b833592506020840135614e3d81614df9565b9150614e4b60408501614e06565b90509250925092565b5f60208284031215614e64575f80fd5b5035919050565b5f8060408385031215614e7c575f80fd5b82356001600160401b03811115614e91575f80fd5b830160808186031215614ea2575f80fd5b9150614eb060208401614e06565b90509250929050565b5f8060408385031215614eca575f80fd5b82359150614eb060208401614e06565b6001600160a01b0391909116815260200190565b5f60208284031215614efe575f80fd5b61159382614e06565b5f8060408385031215614f18575f80fd5b614f2183614e06565b946020939093013593505050565b80356001600160401b0381168114611990575f80fd5b5f60208284031215614f55575f80fd5b61159382614f2f565b803561ffff81168114611990575f80fd5b5f805f60608486031215614f81575f80fd5b83356001600160401b03811115614f96575f80fd5b840160a08187031215614fa7575f80fd5b9250614fb560208501614f5e565b9150614e4b60408501614f2f565b5f6101408284031215614fd4575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614ffe57614ffe614fda565b9052565b5f5b8381101561501c578181015183820152602001615004565b50505f910152565b5f815180845261503b816020860160208601615002565b601f01601f19169290920160200192915050565b60208152615061602082018351614fee565b5f602083015160e0604084015261507c610100840182615024565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156150e0575f80fd5b82356001600160401b03808211156150f6575f80fd5b818501915085601f830112615109575f80fd5b813581811115615117575f80fd5b866020828501011115615128575f80fd5b60209290920196919550909350505050565b600181811c9082168061514e57607f821691505b602082108103614fd457634e487b7160e01b5f52602260045260245ffd5b60208101610df78284614fee565b602081525f6115936020830184615024565b5f6020828403121561519c575f80fd5b5051919050565b6001600160a01b0381168114610eb5575f80fd5b5f602082840312156151c7575f80fd5b8135611593816151a3565b5f808335601e198436030181126151e7575f80fd5b8301803591506001600160401b03821115615200575f80fd5b6020019150600581901b36038213156137ba575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261523f575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561527f5761527f615249565b60405290565b604080519081016001600160401b038111828210171561527f5761527f615249565b604051601f8201601f191681016001600160401b03811182821017156152cf576152cf615249565b604052919050565b5f6001600160401b038211156152ef576152ef615249565b50601f01601f191660200190565b5f82601f83011261530c575f80fd5b813561531f61531a826152d7565b6152a7565b818152846020838601011115615333575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561535f575f80fd5b61536761525d565b82356001600160401b038082111561537d575f80fd5b615389368387016152fd565b8352602085013591508082111561539e575f80fd5b506153ab368286016152fd565b6020830152506153bd60408401614f2f565b604082015292915050565b5f825161523f818460208701615002565b601f82111561062457805f5260205f20601f840160051c810160208510156153fe5750805b601f840160051c820191505b81811015611771575f815560010161540a565b81516001600160401b0381111561543657615436615249565b61544a81615444845461513a565b846153d9565b602080601f83116001811461547d575f84156154665750858301515b5f19600386901b1c1916600185901b178555610fdc565b5f85815260208120601f198616915b828110156154ab5788860151825594840194600190910190840161548c565b50858210156154c857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610df757610df76154d8565b5f63ffffffff808316818103615517576155176154d8565b6001019392505050565b8082028115828204841417610df757610df76154d8565b5f8261555257634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061556b5761556b614fda565b91905290565b5f60208083525f84546155838161513a565b806020870152604060018084165f81146155a457600181146155c0576155ed565b60ff19851660408a0152604084151560051b8a010195506155ed565b895f5260205f205f5b858110156155e45781548b82018601529083019088016155c9565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611fcc57611fcc6154d8565b6001600160401b03828116828216039080821115611fcc57611fcc6154d8565b805161199081614df9565b5f8060408385031215615666575f80fd5b82516001600160401b038082111561567c575f80fd5b908401906060828703121561568f575f80fd5b61569761525d565b825181526020808401516156aa816151a3565b828201526040840151838111156156bf575f80fd5b80850194505087601f8501126156d3575f80fd5b835192506156e361531a846152d7565b83815288828587010111156156f6575f80fd5b61570584838301848801615002565b8060408401525081955061571a81880161564a565b9450505050509250929050565b81810381811115610df757610df76154d8565b5f808335601e1984360301811261574f575f80fd5b8301803591506001600160401b03821115615768575f80fd5b6020019150368190038213156137ba575f80fd5b5f885161578d818460208d01615002565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615836576158366154d8565b505092915050565b5f8235603e1983360301811261523f575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615890575f80fd5b615898615285565b6158a183614e06565b81526020808401356001600160401b03808211156158bd575f80fd5b9085019036601f8301126158cf575f80fd5b8135818111156158e1576158e1615249565b8060051b91506158f28483016152a7565b818152918301840191848101903684111561590b575f80fd5b938501935b838510156159355784359250615925836151a3565b8282529385019390850190615910565b94860194909452509295945050505050565b5f60208284031215615957575f80fd5b61159382614f5e565b5f60208284031215615970575f80fd5b813560ff81168114611593575f80fd5b5f6001600160401b03808316818103615517576155176154d8565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516159e181602a850160208b01615002565b8651908301906159f881602a840160208b01615002565b60c087901b6001600160c01b031916602a9290910191820152615a2a603282018660e01b6001600160e01b0319169052565b615a43603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615a66818460208801615002565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615a97818460208901615002565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615ad2818460208801615002565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", + Bin: "0x363038303630343035323334383031353631303030663537356638306664356235303630343035313631353738633338303338303631353738633833333938313031363034303831393035323631303032653931363130313037353635623630303138313630303138313131313536313030343235373631303034323631303132633536356230333631303034663537363130303466363130303535353635623530363130313430353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436383031303030303030303030303030303030303930303436306666313631353631303061353537363034303531363366393265653861393630653031623831353236303034303136303430353138303931303339306664356238303534363030313630303136303430316230333930383131363134363130313034353738303534363030313630303136303430316230333139313636303031363030313630343031623033393038313137383235353630343035313930383135323766633766353035623266333731616532313735656534393133663434393965316632363333613762353933363332316565643163646165623631313531383164323930363032303031363034303531383039313033393061313562353035363562356636303230383238343033313231353631303131373537356638306664356238313531363030323831313036313031323535373566383066643562393339323530353035303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363135363366383036313031346435663339356666336665363038303630343035323630303433363130363130316235353735663335363065303163383036333832383061323561313136313030656135373830363362613361346239373131363130303865353738303633626133613462393731343631303464633537383036336263356662666563313436313034666235373830363362656530613033663134363130353265353738303633633235376130663531343631303534643537383036336335393965323466313436313035366335373830363363393734643162363134363130353766353738303633643566323066663631343631303539333537383036336466393364386465313436313035626635373830363366643761633565373134363130356435353735663830666435623830363338323830613235613134363130343062353738303633393365323435393831343631303431663537383036333938663365326234313436313034336535373830363361336136356534383134363130343564353738303633613937373861376131343631303264663537383036336166326635666562313436313034376335373830363361666239383039363134363130343866353738303633623737316233626331343631303463323537356638306664356238303633333534353564656431313631303135633537383036333335343535646564313436313032646635373830363333613163666666363134363130333037353738303633343637656630366631343631303332363537383036333532393766616536313436313033343535373830363336303330356436323134363130333634353738303633363230363538353631343631303338643537383036333636343335616266313436313033626135373830363337333232313466383134363130336439353738303633373666373836323131343631303365633537356638306664356238303633303131386163633431343631303162393537383036333033323265643938313436313031646135373830363331353164333064313134363130316639353738303633316563343437323431343631303232343537383036333230643931623761313436313032343335373830363332356531633737363134363130323632353738303633326532313934643831343631303238313537383036333332396333653132313436313032623835373562356638306664356233343830313536313031633435373566383066643562353036313031643836313031643333363630303436313437363635363562363130356634353635623030356233343830313536313031653535373566383066643562353036313031643836313031663433363630303436313437613135363562363130363239353635623334383031353631303230343537356638306664356235303631303230643630306138313536356236303430353136306666393039313136383135323630323030313562363034303531383039313033393066333562333438303135363130323266353735663830666435623530363130316438363130323365333636303034363134373636353635623631303861353536356233343830313536313032346535373566383066643562353036313031643836313032356433363630303436313437623835363562363130386230353635623334383031353631303236643537356638306664356235303631303164383631303237633336363030343631343830363536356236313065386135363562333438303135363130323863353735663830666435623530363130326130363130323962333636303034363134376131353635623631306566653536356236303430353136303031363030313630343031623033393039313136383135323630323030313631303231623536356233343830313536313032633335373566383066643562353036313032643236303031363030313630393931623031383135363562363034303531363130323162393139303631343832373536356233343830313536313032656135373566383066643562353036313032663436313237313038313536356236303430353136316666666639303931313638313532363032303031363130323162353635623334383031353631303331323537356638306664356235303631303164383631303332313336363030343631343736363536356236313066353235363562333438303135363130333331353735663830666435623530363130316438363130333430333636303034363134383362353635623631306635643536356233343830313536313033353035373566383066643562353036313031643836313033356633363630303436313438353435363562363131303064353635623334383031353631303336663537356638306664356235303631303337383630313438313536356236303430353136336666666666666666393039313136383135323630323030313631303231623536356233343830313536313033393835373566383066643562353036313033616336313033613733363630303436313438393035363562363131326435353635623630343035313930383135323630323030313631303231623536356233343830313536313033633535373566383066643562353036313032613036313033643433363630303436313437613135363562363131326635353635623334383031353631303365343537356638306664356235303631303361633566383135363562333438303135363130336637353735663830666435623530363130316438363130343036333636303034363134373636353635623631313330393536356233343830313536313034313635373566383066643562353036313032306436303330383135363562333438303135363130343261353735663830666435623530363130316438363130343339333636303034363134376131353635623631313333343536356233343830313536313034343935373566383066643562353036313031643836313034353833363630303436313438353435363562363131336631353635623334383031353631303436383537356638306664356235303631303164383631303437373336363030343631343833623536356236313136316435363562363130336163363130343861333636303034363134386263353635623631313830663536356233343830313536313034396135373566383066643562353036313033616337663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303038313536356233343830313536313034636435373566383066643562353036313032643236303035363030313630393931623031383135363562333438303135363130346537353735663830666435623530363130316438363130346636333636303034363134376131353635623631313833353536356233343830313536313035303635373566383066643562353036313033616337666539323534366436393839353064646433383931306432653135656431643932336364306137623364646539653261366133663338303536353535396362303038313536356233343830313536313035333935373566383066643562353036313031643836313035343833363630303436313437613135363562363131613935353635623334383031353631303535383537356638306664356235303631303164383631303536373336363030343631343931643536356236313162623235363562363130336163363130353761333636303034363134376131353635623631316338663536356233343830313536313035386135373566383066643562353036313032306436303134383135363562333438303135363130353965353735663830666435623530363130356232363130356164333636303034363134376131353635623631316362323536356236303430353136313032316239313930363134396139353635623334383031353631303563613537356638306664356235303631303261303632303261333030383135363562333438303135363130356530353735663830666435623530363130336163363130356566333636303034363134613239353635623631316466343536356236313035666638333833383336313165326335363562363130363234353736303430353136333130333663663931363065313162383135323630303438313031383439303532363032343031356236303430353138303931303339306664356235303530353035363562356636313036333236313231373235363562356638333831353236303037383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303035383131313135363130363662353736313036366236313439333435363562363030353831313131353631303637633537363130363763363134393334353635623831353236303230303136303031383230313830353436313036393039303631346139343536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363130366263393036313461393435363562383031353631303730373537383036303166313036313036646535373631303130303830383335343034303238333532393136303230303139313631303730373536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313036656135373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333932383330313534313636306130393039313031353239303931353038313531363030353831313131353631303737323537363130373732363134393334353635623134363130376135353735663833383135323630303738333031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313036316239313630666631363930363030343031363134616336353635623630363038313031353136303430353136333432613265306235363065313162383135323630303438313031383539303532363030313630303136303430316230333930393131363630323438323031353235663630343438323031353236303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f393036333835343563313661393036303634303135663630343035313830383330333831383635616634313538303135363130383163353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631303834333931393038313031393036313462643735363562363034303531383236336666666666666666313636306530316238313532363030343031363130383566393139303631346330383536356236303230363034303531383038333033383135663837356166313135383031353631303837623537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313038396639313930363134633161353635623530353035303530353635623631303839663833383338333631316532633536356235663631303862393631323137323536356236303039383130313534393039313530363066663136313536313038653235373630343035313633376661623831653536306530316238313532363030343031363034303531383039313033393066643562363030353630303136303939316230313630303136303031363061303162303331363633343231336366373836303430353138313633666666666666666631363630653031623831353236303034303136303230363034303531383038333033383138363561666131353830313536313039323535373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130393439393139303631346331613536356238333630323030313335313436313039373235373630343035313633373262306137653736306531316238313532363032303834303133353630303438323031353236303234303136313036316235363562333036313039383336303630383530313630343038363031363134633435353635623630303136303031363061303162303331363134363130396262353736313039613136303630383430313630343038353031363134633435353635623630343035313633326638383132306436306532316238313532363030343031363130363162393139303631343832373536356235663631303963393630363038353031383536313463363035363562393035303930353035663830356238323831363366666666666666663136313031353631306362303537356636313039656336303630383830313838363134633630353635623833363366666666666666663136383138313130363130613032353736313061303236313463613535363562393035303630323030323831303139303631306131343931393036313463623935363562363130613164393036313464323435363562383035313630343035313931393235303566393136303038383830313931363130613335393136313464396635363562393038313532363032303031363034303531383039313033393032303534313436313061363535373830353136303430353136336134316637373266363065303162383135323631303631623931393036303034303136313463303835363562356636303032383835663031333538343630343035313630323030313631306139343932393139303931383235323630653031623630303136303031363065303162303331393136363032303832303135323630323430313930353635623630343038303531363031663139383138343033303138313532393038323930353236313061616539313631346439663536356236303230363034303531383038333033383138353561666131353830313536313061633935373364356638303365336435666664356235303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631306165633931393036313463316135363562393035303830383636303038303138333566303135313630343035313631306230343931393036313464396635363562393038313532363034303830353136303230393238313930303338333031383132303933393039333535363065303833303138313532363030323833353238343531383238343031353238343831303138303531363030313630303136303430316230333930383131363835383430313532356636303630383630313831393035323931353138313136363038303836303135323432313636306130383530313532363063303834303138313930353238343831353236303037386130313930393235323930323038313531383135343832393036306666313931363630303138333630303538313131313536313062383635373631306238363631343933343536356230323137393035353530363032303832303135313630303138323031393036313062396639303832363134646634353635623530363034303832383130313531363030323833303138303534363036303836303135313630383038373031353136306130383830313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303933303135313630303339303932303138303534363030313630303136303430316230333139313639323834313639323930393231373930393135353833303135313631306334333931313638353631346563333536356238323531363034303531393139353530363130633534393136313464396635363562363034303830353139313832393030333832323039303834303135313630303136303031363034303162303331363832353239303832393037663964343766656639646130373736363135343665363436643631383330626663626461393035303663326535656564333831393565383263346562316362646639303630323030313630343035313830393130333930613335303530383036313063613939303631346564363536356239303530363130396430353635623530363030343833303138313930353536303031383330313534363036343930363130636434393036303031363034303162393030343630666631363833363134656638353635623130313536313063663635373630343035313633353934333331376636306530316238313532363030343831303138323930353236303234303136313036316235363562356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363331653664393738393631306431613837363132313936353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363130643361393139303631346330383536356236303230363034303531383038333033383138363561663431353830313536313064353535373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130643739393139303631346331613536356239303530356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633383632626661363338383630343035313832363366666666666666663136363065303162383135323630303430313631306462333931393036313530336135363562356636303430353138303833303338313836356166343135383031353631306463643537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313064663439313930383130313930363134626437353635623930353035663630303238323630343035313631306530373931393036313464396635363562363032303630343035313830383330333831383535616661313538303135363130653232353733643566383033653364356666643562353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313065343539313930363134633161353635623930353038323831313436313065373135373630343035313633313837326663386436306530316238313532363030343831303138323930353236303234383130313834393035323630343430313631303631623536356235303530353036303039393039323031383035343630666631393136363030313137393035353530353035303530353635623631306539333832363132326131353635623631306562333537363034303531363333306566613938623630653031623831353236303034383130313833393035323630323430313631303631623536356235663631306562643833363131636232353635623531393035303630303238313630303538313131313536313065643435373631306564343631343933343536356231343631306566343537383036303430353136333137306363393333363065323162383135323630303430313631303631623931393036313461633635363562363130383966383338333631323263613536356235663830363130663038363132353834353635623630303330313534363130663136393038343631353063353536356239303530383031353830363130663262353735303630303136303031363034303162303338313131356231353631306634633537363034303531363332323264313634333630653231623831353236303034383130313834393035323630323430313631303631623536356239323931353035303536356236313038396638333833383336313235613835363562363130663635363132373733353635623566363130663665363132353834353635623930353035663830363130663762383436313237626435363562393135303931353036313066383838323631323261313536356236313066393435373530353035303631313030323536356235663832383135323630303538343031363032303532363034303930323035343630303136303031363061303162303331363630303438323531363030353831313131353631306663323537363130666332363134393334353635623033363130666537353735663833383135323630303838353031363032303532363034303831323038303534393139303535363130666535383238323631326236633536356235303562363130666664383136313066663838343630343030313531363131326435353635623631326263613536356235303530353035303562363131303061363132626464353635623530353635623566363131303136363132353834353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631313034663537363131303466363134393334353635623630303338313131313536313130363035373631313036303631343933343536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313832303135343630343038303833303139313930393135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353238313031353139303931353035663631313064363832363131636232353635623930353036303031383335313630303338313131313536313130656435373631313065643631343933343536356231343631313130653537383235313630343035313633336230643534306436306532316238313532363130363162393139303630303430313631353065343536356236303034383135313630303538313131313536313131323335373631313132333631343933343536356230333631313133393537363131313331383536313263303335363562353035303530353035303530353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363339646532336434303631313135653861363132313936353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131313765393139303631346330383536356236303630363034303531383038333033383138363561663431353830313536313131393935373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131316264393139303631353066653536356235303931353039313530383138343134363131316561353738343630343030313531363034303531363330383939333862333630653131623831353236303034303136313036316239313831353236303230303139303536356238303630303136303031363034303162303331363833363036303031353136303031363030313630343031623033313631303830363131323233353735303830363030313630303136303430316230333136383536306130303135313630303136303031363034303162303331363131356231353631313234633537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313036316235363562356638373831353236303036383730313630323039303831353236303430393138323930323038303534363066663139313636303032393038313137383235353031383035343630303136303031363034303162303334323136363030313630343031623831303236376666666666666666666666666666666636303430316231393930393231363931393039313137393039313535393135313931383235323835393138393931376630343730353962343635303639623862373531383336623431663966316438336461666635383364323233386363376662623436313433376563323361346636393130313630343035313830393130333930613335303530353035303530353035303530353635623566363131326465363132353834353635623630303330313534363130663463393036303031363030313630343031623033383431363631346566383536356235663631313266663832363131636232353635623630383030313531393239313530353035363562363131333134383338333833363132356138353635623631303632343537363034303531363335626666363833663630653131623831353236303034383130313834393035323630323430313631303631623536356235663631313333643631323538343536356239303530356636313133343938333631316362323536356235313930353036303034383136303035383131313135363131333630353736313133363036313439333435363562313436313133383035373830363034303531363331373063633933333630653231623831353236303034303136313036316239313930363134616336353635623566383338313532363030353833303136303230353236303430393032303534363030313630303136306130316230333136333331343631313362623537333335623630343035313633366532636364373536306531316238313532363030343031363130363162393139303631343832373536356235663833383135323630303838333031363032303930383135323630343038303833323038303534393038343930353536303035383630313930393235323930393132303534363130383966393036303031363030313630613031623033313638323631326236633536356236313133663936313237373335363562356636313134303236313235383435363562356638333831353236303036383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303033383131313135363131343362353736313134336236313439333435363562363030333831313131353631313434633537363131343463363134393334353635623831353238313534363130313030393030343630303136303031363061303162303331363630323038323031353236303031383230313534363034303832303135323630303239303931303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303530363030333831353136303033383131313135363131346335353736313134633536313439333435363562313436313134653635373830353136303430353136333362306435343064363065323162383135323631303631623931393036303034303136313530653435363562363030343631313466353832363034303031353136313163623235363562353136303035383131313135363131353037353736313135303736313439333435363562313436313136303635373566363131353136383536313231393635363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633396465323364343038343630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131353535393139303631346330383536356236303630363034303531383038333033383138363561663431353830313536313135373035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131353934393139303631353066653536356235303931353039313530383138343630343030313531313436313135633035373630343035313633303839393338623336306531316238313532363030343831303138333930353236303234303136313036316235363562383036303031363030313630343031623033313638343630633030313531363030313630303136303430316230333136313131353631313630323537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313036316235363562353035303530356236313136306638333631326330333536356235303530363131363139363132626464353635623530353035363562356636313136323636313231373235363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f36333265343363656235363131363464383636313231393635363562363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313136366439313930363134633038353635623630343038303531383038333033383138363561663431353830313536313136383735373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131366162393139303631353133333536356239313530393135303830363131366431353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313036316235363562356638323831353236303036383430313630323035323630343039303230383035343631313665623930363134613934353635623930353035663033363131373066353736303430353136333038393933386233363065313162383135323630303438313031383339303532363032343031363130363162353635623630303135663833383135323630303738353031363032303532363034303930323035343630666631363630303538313131313536313137333535373631313733353631343933343536356231343631313736383537356638323831353236303037383430313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130363162393136306666313639303630303430313631346163363536356235663832383135323630303638343031363032303532363034303831323036313137383039313631343662613536356235663832383135323630303738343031363032303930383135323630343039313832393032303830353436306666313931363630303239303831313738323535303138303534363030313630303136303430316230333432383138313136363030313630633031623032363030313630303136306330316230333930393331363932393039323137393238333930353538343531363030313630383031623930393330343136383235323931383130313931393039313532383339313766663866643163393066623963666132636132333538666466353830366230383661643433333135643932623232316339323965666337663130356365373536383931303136303430353138303931303339306132353035303530353035363562356636313138313836313237373335363562363131383234383438343834333436313265323335363562393035303631313832653631326264643536356239333932353035303530353635623566363131383365363132353834353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631313837373537363131383737363134393334353635623630303338313131313536313138383835373631313838383631343933343536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313830383330313534363034303833303135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303931353038313531363030333831313131353631313930313537363131393031363134393334353635623134313538303135363131393232353735303630303338313531363030333831313131353631313931663537363131393166363134393334353635623134313535623135363131393433353738303531363034303531363333623064353430643630653231623831353236313036316239313930363030343031363135306534353635623566363131393531383236303430303135313631316362323536356239303530383036303630303135313630303136303031363034303162303331363566303336313139383335373630343035313633333962383934663936306532316238313532363030343831303138353930353236303234303136313036316235363562363034303830383330313531363036303833303135313630383038343031353139323531363334326132653062353630653131623831353236303035363030313630393931623031393336336565356234386562393337335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3933363338353435633136613933363131396631393339303630303430313932383335323630303136303031363034303162303339313832313636303230383430313532313636303430383230313532363036303031393035363562356636303430353138303833303338313836356166343135383031353631316130623537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313161333239313930383130313930363134626437353635623630343035313832363366666666666666663136363065303162383135323630303430313631316134653931393036313463303835363562363032303630343035313830383330333831356638373561663131353830313536313161366135373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131613865393139303631346331613536356235303530353035303530353635623566363131613965363132313732353635623566383338313532363030363832303136303230353236303430393032303830353439313932353039303631316162633930363134613934353635623930353035663033363131616530353736303430353136333038393933386233363065313162383135323630303438313031383339303532363032343031363130363162353635623630303135663833383135323630303738333031363032303532363034303930323035343630666631363630303538313131313536313162303635373631316230363631343933343536356231343631316233393537356638323831353236303037383230313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130363162393136306666313639303630303430313631346163363536356235663832383135323630303638323031363032303532363034303930383139303230393035313633656535623438656236306530316238313532363030353630303136303939316230313931363365653562343865623931363131623732393139303630303430313631353136313536356236303230363034303531383038333033383135663837356166313135383031353631316238653537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313036323439313930363134633161353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436303032393139303630303136303430316239303034363066663136383036313162666235373530383035343630303136303031363034303162303338303834313639313136313031353562313536313163313935373630343035313633663932656538613936306530316238313532363030343031363034303531383039313033393066643562383035343638666666666666666666666666666666666666313931363630303136303031363034303162303338333136313736303031363034303162313738313535363131633433383336313266636635363562383035343630666636303430316231393136383135353630343035313630303136303031363034303162303338333136383135323766633766353035623266333731616532313735656534393133663434393965316632363333613762353933363332316565643163646165623631313531383164323930363032303031363034303531383039313033393061313530353035303536356235663631316339383631323737333536356236313163613338323333333436313266653035363562393035303631316361643631326264643536356239313930353035363562363131636261363134366631353635623566363131636333363132313732353635623566383438313532363030373832303136303230353236303430393038313930323038313531363065303831303139303932353238303534393239333530393039313832393036306666313636303035383131313135363131636661353736313163666136313439333435363562363030353831313131353631316430623537363131643062363134393334353635623831353236303230303136303031383230313830353436313164316639303631346139343536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363131643462393036313461393435363562383031353631316439363537383036303166313036313164366435373631303130303830383335343034303238333532393136303230303139313631316439363536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313164373935373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333930393230313534393039313136363061303930393130313532393339323530353035303536356235663830363131646665363132313732353635623930353038303630303830313834383436303430353136313165313439323931393036313531656235363562393038313532363032303031363034303531383039313033393032303534393135303530393239313530353035363562356638303631316533363631323538343536356235663836383135323630303638323031363032303532363034303830383232303831353136306530383130313930393235323830353439333934353039313932393039313930383239303630666631363630303338313131313536313165366635373631316536663631343933343536356236303033383131313135363131653830353736313165383036313439333435363562383135323831353436313031303039303034363030313630303136306130316230333136363032303832303135323630303138323031353436303430383038333031393139303931353236303032393039323031353436303031363030313630343031623033383038323136363036303834303135323630303136303430316238323034383131363630383038343031353236303031363038303162383230343831313636306130383430313532363030313630633031623930393130343136363063303930393130313532383130313531393039313530356636313165663638323631316362323536356239303530363030323833353136303033383131313135363131663064353736313166306436313439333435363562313436313166326535373832353136303430353136333362306435343064363065323162383135323631303631623931393036303034303136313530653435363562363032303833303135313630303136303031363061303162303331363333313436313166636135373566383238313532363030353835303136303230353236303430393032303534363030313630303136306130316230333136333331343631316636373537333336313133613135363562356638323831353236303035383530313630323035323630343039303230353436306130383230313531363131663936393136303031363062303162393030343630303136303031363034303162303331363930363135316661353635623630303136303031363034303162303331363432313031353631316663613537363034303531363366623663653633663630653031623831353236303031363030313630343031623033343231363630303438323031353236303234303136313036316235363562363030323831353136303035383131313135363131666466353736313166646636313439333435363562303336313231306435373630303238343031353436303830383430313531363132303031393136303031363030313630343031623033313639303631353166613536356236303031363030313630343031623033313634323130313536313230333535373630343035313633666236636536336636306530316238313532363030313630303136303430316230333432313636303034383230313532363032343031363130363162353635623836313536313230343735373631323034353832383736313232636135363562353035623566383838313532363030363835303136303230353236303430393032303830353436306666313931363630303331373930353536303630383330313531363038303832303135313631323038303931383439313631323037623931393036313532316135363562363133326232353635623530356638393831353236303036383630313630323035323630343038313230363030323031383035343630303136303031363034303162303339303933313636303031363063303162303236303031363030313630633031623033393039333136393239303932313739303931353536313230633138343631333437633536356235663861383135323630303738373031363032303532363034303830383232303833393035353531393139323530383439313862393137663336366433333663306162333830646337393966303935613666383261323633323635383563353239303963633639386230396261343534303730396564353739316133313531353934353036313138326539333530353035303530353635623630303438313531363030353831313131353631323132323537363132313232363134393334353635623033363132313536353736313231333038333631333437633536356235663839383135323630303738363031363032303532363034303930323035353631323134393838363132633033353635623630303139343530353035303530353036313138326535363562383035313630343035313633313730636339333336306532316238313532363130363162393139303630303430313631346163363536356237666539323534366436393839353064646433383931306432653135656431643932336364306137623364646539653261366133663338303536353535396362303039303536356236303430383035313630363038303832303138333532356638303833353236303230383330313532393138313031393139303931353236303430353136333036663832353335363065343162383135323633666666666666666638333136363030343832303135323566393038313930363030353630303136303939316230313930363336663832353335303930363032343031356636303430353138303833303338313836356166613135383031353631323166613537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313232323139313930383130313930363135323361353635623931353039313530383036313232343335373630343035313633366232663139653936306530316238313532363030343031363034303531383039313033393066643562383135313135363132323639353738313531363034303531363336626135383961353630653031623831353236303034383130313931393039313532363032343031363130363162353635623630323038323031353136303031363030313630613031623033313631353631323239613537383136303230303135313630343035313632346465373564363065333162383135323630303430313631303631623931393036313438323735363562353039323931353035303536356235663830363132326162363132353834353635623566393338343532363030353031363032303532353035303630343039303230353436303031363030313630613031623033313631353135393035363562363034303531363330366638323533353630653431623831353236336666666666666666383231363630303438323031353235663930383139303831393036303035363030313630393931623031393036333666383235333530393036303234303135663630343035313830383330333831383635616661313538303135363132333135353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631323333633931393038313031393036313532336135363562393135303931353038303631323335653537363034303531363336623266313965393630653031623831353236303034303136303430353138303931303339306664356236303035363030313630393931623031363030313630303136306130316230333136363334323133636637383630343035313831363366666666666666663136363065303162383135323630303430313630323036303430353138303833303338313836356166613135383031353631323361313537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313233633539313930363134633161353635623832353131343631323365623537383135313630343035313633366261353839613536306530316238313532363030343831303139313930393135323630323430313631303631623536356236303230383230313531363030313630303136306130316230333136313536313234316335373831363032303031353136303430353136323464653735643630653331623831353236303034303136313036316239313930363134383237353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363330383863323436333835363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313234353939313930363134633038353635623630343038303531383038333033383138363561663431353830313536313234373335373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132343937393139303631353263613536356239313530393135303831383731343631323462653537363034303531363330383939333862333630653131623831353236303034383130313838393035323630323430313631303631623536356235663631323463373631323538343536356235663839383135323630303538323031363032303532363034303930323036303031303135343930393135303630303136303031363034303162303339303831313639303833313631313135363132353561353735663838383135323630303538323031363032303930383135323630343039313832393032303630303130313830353436303031363030313630343031623033313931363630303136303031363034303162303338363136393038313137393039313535393135313931383235323839393137666563343431343865386666323731663264306261636566313134323135346162616362306162623361323965623365623530653263613937653836643034333539313031363034303531383039313033393061323631323537393536356235663838383135323630303538323031363032303532363034303930323036303031303135343630303136303031363034303162303331363931353035623530393639353530353035303530353035303536356237663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303039303536356235663830363132356232363132353834353635623930353035663631323562653836363133356666353635623930353036313235633938363631323261313536356236313235643835373630303139323530353035303631313832653536356235663836383135323630303538333031363032303532363034303930323035343630303136303031363061303162303331363333313436313235666435373333363131336131353635623566383638313532363030353833303136303230353236303430393032303534363061303832303135313631323632633931363030313630623031623930303436303031363030313630343031623033313639303631353166613536356236303031363030313630343031623033313638313630633030313531363030313630303136303430316230333136313031353631323637333537363063303831303135313630343035313633666236636536336636306530316238313532363030313630303136303430316230333930393131363630303438323031353236303234303136313036316235363562356638353135363132363862353736313236383438373836363132326361353635623930353036313236613935363562353035663836383135323630303538333031363032303532363034303930323036303031303135343630303136303031363034303162303331363562363030343833303135343630343038333031353135663931363030313630303136306130316230333136393036333466323234323966393036313236636539303631313264353536356236306130383630313531363063303837303135313630343035313630303136303031363065303162303331393630653038363930316231363831353236313236666539333932393138323931383939303630303430313631353265643536356236303230363034303531383038333033383138363561666131353830313536313237313935373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132373364393139303631346331613536356239303530383038343630303830313566386138313532363032303031393038313532363032303031356632303566383238323534363132373631393139303631346563333536356239303931353535303530313531353937393635303530353035303530353035303536356237663962373739623137343232643064663932323233303138623332623464316661343665303731373233643638313765323438366430303362656363353566303038303534363030313139303136313237623735373630343035313633336565356165623536306530316238313532363030343031363034303531383039313033393066643562363030323930353535363562356636313237633636313436663135363562356636313237636636313231373235363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f36333265343363656235363132376636383836313231393635363562363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313238313639313930363134633038353635623630343038303531383038333033383138363561663431353830313536313238333035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132383534393139303631353133333536356239313530393135303830313536313238376235373630343035313633326430373133353336306530316238313532383131353135363030343832303135323630323430313631303631623536356235663832383135323630303738343031363032303532363034303830383232303831353136306530383130313930393235323830353438323930363066663136363030353831313131353631323861633537363132386163363134393334353635623630303538313131313536313238626435373631323862643631343933343536356238313532363032303031363030313832303138303534363132386431393036313461393435363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631323866643930363134613934353635623830313536313239343835373830363031663130363132393166353736313031303038303833353430343032383335323931363032303031393136313239343835363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363132393262353738323930303336303166313638323031393135623530353035303931383335323530353036303032383230313534363030313630303136303430316230333830383231363630323038343031353236303031363034303162383230343831313636303430383430313532363030313630383031623832303438313136363036303834303135323630303136306330316239303931303438313136363038303833303135323630303339323833303135343136363061303930393130313532393039313530383135313630303538313131313536313239623335373631323962333631343933343536356231343135383031353631323964343537353036303031383135313630303538313131313536313239643135373631323964313631343933343536356231343135356231353631323966353537383035313630343035313633313730636339333336306532316238313532363130363162393139303630303430313631346163363536356236303033383135313630303538313131313536313261306135373631326130613631343933343536356230333631326131383537363030343831353236313261316435363562363030353831353235623833363030383031383136303230303135313630343035313631326133333931393036313464396635363562393038313532363034303830353136303230393238313930303338333031393032303566393038313930353538353831353236303037383730313930393235323930323038313531383135343833393239313930383239303630666631393136363030313833363030353831313131353631326137373537363132613737363134393334353635623032313739303535353036303230383230313531363030313832303139303631326139303930383236313464663435363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353830353136303035383131313135363132623335353736313262333536313439333435363562363034303531383439303766316330386535393635366631613138646332646137363832366364633532383035633433653839376131376335306661656662386162336331353236636331363930356639306133393139363931393535303930393335303530353035303536356236303430353136333237616435353564363065313162383135323630303136303031363061303162303338333136363030343832303135323630323438313031383239303532363030313630303136303939316230313930363334663561616162613930363034343031356636303430353138303833303338313566383738303362313538303135363132626238353735663830666435623530356166313135383031353631313133313537336435663830336533643566666435623631313631393630303136303031363061303162303338333136383236313338643735363562363030313766396237373962313734323264306466393232323330313862333262346431666134366530373137323364363831376532343836643030336265636335356630303535353635623566363132633063363132353834353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631326334353537363132633435363134393334353635623630303338313131313536313263353635373631326335363631343933343536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313832303135343630343038303833303139313930393135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353238313031353139303931353036313263636136313339366135363562383236303830303135313631326364393931393036313531666135363562363030313630303136303430316230333136343231303135363132643064353736303430353136336662366365363366363065303162383135323630303136303031363034303162303334323136363030343832303135323630323430313631303631623536356235663834383135323630303638343031363032303930383135323630343038303833323038303534363030313630303136306138316230333139313638313535363030313831303138343930353536303032303138333930353536303037383630313930393135323831323038303534393038323930353539303830383231353631326463383537356638343831353236303035383730313630323035323630343039303230353436313237313039303631326437613930363030313630613031623930303436316666666631363835363134656638353635623631326438343931393036313530633535363562393135303831383636303038303135663836383135323630323030313930383135323630323030313566323035663832383235343631326461383931393036313465633335363562393039313535353036313264623839303530383238343631353331623536356239303530363132646338383536303230303135313832363132623663353635623631326464643835363032303031353136313066663838373630363030313531363131326435353635623630343038303531383238313532363032303831303138343930353238353931383939313766386563656366353130303730633332306439613535333233666661626533353065323934616535303566633063353039646335373336646136663563633939333931303136303430353138303931303339306133353035303530353035303530353035363562356638303631326532643631323538343536356236303032383130313534393039313530363166666666363030313630343031623930393130343831313639303836313631303830363132653536353735303631323731303631666666663836313631313562313536313265376135373630343035313633356631326536633336306531316238313532363166666666383631363630303438323031353236303234303136313036316235363562363030323831303135343630303136303031363034303162303339303831313639303835313631303135363132656236353736303430353136323032613036643630653131623831353236303031363030313630343031623033383531363630303438323031353236303234303136313036316235363562383035343833313038303631326563383537353038303630303130313534383331313562313536313265653935373630343035313633323232643136343336306532316238313532363030343831303138343930353236303234303136313036316235363562383235663631326566343832363130656665353635623930353035663631326630313839383336313339383535363562393035303630343035313830363038303031363034303532383036313266313533333930353635623630303136303031363061303162303339303831313638323532363166666666383038633136363032303830383530313931393039313532363030313630303136303430316230333830386431363630343038303837303139313930393135323566363036303936383730313831393035323838383135323630303539303962303138333532393938613930323038363531383135343933383830313531396238383031353138333136363030313630623031623032363766666666666666666666666666666666363062303162313939633930393531363630303136306130316230323630303136303031363062303162303331393930393431363935313639343930393431373931393039313137393839303938313631373831353539313031353136303031393039313031383035343931393039353136363030313630303136303430316230333139393039313136313739303933353535303930393135303530393439333530353035303530353635623631326664373631336635323536356236313130306138313631336639643536356235663830363132666561363132353834353635623930353035663631326666363834363130656665353635623930353035663631333030323837363131636232353635623930353036313330306438373631323261313536356236313330326435373630343035313633333065666139386236306530316238313532363030343831303138383930353236303234303136313036316235363562363030323831353136303035383131313135363133303432353736313330343236313439333435363562313436313330363335373830353136303430353136333137306363393333363065323162383135323631303631623931393036303034303136313461633635363562356638323832363038303031353136313330373439313930363135316661353635623930353038333630303230313630306139303534393036313031303030613930303436303031363030313630343031623033313638323630343030313531363133303964393139303631353332653536356236303031363030313630343031623033313638313630303136303031363034303162303331363131313536313330646135373630343035313633366435316665303536306531316238313532363030313630303136303430316230333832313636303034383230313532363032343031363130363162353635623566383036313330653638613834363133326232353635623931353039313530356638613833363034303531363032303031363133313134393239313930393138323532363063303162363030313630303136306330316230333139313636303230383230313532363032383031393035363562363034303830353136303166313938313834303330313831353238323832353238303531363032303930393130313230363065303833303139303931353239313530383036303031383135323630303136303031363061303162303338633136363032303830383330313931393039313532363034303830383330313866393035323630303136303031363034303162303338303862313636303630383530313532356636303830383530313831393035323930383831363630613038353031353236306330393039333031383339303532383438333532363030363862303139303931353239303230383135313831353438323930363066663139313636303031383336303033383131313135363133316137353736313331613736313439333435363562303231373930353535303630323038323831303135313832353436313031303036303031363061383162303331393136363130313030363030313630303136306130316230333932383331363032313738333535363034303830383530313531363030313835303135353630363038303836303135313630303239303935303138303534363038303830383930313531363061303861303135313630633039303961303135313630303136303031363034303162303339393861313636303031363030313630383031623033313939303934313639333930393331373630303136303430316239313861313639313930393130323137363030313630303136303830316230333136363030313630383031623939383931363939393039393032363030313630303136306330316230333136393839303938313736303031363063303162393138383136393139303931303231373930353538313531383938363136383135323861383631363934383130313934393039343532393338623136393038333031353239313831303138353930353239303863313639313864393138343931376662303032346232363362633361306237323861366564656135306136396566613834313138396638643332656538616639643163326231613161323233343236393130313630343035313830393130333930613439613939353035303530353035303530353035303530353035363562356638303566363133326264363132313732353635623566383638313532363030373832303136303230353236303430393032303630303230313534393039313530363030313630383031623930303436303031363030313630343031623033313636313332656438353832363134303131353635623566363133326637383736313432333635363562356638383831353236303037383530313630323035323630343038303832323036303032303138303534363766666666666666666666666666666666363038303162313931363630303136303830316236303031363030313630343031623033386338313136393138323032393239303932313739303932353539313531363334326132653062353630653131623831353236303034383130313863393035323931383431363630323438333031353236303434383230313532393139323530393036303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363338353435633136613930363036343031356636303430353138303833303338313836356166343135383031353631333361303537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313333633739313930383130313930363134626437353635623630343035313832363366666666666666663136363065303162383135323630303430313631333365333931393036313463303835363562363032303630343035313830383330333831356638373561663131353830313536313333666635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363133343233393139303631346331613536356236303430383035313630303136303031363034303162303338613831313638323532363032303832303138343930353238323531393339343530383531363932386239323766303764653566663335613637346138303035653636316633333333633930376361363333333436323830383736326431396463376233616262316138633164663932383239303033303139306133393039343530393235303530353035623932353039323930353035363562356638303631333438363631323538343536356239303530356636313334393638343630343030313531363131636232353635623930353035663630303338323531363030353831313131353631333461653537363133346165363134393334353635623134383036313334636335373530363030343832353136303035383131313135363133346361353736313334636136313439333435363562313435623135363133346463353735303630633038313031353136313335313935363562363030323832353136303035383131313135363133346631353736313334663136313439333435363562303336313334666435373530343236313335313935363562383135313630343035313633313730636339333336306532316238313532363130363162393139303630303430313631346163363536356238343630383030313531363030313630303136303430316230333136383136303031363030313630343031623033313631313631333534303537353035663934393335303530353035303536356236303034383330313534363036303836303135313630303136303031363061303162303339303931313639303633346632323432396639303631333536353930363131326435353635623630613038353031353136303830383930313531363034303830386230313531356639303831353236303035386130313630323035323831393032303630303130313534393035313630303136303031363065303162303331393630653038373930316231363831353236313335623739343933393239313838393136303031363030313630343031623033393039313136393036303034303136313532656435363562363032303630343035313830383330333831383635616661313538303135363133356432353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631333566363931393036313463316135363562393539343530353035303530353035363562363133363037363134366631353635623566363133363130363132313732353635623566383438313532363030373832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030353831313131353631333634393537363133363439363134393334353635623630303538313131313536313336356135373631333635613631343933343536356238313532363032303031363030313832303138303534363133363665393036313461393435363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631333639613930363134613934353635623830313536313336653535373830363031663130363133366263353736313031303038303833353430343032383335323931363032303031393136313336653535363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363133366338353738323930303336303166313638323031393135623530353035303931383335323530353036303032383238313031353436303031363030313630343031623033383038323136363032303835303135323630303136303430316238323034383131363630343038353031353236303031363038303162383230343831313636303630383530313532363030313630633031623930393130343831313636303830383430313532363030333930393330313534393039323136363061303930393130313532393039313530383135313630303538313131313536313337353335373631333735333631343933343536356231343631333738363537356638343831353236303037383330313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130363162393136306666313639303630303430313631346163363536356236303033383135323432363030313630303136303430316230333136363063303832303135323566383438313532363030373833303136303230353236303430393032303831353138313534383339323931393038323930363066663139313636303031383336303035383131313135363133376361353736313337636136313439333435363562303231373930353535303630323038323031353136303031383230313930363133376533393038323631346466343536356235303630343038323031353136303032383230313830353436303630383530313531363038303836303135313630613038373031353136303031363030313630343031623033393538363136363030313630303136303830316230333139393039343136393339303933313736303031363034303162393238363136393239303932303239313930393131373630303136303031363038303162303331363630303136303830316239313835313639313930393130323630303136303031363063303162303331363137363030313630633031623931383431363931393039313032313739303535363063303930393230313531363030333930393130313830353436303031363030313630343031623033313931363931393039323136313739303535356636313338383038353832363133326232353635623630383038343031353136303430383035313630303136303031363034303162303339303932313638323532343236303230383330313532393139333530383339323530383739313766313364353833393463663236396434386263663932373935396132396135666665653763393932346461666666383932376563646633633438666661376336373931303136303430353138303931303339306133353039333932353035303530353635623830343731303135363133386661353733303630343035313633636437383630353936306530316238313532363030343031363130363162393139303631343832373536356235663832363030313630303136306130316230333136383236303430353135663630343035313830383330333831383538373561663139323530353035303364383035663831313436313339343335373630343035313931353036303166313936303366336430313136383230313630343035323364383235323364356636303230383430313365363133393438353635623630363039313530356235303530393035303830363130363234353736303430353136333061313266353231363065313162383135323630303430313630343035313830393130333930666435623566363133393733363132313732353635623630303130313534363030313630303136303430316230333136393139303530353635623566363133393865363132313732353635623630303930313534363066663136363133396232353736303430353136333766616238316535363065303162383135323630303430313630343035313830393130333930666435623566363133396262363132313732353635623930353034323631333963653630363038363031363034303837303136313438393035363562363030313630303136303430316230333136313131353830363133613038353735303631333965633632303261333030343236313465633335363562363133396663363036303836303136303430383730313631343839303536356236303031363030313630343031623033313631303135356231353631336134323537363133613164363036303835303136303430383630313631343839303536356236303430353136333538373964613133363065313162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130363162353635623631336135373631336135323630363038363031383636313533353935363562363134323966353635623631336136373631336135323630383038363031383636313533353935363562363033303631336137363630323038363031383636313533366435363562393035303134363133616138353736313361386136303230383530313835363135333664353635623630343035313633323634373562326636306531316238313532363130363162393235303630303430313930383135323630323030313930353635623631336162323834383036313533366435363562393035303566303336313361646635373631336163343834383036313533366435363562363034303531363333653038613132353630653131623831353236303034303136313036316239323931393036313533616635363562356636303038383230313631336165653836383036313533366435363562363034303531363133616663393239313930363135316562353635623930383135323630323030313630343035313830393130333930323035343134363133623335353736313362316138343830363135333664353635623630343035313633613431663737326636306530316238313532363030343031363130363162393239313930363135336166353635623631336233663833356636313430313135363562363034303830353136306530383130313930393135323831353438313532356639303831393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363365303437623238333930363032303831303136313362376338613830363135333664353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323039303831303139303631336263343930386230313862363135333664353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323030313631336330643630363038623031363034303863303136313438393035363562363030313630303136303430316230333136383135323630323030313631336332383630363038623031386236313533353935363562363133633331393036313533633235363562383135323630323030313631336334333630383038623031386236313533353935363562363133633463393036313533633235363562383135323630323030313838363030313630303136303430316230333136383135323530363034303531383236336666666666666666313636306530316238313532363030343031363133633761393139303631353465343536356235663630343035313830383330333831383635616634313538303135363133633934353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631336362623931393038313031393036313535396235363562356638323831353236303036383630313630323035323630343039303230393139333530393135303631336364393832383236313464663435363562353038313630303838343031363133636539383838303631353336643536356236303430353136313363663739323931393036313531656235363562393038313532363034303531393038313930303336303230303138313230393139303931353536336565356234386562363065303162383135323566393036303035363030313630393931623031393036336565356234386562393036313364333339303835393036303034303136313463303835363562363032303630343035313830383330333831356638373561663131353830313536313364346635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363133643733393139303631346331613536356236303430383035313630653038313031393039313532393039313530383036303031383135323630323030313631336439333839383036313533366435363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303138323930353235303933383535323530353035303630303136303031363034303162303338393136363032303830383430313832393035323630343038303835303138343930353236303630383530313932393039323532363038303834303138333930353236306130393039333031383239303532383638323532363030373838303139303932353232303831353138313534383239303630666631393136363030313833363030353831313131353631336532323537363133653232363134393334353635623032313739303535353036303230383230313531363030313832303139303631336533623930383236313464663435363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353830363133656438383838303631353336643536356236303430353136313365653639323931393036313531656235363562363034303531383039313033393032303834376662373732393765336265666336393162666338363461383165323431663833653265663732326236653762656361613265636563323530633664353262343330383938623630343030313630323038313031393036313366323439313930363134383930353635623630343038303531363030313630303136303430316230333933383431363831353239323930393131363630323038333031353230313630343035313830393130333930613435303930393539343530353035303530353035363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030353436303031363034303162393030343630666631363631336639623537363034303531363331616663643739663630653331623831353236303034303136303430353138303931303339306664356235363562363133666135363133663532353635623631336661653831363134343038353635623631336662363631343432313536356236313130306136303630383230313335363038303833303133353631336664333630633038353031363061303836303136313438393035363562363133666533363065303836303136306330383730313631353564653536356236313366663436313031303038373031363065303838303136313535663735363562363130313030383730313335363134303063363130313430383930313631303132303861303136313463343535363562363134343331353635623566363134303161363132313732353635623930353035663832363030313630303136303430316230333136383436303031363030313630343031623033313631313135363134303438353736313430343138333835363135323161353635623930353036313430353535363562363134303532383438343631353231613536356239303530356236303430383035313630383038313031383235323630303238343031353438303832353236303033383530313534363032303833303135323630303438353031353439323832303139323930393235323630303538343031353436303031363030313630343031623033313636303630383230313532343239313135383036313430623735373530363030313834303135343831353136313430623339313630303136303031363034303162303331363930363134656333353635623832313031353562313536313430646435373630303136303031363034303162303338333136363036303832303135323831383135323630343038313031353136303230383230313532363134306663353635623832383136303630303138313831353136313430656639313930363135316661353635623630303136303031363034303162303331363930353235303562363036303831303135313631343130633930363036343631353332653536356236303230383230313531363030313836303135343630303136303031363034303162303339323930393231363931363134313337393139303630303136303430316239303034363066663136363134656638353635623130313536313431363735373630363038313031353136303430353136336466616538383031363065303162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130363162353635623835363030313630303136303430316230333136383136303430303138313831353136313431383239313930363134656333353635623930353235303630343038313031383035313630303136303031363034303162303338373136393139303631343161323930383339303631353331623536356239303532353036303031383430313534363034303832303135313630363439313631343163373931363030313630343031623930393130343630666631363930363134656638353635623130313536313431656535373830363034303031353136303430353136333539343333313766363065303162383135323630303430313631303631623931383135323630323030313930353635623830353136303032383530313535363032303831303135313630303338353031353536303430383130313531363030343835303135353630363030313531363030353930393330313830353436303031363030313630343031623033313931363630303136303031363034303162303339303934313639333930393331373930393235353530353035303530353635623566383036313432343036313231373235363562356638343831353236303037383230313630323035323630343039303230363030323031383035343931393235303930363030383930363134323734393036303031363034303162393030343630303136303031363034303162303331363631353631373536356239313930363130313030306138313534383136303031363030313630343031623033303231393136393038333630303136303031363034303162303331363032313739303535393135303530393139303530353635623631343261633630323038323031383236313438336235363562363366666666666666663136313538303135363134326363353735303631343263373630323038323031383236313463363035363562313531353930353035623135363134333133353736313432646536303230383230313832363134383362353635623631343265623630323038333031383336313463363035363562363034303531363363303861306631643630653031623831353236336666666666666666393039333136363030343834303135323630323438333031353235303630343430313631303631623536356236313433323036303230383230313832363134633630353635623930353036313433326636303230383330313833363134383362353635623633666666666666666631363131313536313433343835373631343264653630323038323031383236313438336235363562363030313562363134333538363032303833303138333631346336303536356239303530383131303135363131363139353736313433366536303230383330313833363134633630353635623631343337393630303138343631353331623536356238313831313036313433383835373631343338383631346361353536356239303530363032303032303136303230383130313930363134333964393139303631346334353536356236303031363030313630613031623033313636313433623336303230383430313834363134633630353635623833383138313130363134336333353736313433633336313463613535363562393035303630323030323031363032303831303139303631343364383931393036313463343535363562363030313630303136306130316230333136313031353631343430303537363034303531363330646263386435663630653331623831353236303034303136303430353138303931303339306664356236303031303136313433346235363562363134343130363133663532353635623631343431383631343563373536356236313130306138313631343563663536356236313434323936313366353235363562363133663962363134366232353635623631343433393631336635323536356235663631343434323631323538343536356239303530363166666666383531363135383036313434356135373530363132373130363166666666383631363131356231353631343437653537363034303531363335663132653663333630653131623831353236316666666638363136363030343832303135323630323430313631303631623536356238363838313131353631343461323537363034303531363332323264313634333630653231623831353236303034383130313839393035323630323430313631303631623536356236306666383431363135383036313434623535373530363030613630666638353136313135623135363134346438353736303430353136333137306462333539363065333162383135323630666638353136363030343832303135323630323430313631303631623536356236313434653036313339366135363562363030313630303136303430316230333136383636303031363030313630343031623033313631303135363134353163353736303430353136323032613036643630653131623831353236303031363030313630343031623033383731363630303438323031353236303234303136313036316235363562383235663033363134353363353736303430353136336137333330303731363065303162383135323630303430313630343035313830393130333930666435623936383735353630303138373031393539303935353536303032383630313830353436303031363030313630343031623033393539303935313636396666666666666666666666666666666666666666313939303935313639343930393431373630303136303430316236316666666639343930393431363933393039333032393239303932313736376666666666666666666666666666666636303530316231393136363066663931393039313136363030313630353031623032313739303931353536303033383330313535363030343930393130313830353436303031363030313630613031623033313931363630303136303031363061303162303339303932313639313930393131373930353535363562363133663962363133663532353635623631343564373631336635323536356235663631343565303631323137323536356238323335383135353930353036303134363134356638363036303834303136303430383530313631353566373536356236306666313631313830363134363137353735303631343631323630363038333031363034303834303136313535663735363562363066663136313535623135363134363462353736313436326336303630383330313630343038343031363135356637353635623630343035313633346135396262666636306531316238313532363066663930393131363630303438323031353236303234303136313036316235363562363134363562363036303833303136303430383430313631353566373536356236303031383230313830353436306666393239303932313636303031363034303162303236306666363034303162313939303932313639313930393131373930353536313436386336303430383330313630323038343031363134383930353635623630303139313930393130313830353436303031363030313630343031623033313931363630303136303031363034303162303339303932313639313930393131373930353535303536356236313262646436313366353235363562353038303534363134366336393036313461393435363562356638323535383036303166313036313436643535373530353035363562363031663031363032303930303439303566353236303230356632303930383130313930363131303061393139303631343732653536356236303430383035313630653038313031393039313532383035663831353236303630363032303832303138313930353235663630343038333031383139303532393038323031383139303532363038303832303138313930353236306130383230313831393035323630633039303931303135323930353635623562383038323131313536313437343235373566383135353630303130313631343732663536356235303930353635623830313531353831313436313130306135373566383066643562383033353633666666666666666638313136383131343631316361643537356638306664356235663830356636303630383438363033313231353631343737383537356638306664356238333335393235303630323038343031333536313437386138313631343734363536356239313530363134373938363034303835303136313437353335363562393035303932353039323530393235363562356636303230383238343033313231353631343762313537356638306664356235303335393139303530353635623566383036303430383338353033313231353631343763393537356638306664356238323335363030313630303136303430316230333831313131353631343764653537356638306664356238333031363038303831383630333132313536313437656635373566383066643562393135303631343766643630323038343031363134373533353635623930353039323530393239303530353635623566383036303430383338353033313231353631343831373537356638306664356238323335393135303631343766643630323038343031363134373533353635623630303136303031363061303162303339313930393131363831353236303230303139303536356235663630323038323834303331323135363134383462353735663830666435623631313832653832363134373533353635623566383036303430383338353033313231353631343836353537356638306664356236313438366538333631343735333536356239343630323039333930393330313335393335303530353035363562363030313630303136303430316230333831313638313134363131303061353735663830666435623566363032303832383430333132313536313438613035373566383066643562383133353631313832653831363134383763353635623830333536316666666638313136383131343631316361643537356638306664356235663830356636303630383438363033313231353631343863653537356638306664356238333335363030313630303136303430316230333831313131353631343865333537356638306664356238343031363061303831383730333132313536313438663435373566383066643562393235303631343930323630323038353031363134386162353635623931353036303430383430313335363134393132383136313438376335363562383039313530353039323530393235303932353635623566363130313430383238343033313231353631343932653537356638306664356235303931393035303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363030363831313036313439353835373631343935383631343933343536356239303532353635623566356238333831313031353631343937363537383138313031353138333832303135323630323030313631343935653536356235303530356639313031353235363562356638313531383038343532363134393935383136303230383630313630323038363031363134393563353635623630316630313630316631393136393239303932303136303230303139323931353035303536356236303230383135323631343962623630323038323031383335313631343934383536356235663630323038333031353136306530363034303834303135323631343964363631303130303834303138323631343937653536356239303530363034303834303135313630303136303031363034303162303338303832313636303630383630313532383036303630383730313531313636303830383630313532383036303830383730313531313636306130383630313532383036306130383730313531313636306330383630313532383036306330383730313531313636306530383630313532353035303830393135303530393239313530353035363562356638303630323038333835303331323135363134613361353735663830666435623832333536303031363030313630343031623033383038323131313536313461353035373566383066643562383138353031393135303835363031663833303131323631346136333537356638306664356238313335383138313131313536313461373135373566383066643562383636303230383238353031303131313135363134613832353735663830666435623630323039323930393230313936393139353530393039333530353035303530353635623630303138313831316339303832313638303631346161383537363037663832313639313530356236303230383231303831303336313439326535373633346534383762373136306530316235663532363032323630303435323630323435666664356236303230383130313631306634633832383436313439343835363562363334653438376237313630653031623566353236303431363030343532363032343566666435623630343035313630363038313031363030313630303136303430316230333831313138323832313031373135363134623061353736313462306136313461643435363562363034303532393035363562363034303830353139303831303136303031363030313630343031623033383131313832383231303137313536313462306135373631346230613631346164343536356236303430353136303166383230313630316631393136383130313630303136303031363034303162303338313131383238323130313731353631346235613537363134623561363134616434353635623630343035323931393035303536356235663630303136303031363034303162303338323131313536313462376135373631346237613631346164343536356235303630316630313630316631393136363032303031393035363562356638323630316638333031313236313462393735373566383066643562383135313631346261613631346261353832363134623632353635623631346233323536356238313831353238343630323038333836303130313131313536313462626535373566383066643562363134626366383236303230383330313630323038373031363134393563353635623934393335303530353035303536356235663630323038323834303331323135363134626537353735663830666435623831353136303031363030313630343031623033383131313135363134626663353735663830666435623631346263663834383238353031363134623838353635623630323038313532356636313138326536303230383330313834363134393765353635623566363032303832383430333132313536313463326135373566383066643562353035313931393035303536356236303031363030313630613031623033383131363831313436313130306135373566383066643562356636303230383238343033313231353631346335353537356638306664356238313335363131383265383136313463333135363562356638303833333536303165313938343336303330313831313236313463373535373566383066643562383330313830333539313530363030313630303136303430316230333832313131353631346338653537356638306664356236303230303139313530363030353831393031623336303338323133313536313334373535373566383066643562363334653438376237313630653031623566353236303332363030343532363032343566666435623566383233353630356531393833333630333031383131323631346363643537356638306664356239313930393130313932393135303530353635623566383236303166383330313132363134636536353735663830666435623831333536313463663436313462613538323631346236323536356238313831353238343630323038333836303130313131313536313464303835373566383066643562383136303230383530313630323038333031333735663931383130313630323030313931393039313532393339323530353035303536356235663630363038323336303331323135363134643334353735663830666435623631346433633631346165383536356238323335363030313630303136303430316230333830383231313135363134643532353735663830666435623631346435653336383338373031363134636437353635623833353236303230383530313335393135303830383231313135363134643733353735663830666435623530363134643830333638323836303136313463643735363562363032303833303135323530363034303833303133353631346439343831363134383763353635623630343038323031353239323931353035303536356235663832353136313463636438313834363032303837303136313439356335363562363031663832313131353631303632343537383035663532363032303566323036303166383430313630303531633831303136303230383531303135363134646435353735303830356236303166383430313630303531633832303139313530356238313831313031353631316138653537356638313535363030313031363134646531353635623831353136303031363030313630343031623033383131313135363134653064353736313465306436313461643435363562363134653231383136313465316238343534363134613934353635623834363134646230353635623630323038303630316638333131363030313831313436313465353435373566383431353631346533643537353038353833303135313562356631393630303338363930316231633139313636303031383539303162313738353535363131313331353635623566383538313532363032303831323036303166313938363136393135623832383131303135363134653832353738383836303135313832353539343834303139343630303139303931303139303834303136313465363335363562353038353832313031353631346539663537383738353031353135663139363030333838393031623630663831363163313931363831353535623530353035303530353036303031393038313162303139303535353035363562363334653438376237313630653031623566353236303131363030343532363032343566666435623830383230313830383231313135363130663463353736313066346336313465616635363562356636336666666666666666383038333136383138313033363134656565353736313465656536313465616635363562363030313031393339323530353035303536356238303832303238313135383238323034383431343137363130663463353736313066346336313465616635363562356638303833333536303165313938343336303330313831313236313466323435373566383066643562383330313630323038313031393235303335393035303630303136303031363034303162303338313131313536313466343235373566383066643562383033363033383231333135363133343735353735663830666435623831383335323831383136303230383530313337353035663832383230313630323039303831303139313930393135323630316639303931303136303166313931363930393130313031393035363562356638333833383535323630323038303836303139353530383038353630303531623833303130313834356635623837383131303135363135303264353738343833303336303166313930313839353238313335333638383930303336303565313930313831313236313466623435373566383066643562383730313630363036313466633238323830363134663066353635623832383735323631346664323833383830313832383436313466353035363562393235303530353036313466653238363833303138333631346630663536356238363833303338383838303135323631346666343833383238343631346635303536356239323530353035303630343038303833303133353932353036313530303938333631343837633536356236303031363030313630343031623033393239303932313639343930393130313933393039333532393738333031393739303833303139303630303130313631346638663536356235303930393739363530353035303530353035303530353635623630323038313532383133353630323038323031353236303230383230313335363034303832303135323566363034303833303133353631353035653831363134633331353635623630303136303031363061303162303331363630363038333831303139313930393135323833303133353336383439303033363031653139303138313132363135303835353735663830666435623833303136303230383130313930333536303031363030313630343031623033383131313135363135306130353735663830666435623830363030353162333630333832313331353631353062313537356638306664356236303830383038353031353236313335663636306130383530313832383436313466373835363562356638323631353064663537363334653438376237313630653031623566353236303132363030343532363032343566666435623530303439303536356236303230383130313630303438333130363135306638353736313530663836313439333435363562393139303532393035363562356638303566363036303834383630333132313536313531313035373566383066643562383335313932353036303230383430313531363135313232383136313438376335363562363034303835303135313930393235303631343931323831363134383763353635623566383036303430383338353033313231353631353134343537356638306664356238323531393135303630323038333031353136313531353638313631343734363536356238303931353035303932353039323930353035363562356636303230383038333532356638343534363135313733383136313461393435363562383036303230383730313532363034303630303138303834313635663831313436313531393435373630303138313134363135316230353736313531646435363562363066663139383531363630343038613031353236303430383431353135363030353162386130313031393535303631353164643536356238393566353236303230356632303566356238353831313031353631353164343537383135343862383230313836303135323930383330313930383830313631353162393536356238613031363034303031393635303530356235303933393839373530353035303530353035303530353035363562383138333832333735663931303139303831353239313930353035363562363030313630303136303430316230333831383131363833383231363031393038303832313131353631323239613537363132323961363134656166353635623630303136303031363034303162303338323831313638323832313630333930383038323131313536313232396135373631323239613631346561663536356235663830363034303833383530333132313536313532346235373566383066643562383235313630303136303031363034303162303338303832313131353631353236313537356638306664356239303834303139303630363038323837303331323135363135323734353735663830666435623631353237633631346165383536356238323531383135323630323038333031353136313532386538313631346333313536356236303230383230313532363034303833303135313832383131313135363135326134353735663830666435623631353262303838383238363031363134623838353635623630343038333031353235303830393435303530353035303630323038333031353136313531353638313631343734363536356235663830363034303833383530333132313536313532646235373566383066643562383235313931353036303230383330313531363135313536383136313438376335363562393438353532363030313630303136303430316230333933383431363630323038363031353239313833313636303430383530313532383231363630363038343031353231363630383038323031353236306130303139303536356238313831303338313831313131353631306634633537363130663463363134656166353635623630303136303031363034303162303338313831313638333832313630323830383231363931393038323831313436313533353135373631353335313631346561663536356235303530393239313530353035363562356638323335363033653139383333363033303138313132363134636364353735663830666435623566383038333335363031653139383433363033303138313132363135333832353735663830666435623833303138303335393135303630303136303031363034303162303338323131313536313533396235373566383066643562363032303031393135303336383139303033383231333135363133343735353735663830666435623630323038313532356636313462636636303230383330313834383636313466353035363562356636303430383233363033313231353631353364323537356638306664356236313533646136313462313035363562363135336533383336313437353335363562383135323630323038303834303133353630303136303031363034303162303338303832313131353631353366663537356638306664356239303835303139303336363031663833303131323631353431313537356638306664356238313335383138313131313536313534323335373631353432333631346164343536356238303630303531623931353036313534333438343833303136313462333235363562383138313532393138333031383430313931383438313031393033363834313131353631353434643537356638306664356239333835303139333562383338353130313536313534373735373834333539323530363135343637383336313463333135363562383238323532393338353031393339303835303139303631353435323536356239343836303139343930393435323530393239353934353035303530353035303536356235663630343038333031363366666666666666663833353131363834353236303230383038343031353136303430363032303837303135323832383135313830383535323630363038383031393135303630323038333031393435303566393235303562383038333130313536313235373935373834353136303031363030313630613031623033313638323532393338333031393336303031393239303932303139313930383330313930363135346262353635623630323038313532383135313630323038323031353235663630323038333031353136306530363034303834303135323631353530613631303130303834303138323631343937653536356239303530363034303834303135313630316631393830383538343033303136303630383630313532363135353238383338333631343937653536356239323530363030313630303136303430316230333630363038373031353131363630383038363031353236303830383630313531393135303830383538343033303136306130383630313532363135353538383338333631353438393536356239323530363061303836303135313931353038303835383430333031363063303836303135323530363135353736383238323631353438393536356239313530353036306330383430313531363135353933363065303835303138323630303136303031363034303162303331363930353235363562353039333932353035303530353635623566383036303430383338353033313231353631353561633537356638306664356238323531393135303630323038333031353136303031363030313630343031623033383131313135363135356338353735663830666435623631353564343835383238363031363134623838353635623931353035303932353039323930353035363562356636303230383238343033313231353631353565653537356638306664356236313138326538323631343861623536356235663630323038323834303331323135363135363037353735663830666435623831333536306666383131363831313436313138326535373566383066643562356636303031363030313630343031623033383038333136383138313033363134656565353736313465656536313465616635366665613136343733366636633633343330303038313930303061", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 26d2e2aa7..451aadd9f 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -79,8 +79,8 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161395638038061395683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6138098061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b61461028b578063d588c18f14610293578063d5f20ff6146102a6578063df93d8de146102c6578063f2fde38b146102d0578063fd7ac5e7146102e3575f80fd5b80639ba96b861461021d578063a3a65e4814610230578063b771b3bc14610243578063bc5fbfec14610251578063bee0a03f14610278575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d41461020a575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b610149610144366004612be2565b6102f6565b005b610149610159366004612c11565b610502565b61014961016c366004612c5f565b610a00565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a1366004612be2565b610a0e565b6040516001600160401b03909116815260200161018a565b610149610a22565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b6101fd610a35565b60405161018a9190612c78565b610149610218366004612be2565b610a63565b6101cd61022b366004612ca2565b610a78565b61014961023e366004612c5f565b610a94565b6101fd6005600160991b0181565b6101cd7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b610149610286366004612be2565b610c1a565b6101e3601481565b6101496102a1366004612cfb565b610d37565b6102b96102b4366004612be2565b610e44565b60405161018a9190612db8565b6101a66202a30081565b6101496102de366004612e38565b610f86565b6101cd6102f1366004612e5a565b610fc3565b5f6102ff610ffb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561033857610338612d37565b600581111561034957610349612d37565b815260200160018201805461035d90612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461038990612ec5565b80156103d45780601f106103ab576101008083540402835291602001916103d4565b820191905f5260205f20905b8154815290600101906020018083116103b757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561043f5761043f612d37565b1461047b575f8381526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb6104a08584606001515f61101f565b6040518263ffffffff1660e01b81526004016104bc9190612f0b565b6020604051808303815f875af11580156104d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fc9190612f1d565b50505050565b5f61050b610ffb565b600981015490915060ff161561053457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610577573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059b9190612f1d565b8360200135146105c4576040516372b0a7e760e11b815260208401356004820152602401610472565b306105d56060850160408601612e38565b6001600160a01b03161461060d576105f36060840160408501612e38565b604051632f88120d60e21b81526004016104729190612c78565b5f61061b6060850185612f34565b905090505f805b828163ffffffff161015610902575f61063e6060880188612f34565b8363ffffffff1681811061065457610654612f79565b90506020028101906106669190612f8d565b61066f906130b1565b80516040519192505f9160088801916106879161312a565b908152602001604051809103902054146106b757805160405163a41f772f60e01b81526104729190600401612f0b565b5f6002885f0135846040516020016106e692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107009161312a565b602060405180830381855afa15801561071b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061073e9190612f1d565b90508086600801835f0151604051610756919061312a565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156107d8576107d8612d37565b0217905550602082015160018201906107f19082613186565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610895911685613259565b82516040519195506108a69161312a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806108fb9061326c565b9050610622565b5060048301819055600183015460649061092690600160401b900460ff168361328e565b101561094857604051635943317f60e01b815260048101829052602401610472565b5f61095e6109558661106e565b60400151611179565b90505f61096a87611306565b90505f60028260405161097d919061312a565b602060405180830381855afa158015610998573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109bb9190612f1d565b90508281146109e757604051631872fc8d60e01b81526004810182905260248101849052604401610472565b5050506009909201805460ff1916600117905550505050565b610a09816114db565b505050565b5f610a1882610e44565b6080015192915050565b610a2a611815565b610a335f611847565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b610a6b611815565b610a74816118b7565b5050565b5f610a81611815565b610a8b8383611b8f565b90505b92915050565b5f610a9d610ffb565b90505f80610ab6610aad8561106e565b604001516120ec565b9150915080610adc57604051632d07135360e01b81528115156004820152602401610472565b5f82815260068401602052604090208054610af690612ec5565b90505f03610b1a5760405163089938b360e11b815260048101839052602401610472565b60015f83815260078501602052604090205460ff166005811115610b4057610b40612d37565b14610b73575f8281526007840160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f8281526006840160205260408120610b8b91612b56565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f610c23610ffb565b5f8381526006820160205260409020805491925090610c4190612ec5565b90505f03610c655760405163089938b360e11b815260048101839052602401610472565b60015f83815260078301602052604090205460ff166005811115610c8b57610c8b612d37565b14610cbe575f8281526007820160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610cf791906004016132a5565b6020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a099190612f1d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610d7b5750825b90505f826001600160401b03166001148015610d965750303b155b905081158015610da4575080155b15610dc25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610deb57845460ff60401b1916600160401b1785555b610df587876122a8565b8315610e3b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610e4c612b8d565b5f610e55610ffb565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff166005811115610e8c57610e8c612d37565b6005811115610e9d57610e9d612d37565b8152602001600182018054610eb190612ec5565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90612ec5565b8015610f285780601f10610eff57610100808354040283529160200191610f28565b820191905f5260205f20905b815481529060010190602001808311610f0b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b610f8e611815565b6001600160a01b038116610fb7575f604051631e4fbdf760e01b81526004016104729190612c78565b610fc081611847565b50565b5f80610fcd610ffb565b9050806008018484604051610fe392919061332f565b90815260200160405180910390205491505092915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156110d2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110f9919081019061334d565b915091508061111b57604051636b2f19e960e01b815260040160405180910390fd5b815115611141578151604051636ba589a560e01b81526004810191909152602401610472565b60208201516001600160a01b031615611172578160200151604051624de75d60e31b81526004016104729190612c78565b5092915050565b5f81516026146111ae57815160405163cc92daa160e01b815263ffffffff909116600482015260266024820152604401610472565b5f805b60028110156111fd576111c581600161341f565b6111d090600861328e565b61ffff168482815181106111e6576111e6612f79565b016020015160f81c901b91909117906001016111b1565b5061ffff8116156112275760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156112825761123e81600361341f565b61124990600861328e565b63ffffffff168561125b836002613259565b8151811061126b5761126b612f79565b016020015160f81c901b919091179060010161122a565b5063ffffffff8116156112a857604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156112fd576112bf81601f61341f565b6112ca90600861328e565b866112d6836006613259565b815181106112e6576112e6612f79565b016020015160f81c901b91909117906001016112ab565b50949350505050565b60605f8083356020850135601461132287870160408901612e38565b61132f6060890189612f34565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6113b06060850185612f34565b905081101561117257816113c76060860186612f34565b838181106113d7576113d7612f79565b90506020028101906113e99190612f8d565b6113f39080613432565b90506114026060870187612f34565b8481811061141257611412612f79565b90506020028101906114249190612f8d565b61142e9080613432565b61143b6060890189612f34565b8681811061144b5761144b612f79565b905060200281019061145d9190612f8d565b61146b906020810190613432565b61147860608b018b612f34565b8881811061148857611488612f79565b905060200281019061149a9190612f8d565b6114ab906060810190604001613474565b6040516020016114c1979695949392919061348d565b60408051601f1981840301815291905291506001016113a3565b5f6114e4612b8d565b5f6114ed610ffb565b90505f806114fd610aad8761106e565b91509150801561152457604051632d07135360e01b81528115156004820152602401610472565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561155557611555612d37565b600581111561156657611566612d37565b815260200160018201805461157a90612ec5565b80601f01602080910402602001604051908101604052809291908181526020018280546115a690612ec5565b80156115f15780601f106115c8576101008083540402835291602001916115f1565b820191905f5260205f20905b8154815290600101906020018083116115d457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561165c5761165c612d37565b1415801561167d575060018151600581111561167a5761167a612d37565b14155b1561169e57805160405163170cc93360e21b81526104729190600401612efd565b6003815160058111156116b3576116b3612d37565b036116c157600481526116c6565b600581525b8360080181602001516040516116dc919061312a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561172057611720612d37565b0217905550602082015160018201906117399082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055805160058111156117de576117de612d37565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b3361181e610a35565b6001600160a01b031614610a33573360405163118cdaa760e01b81526004016104729190612c78565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6118bf612b8d565b5f6118c8610ffb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561190157611901612d37565b600581111561191257611912612d37565b815260200160018201805461192690612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461195290612ec5565b801561199d5780601f106119745761010080835404028352916020019161199d565b820191905f5260205f20905b81548152906001019060200180831161198057829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611a0b57611a0b612d37565b14611a3e575f8481526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115611a8257611a82612d37565b021790555060208201516001820190611a9b9082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f611b3885826122c2565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f611b98610ffb565b6009015460ff16611bbc57604051637fab81e560e01b815260040160405180910390fd5b5f611bc5610ffb565b905042611bd86060860160408701613474565b6001600160401b0316111580611c125750611bf66202a30042613259565b611c066060860160408701613474565b6001600160401b031610155b15611c4c57611c276060850160408601613474565b604051635879da1360e11b81526001600160401b039091166004820152602401610472565b611c61611c5c60608601866134f6565b61240c565b611c71611c5c60808601866134f6565b6030611c806020860186613432565b905014611cb257611c946020850185613432565b6040516326475b2f60e11b8152610472925060040190815260200190565b611cbc8480613432565b90505f03611ce957611cce8480613432565b604051633e08a12560e11b815260040161047292919061350a565b5f60088201611cf88680613432565b604051611d0692919061332f565b90815260200160405180910390205414611d3f57611d248480613432565b60405163a41f772f60e01b815260040161047292919061350a565b611d49835f612575565b6040805160e08101909152815481525f908190611e559060208101611d6e8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611db6908a018a613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611dff60608a0160408b01613474565b6001600160401b03168152602001611e1a60608a018a6134f6565b611e2390613538565b8152602001611e3560808a018a6134f6565b611e3e90613538565b8152602001876001600160401b031681525061279a565b5f82815260068601602052604090209193509150611e738282613186565b508160088401611e838880613432565b604051611e9192919061332f565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611ecd908590600401612f0b565b6020604051808303815f875af1158015611ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0d9190612f1d565b6040805160e081019091529091508060018152602001611f2d8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611fbc57611fbc612d37565b021790555060208201516001820190611fd59082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055806120728880613432565b60405161208092919061332f565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906120be9190613474565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f80825160271461212257825160405163cc92daa160e01b815263ffffffff909116600482015260276024820152604401610472565b5f805b60028110156121715761213981600161341f565b61214490600861328e565b61ffff1685828151811061215a5761215a612f79565b016020015160f81c901b9190911790600101612125565b5061ffff81161561219b5760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156121f6576121b281600361341f565b6121bd90600861328e565b63ffffffff16866121cf836002613259565b815181106121df576121df612f79565b016020015160f81c901b919091179060010161219e565b5063ffffffff811660021461221e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156122735761223581601f61341f565b61224090600861328e565b8761224c836006613259565b8151811061225c5761225c612f79565b016020015160f81c901b9190911790600101612221565b505f8660268151811061228857612288612f79565b016020015191976001600160f81b03199092161515965090945050505050565b6122b0612987565b6122b9826129d0565b610a74816129e9565b5f805f6122cd610ffb565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166122fd8582612575565b5f612307876129fa565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6123578a858b61101f565b6040518263ffffffff1660e01b81526004016123739190612f0b565b6020604051808303815f875af115801561238f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b39190612f1d565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6124196020820182612c5f565b63ffffffff1615801561243957506124346020820182612f34565b151590505b156124805761244b6020820182612c5f565b6124586020830183612f34565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610472565b61248d6020820182612f34565b905061249c6020830183612c5f565b63ffffffff1611156124b55761244b6020820182612c5f565b60015b6124c56020830183612f34565b9050811015610a74576124db6020830183612f34565b6124e660018461341f565b8181106124f5576124f5612f79565b905060200201602081019061250a9190612e38565b6001600160a01b03166125206020840184612f34565b8381811061253057612530612f79565b90506020020160208101906125459190612e38565b6001600160a01b0316101561256d57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016124b8565b5f61257e610ffb565b90505f826001600160401b0316846001600160401b031611156125ac576125a583856135ff565b90506125b9565b6125b684846135ff565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061261b575060018401548151612617916001600160401b031690613259565b8210155b15612641576001600160401b038316606082015281815260408101516020820152612660565b8281606001818151612653919061361f565b6001600160401b03169052505b606081015161267090606461363f565b602082015160018601546001600160401b03929092169161269b9190600160401b900460ff1661328e565b10156126cb57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610472565b856001600160401b0316816040018181516126e69190613259565b9052506040810180516001600160401b038716919061270690839061341f565b9052506001840154604082015160649161272b91600160401b90910460ff169061328e565b1015612752578060400151604051635943317f60e01b815260040161047291815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f60608260400151516030146127c35760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98612804988a98600198929792969095909490939092910161366a565b60405160208183030381529060405290505f5b846080015160200151518110156128765781856080015160200151828151811061284357612843612f79565b602002602001015160405160200161285c929190613724565b60408051601f198184030181529190529150600101612817565b5060a0840151805160209182015151604051612896938593929101613755565b60405160208183030381529060405290505f5b8460a00151602001515181101561290857818560a001516020015182815181106128d5576128d5612f79565b60200260200101516040516020016128ee929190613724565b60408051601f1981840301815291905291506001016128a9565b5060c084015160405161291f918391602001613790565b6040516020818303038152906040529050600281604051612940919061312a565b602060405180830381855afa15801561295b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061297e9190612f1d565b94909350915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a3357604051631afcd79f60e31b815260040160405180910390fd5b6129d8612987565b6129e0612a63565b610fc081612a6b565b6129f1612987565b610fc081612b4e565b5f80612a04610ffb565b5f8481526007820160205260409020600201805491925090600890612a3890600160401b90046001600160401b03166137c1565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610a33612987565b612a73612987565b5f612a7c610ffb565b8235815590506014612a9460608401604085016137dc565b60ff161180612ab35750612aae60608301604084016137dc565b60ff16155b15612ae757612ac860608301604084016137dc565b604051634a59bbff60e11b815260ff9091166004820152602401610472565b612af760608301604084016137dc565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055612b286040830160208401613474565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b610f8e612987565b508054612b6290612ec5565b5f825580601f10612b71575050565b601f0160209004905f5260205f2090810190610fc09190612bca565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612bde575f8155600101612bcb565b5090565b5f60208284031215612bf2575f80fd5b5035919050565b803563ffffffff81168114612c0c575f80fd5b919050565b5f8060408385031215612c22575f80fd5b82356001600160401b03811115612c37575f80fd5b830160808186031215612c48575f80fd5b9150612c5660208401612bf9565b90509250929050565b5f60208284031215612c6f575f80fd5b610a8b82612bf9565b6001600160a01b0391909116815260200190565b80356001600160401b0381168114612c0c575f80fd5b5f8060408385031215612cb3575f80fd5b82356001600160401b03811115612cc8575f80fd5b830160a08186031215612cd9575f80fd5b9150612c5660208401612c8c565b6001600160a01b0381168114610fc0575f80fd5b5f808284036080811215612d0d575f80fd5b6060811215612d1a575f80fd5b508291506060830135612d2c81612ce7565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612d6757634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612d85578181015183820152602001612d6d565b50505f910152565b5f8151808452612da4816020860160208601612d6b565b601f01601f19169290920160200192915050565b60208152612dca602082018351612d4b565b5f602083015160e06040840152612de5610100840182612d8d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612e48575f80fd5b8135612e5381612ce7565b9392505050565b5f8060208385031215612e6b575f80fd5b82356001600160401b0380821115612e81575f80fd5b818501915085601f830112612e94575f80fd5b813581811115612ea2575f80fd5b866020828501011115612eb3575f80fd5b60209290920196919550909350505050565b600181811c90821680612ed957607f821691505b602082108103612ef757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610a8e8284612d4b565b602081525f610a8b6020830184612d8d565b5f60208284031215612f2d575f80fd5b5051919050565b5f808335601e19843603018112612f49575f80fd5b8301803591506001600160401b03821115612f62575f80fd5b6020019150600581901b3603821315612405575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612fa1575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612fe157612fe1612fab565b60405290565b604080519081016001600160401b0381118282101715612fe157612fe1612fab565b604051601f8201601f191681016001600160401b038111828210171561303157613031612fab565b604052919050565b5f6001600160401b0382111561305157613051612fab565b50601f01601f191660200190565b5f82601f83011261306e575f80fd5b813561308161307c82613039565b613009565b818152846020838601011115613095575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156130c1575f80fd5b6130c9612fbf565b82356001600160401b03808211156130df575f80fd5b6130eb3683870161305f565b83526020850135915080821115613100575f80fd5b5061310d3682860161305f565b60208301525061311f60408401612c8c565b604082015292915050565b5f8251612fa1818460208701612d6b565b601f821115610a0957805f5260205f20601f840160051c810160208510156131605750805b601f840160051c820191505b8181101561317f575f815560010161316c565b5050505050565b81516001600160401b0381111561319f5761319f612fab565b6131b3816131ad8454612ec5565b8461313b565b602080601f8311600181146131e6575f84156131cf5750858301515b5f19600386901b1c1916600185901b17855561323d565b5f85815260208120601f198616915b82811015613214578886015182559484019460019091019084016131f5565b508582101561323157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a8e57610a8e613245565b5f63ffffffff80831681810361328457613284613245565b6001019392505050565b8082028115828204841417610a8e57610a8e613245565b5f60208083525f84546132b781612ec5565b806020870152604060018084165f81146132d857600181146132f457613321565b60ff19851660408a0152604084151560051b8a01019550613321565b895f5260205f205f5b858110156133185781548b82018601529083019088016132fd565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b80518015158114612c0c575f80fd5b5f806040838503121561335e575f80fd5b82516001600160401b0380821115613374575f80fd5b9084019060608287031215613387575f80fd5b61338f612fbf565b825181526020808401516133a281612ce7565b828201526040840151838111156133b7575f80fd5b80850194505087601f8501126133cb575f80fd5b835192506133db61307c84613039565b83815288828587010111156133ee575f80fd5b6133fd84838301848801612d6b565b8060408401525081955061341281880161333e565b9450505050509250929050565b81810381811115610a8e57610a8e613245565b5f808335601e19843603018112613447575f80fd5b8301803591506001600160401b03821115613460575f80fd5b602001915036819003821315612405575f80fd5b5f60208284031215613484575f80fd5b610a8b82612c8c565b5f885161349e818460208d01612d6b565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b5f8235603e19833603018112612fa1575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215613548575f80fd5b613550612fe7565b61355983612bf9565b81526020808401356001600160401b0380821115613575575f80fd5b9085019036601f830112613587575f80fd5b81358181111561359957613599612fab565b8060051b91506135aa848301613009565b81815291830184019184810190368411156135c3575f80fd5b938501935b838510156135ed57843592506135dd83612ce7565b82825293850193908501906135c8565b94860194909452509295945050505050565b6001600160401b0382811682821603908082111561117257611172613245565b6001600160401b0381811683821601908082111561117257611172613245565b6001600160401b0381811683821602808216919082811461366257613662613245565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516136b081602a850160208b01612d6b565b8651908301906136c781602a840160208b01612d6b565b60c087901b6001600160c01b031916602a92909101918201526136f9603282018660e01b6001600160e01b0319169052565b613712603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351613735818460208801612d6b565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451613766818460208901612d6b565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516137a1818460208801612d6b565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f6001600160401b0380831681810361328457613284613245565b5f602082840312156137ec575f80fd5b813560ff81168114612e53575f80fdfea164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]}]", + Bin: "0x363038303630343035323334383031353631303030663537356638306664356235303630343035313631333662353338303338303631333662353833333938313031363034303831393035323631303032653931363130313037353635623630303138313630303138313131313536313030343235373631303034323631303132633536356230333631303034663537363130303466363130303535353635623530363130313430353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436383031303030303030303030303030303030303930303436306666313631353631303061353537363034303531363366393265653861393630653031623831353236303034303136303430353138303931303339306664356238303534363030313630303136303430316230333930383131363134363130313034353738303534363030313630303136303430316230333139313636303031363030313630343031623033393038313137383235353630343035313930383135323766633766353035623266333731616532313735656534393133663434393965316632363333613762353933363332316565643163646165623631313531383164323930363032303031363034303531383039313033393061313562353035363562356636303230383238343033313231353631303131373537356638306664356238313531363030323831313036313031323535373566383066643562393339323530353035303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363133353638383036313031346435663339356666336665363038303630343035323334383031353631303030663537356638306664356235303630303433363130363130313332353735663335363065303163383036333962613936623836313136313030623435373830363363393734643162363131363130303739353738303633633937346431623631343631303238623537383036336435383863313866313436313032393335373830363364356632306666363134363130326136353738303633646639336438646531343631303263363537383036336632666465333862313436313032643035373830363366643761633565373134363130326533353735663830666435623830363339626139366238363134363130323164353738303633613361363565343831343631303233303537383036336237373162336263313436313032343335373830363362633566626665633134363130323531353738303633626565306130336631343631303237383537356638306664356238303633373135303138613631313631303066613537383036333731353031386136313436313031626535373830363337333232313466383134363130316336353738303633383238306132356131343631303164623537383036333864613563623562313436313031663535373830363339376662373064343134363130323061353735663830666435623830363330333232656439383134363130313336353738303633323064393162376131343631303134623537383036333436376566303666313436313031356535373830363336303330356436323134363130313731353738303633363634333561626631343631303139333537356235663830666435623631303134393631303134343336363030343631323761653536356236313032663635363562303035623631303134393631303135393336363030343631323764643536356236313035376235363562363130313439363130313663333636303034363132383262353635623631306235353536356236313031373936303134383135363562363034303531363366666666666666663930393131363831353236303230303135623630343035313830393130333930663335623631303161363631303161313336363030343631323761653536356236313062363335363562363034303531363030313630303136303430316230333930393131363831353236303230303136313031386135363562363130313439363130623737353635623631303163643566383135363562363034303531393038313532363032303031363130313861353635623631303165333630333038313536356236303430353136306666393039313136383135323630323030313631303138613536356236313031666436313062386135363562363034303531363130313861393139303631323834343536356236313031343936313032313833363630303436313237616535363562363130626238353635623631303163643631303232623336363030343631323836653536356236313062636435363562363130313439363130323365333636303034363132383262353635623631306265393536356236313031666436303035363030313630393931623031383135363562363130316364376665393235343664363938393530646464333839313064326531356564316439323363643061376233646465396532613661336633383035363535353963623030383135363562363130313439363130323836333636303034363132376165353635623631306464623536356236313031653336303134383135363562363130313439363130326131333636303034363132386337353635623631306566383536356236313032623936313032623433363630303436313237616535363562363131303035353635623630343035313631303138613931393036313239383435363562363130316136363230326133303038313536356236313031343936313032646533363630303436313261303435363562363131313437353635623631303163643631303266313336363030343631326132363536356236313131383435363562356636313032666636313131626335363562356638333831353236303037383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303035383131313135363130333338353736313033333836313239303335363562363030353831313131353631303334393537363130333439363132393033353635623831353236303230303136303031383230313830353436313033356439303631326139313536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363130333839393036313261393135363562383031353631303364343537383036303166313036313033616235373631303130303830383335343034303238333532393136303230303139313631303364343536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313033623735373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333932383330313534313636306130393039313031353239303931353038313531363030353831313131353631303433663537363130343366363132393033353635623134363130343762353735663833383135323630303738333031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313034373239313630666631363930363030343031363132616339353635623630343035313830393130333930666435623630363038313031353136303430353136333432613265306235363065313162383135323630303438313031383539303532363030313630303136303430316230333930393131363630323438323031353235663630343438323031353236303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363338353435633136613930363036343031356636303430353138303833303338313836356166343135383031353631303466323537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313035313939313930383130313930363132626461353635623630343035313832363366666666666666663136363065303162383135323630303430313631303533353931393036313263306235363562363032303630343035313830383330333831356638373561663131353830313536313035353135373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130353735393139303631326331643536356235303530353035303536356235663631303538343631313162633536356236303039383130313534393039313530363066663136313536313035616435373630343035313633376661623831653536306530316238313532363030343031363034303531383039313033393066643562363030353630303136303939316230313630303136303031363061303162303331363633343231336366373836303430353138313633666666666666666631363630653031623831353236303034303136303230363034303531383038333033383138363561666131353830313536313035663035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130363134393139303631326331643536356238333630323030313335313436313036336435373630343035313633373262306137653736306531316238313532363032303834303133353630303438323031353236303234303136313034373235363562333036313036346536303630383530313630343038363031363132613034353635623630303136303031363061303162303331363134363130363836353736313036366336303630383430313630343038353031363132613034353635623630343035313633326638383132306436306532316238313532363030343031363130343732393139303631323834343536356235663631303639343630363038353031383536313263333435363562393035303930353035663830356238323831363366666666666666663136313031353631303937623537356636313036623736303630383830313838363132633334353635623833363366666666666666663136383138313130363130366364353736313036636436313263373935363562393035303630323030323831303139303631303664663931393036313263386435363562363130366538393036313263663835363562383035313630343035313931393235303566393136303038383830313931363130373030393136313264373135363562393038313532363032303031363034303531383039313033393032303534313436313037333035373830353136303430353136336134316637373266363065303162383135323631303437323931393036303034303136313263306235363562356636303032383835663031333538343630343035313630323030313631303735663932393139303931383235323630653031623630303136303031363065303162303331393136363032303832303135323630323430313930353635623630343038303531363031663139383138343033303138313532393038323930353236313037373939313631326437313536356236303230363034303531383038333033383138353561666131353830313536313037393435373364356638303365336435666664356235303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631303762373931393036313263316435363562393035303830383636303038303138333566303135313630343035313631303763663931393036313264373135363562393038313532363034303830353136303230393238313930303338333031383132303933393039333535363065303833303138313532363030323833353238343531383238343031353238343831303138303531363030313630303136303430316230333930383131363835383430313532356636303630383630313831393035323931353138313136363038303836303135323432313636306130383530313532363063303834303138313930353238343831353236303037386130313930393235323930323038313531383135343832393036306666313931363630303138333630303538313131313536313038353135373631303835313631323930333536356230323137393035353530363032303832303135313630303138323031393036313038366139303832363132646364353635623530363034303832383130313531363030323833303138303534363036303836303135313630383038373031353136306130383830313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303933303135313630303339303932303138303534363030313630303136303430316230333139313639323834313639323930393231373930393135353833303135313631303930653931313638353631326561303536356238323531363034303531393139353530363130393166393136313264373135363562363034303830353139313832393030333832323039303834303135313630303136303031363034303162303331363832353239303832393037663964343766656639646130373736363135343665363436643631383330626663626461393035303663326535656564333831393565383263346562316362646639303630323030313630343035313830393130333930613335303530383036313039373439303631326562333536356239303530363130363962353635623530363030343833303138313930353536303031383330313534363036343930363130393966393036303031363034303162393030343630666631363833363132656435353635623130313536313039633135373630343035313633353934333331376636306530316238313532363030343831303138323930353236303234303136313034373235363562356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363331653664393738393631303965353837363131316530353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363130613035393139303631326330623536356236303230363034303531383038333033383138363561663431353830313536313061323035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130613434393139303631326331643536356239303530356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633383632626661363338383630343035313832363366666666666666663136363065303162383135323630303430313631306137653931393036313330306635363562356636303430353138303833303338313836356166343135383031353631306139383537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313061626639313930383130313930363132626461353635623930353035663630303238323630343035313631306164323931393036313264373135363562363032303630343035313830383330333831383535616661313538303135363130616564353733643566383033653364356666643562353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313062313039313930363132633164353635623930353038323831313436313062336335373630343035313633313837326663386436306530316238313532363030343831303138323930353236303234383130313834393035323630343430313631303437323536356235303530353036303039393039323031383035343630666631393136363030313137393035353530353035303530353635623631306235653831363131326562353635623530353035303536356235663631306236643832363131303035353635623630383030313531393239313530353035363562363130623766363131363961353635623631306238383566363131366363353635623536356237663930313664303964373264343066646165326664386365616336623632333463373730363231346664333963316364316536303961303532386331393933303035343630303136303031363061303162303331363930353635623631306263303631313639613536356236313062633938313631313733633536356235303530353635623566363130626436363131363961353635623631306265303833383336313161313435363562393035303562393239313530353035363562356636313062663236313131626335363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f36333265343363656235363130633139383636313131653035363562363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313063333939313930363132633062353635623630343038303531383038333033383138363561663431353830313536313063353335373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130633737393139303631333062323536356239313530393135303830363130633964353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313034373235363562356638323831353236303036383430313630323035323630343039303230383035343631306362373930363132613931353635623930353035663033363130636462353736303430353136333038393933386233363065313162383135323630303438313031383339303532363032343031363130343732353635623630303135663833383135323630303738353031363032303532363034303930323035343630666631363630303538313131313536313064303135373631306430313631323930333536356231343631306433343537356638323831353236303037383430313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130343732393136306666313639303630303430313631326163393536356235663832383135323630303638343031363032303532363034303831323036313064346339313631323732323536356235663832383135323630303738343031363032303930383135323630343039313832393032303830353436306666313931363630303239303831313738323535303138303534363030313630303136303430316230333432383138313136363030313630633031623032363030313630303136306330316230333930393331363932393039323137393238333930353538343531363030313630383031623930393330343136383235323931383130313931393039313532383339313766663866643163393066623963666132636132333538666466353830366230383661643433333135643932623232316339323965666337663130356365373536383931303136303430353138303931303339306132353035303530353035363562356636313064653436313131626335363562356638333831353236303036383230313630323035323630343039303230383035343931393235303930363130653032393036313261393135363562393035303566303336313065323635373630343035313633303839393338623336306531316238313532363030343831303138333930353236303234303136313034373235363562363030313566383338313532363030373833303136303230353236303430393032303534363066663136363030353831313131353631306534633537363130653463363132393033353635623134363130653766353735663832383135323630303738323031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313034373239313630666631363930363030343031363132616339353635623566383238313532363030363832303136303230353236303430393038313930323039303531363365653562343865623630653031623831353236303035363030313630393931623031393136336565356234386562393136313065623839313930363030343031363133306433353635623630323036303430353138303833303338313566383735616631313538303135363130656434353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631306235653931393036313263316435363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030383035343630303136303430316238313034363066663136313539303630303136303031363034303162303331363566383131353830313536313066336335373530383235623930353035663832363030313630303136303430316230333136363030313134383031353631306635373537353033303362313535623930353038313135383031353631306636353537353038303135356231353631306638333537363034303531363366393265653861393630653031623831353236303034303136303430353138303931303339306664356238343534363030313630303136303430316230333139313636303031313738353535383331353631306661633537383435343630666636303430316231393136363030313630343031623137383535353562363130666236383738373631316665313536356238333135363130666663353738343534363066663630343031623139313638353535363034303531363030313831353237666337663530356232663337316165323137356565343931336634343939653166323633336137623539333633323165656431636461656236313135313831643239303630323030313630343035313830393130333930613135623530353035303530353035303530353635623631313030643631323735393536356235663631313031363631313162633536356235663834383135323630303738323031363032303532363034303930383139303230383135313630653038313031393039323532383035343932393335303930393138323930363066663136363030353831313131353631313034643537363131303464363132393033353635623630303538313131313536313130356535373631313035653631323930333536356238313532363032303031363030313832303138303534363131303732393036313261393135363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631313039653930363132613931353635623830313536313130653935373830363031663130363131306330353736313031303038303833353430343032383335323931363032303031393136313130653935363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363131306363353738323930303336303166313638323031393135623530353035303931383335323530353036303032383230313534363030313630303136303430316230333830383231363630323038343031353236303031363034303162383230343831313636303430383430313532363030313630383031623832303438313136363036303834303135323630303136306330316239303931303438313136363038303833303135323630303339303932303135343930393131363630613039303931303135323933393235303530353035363562363131313466363131363961353635623630303136303031363061303162303338313136363131313738353735663630343035313633316534666264663736306530316238313532363030343031363130343732393139303631323834343536356236313131383138313631313663633536356235303536356235663830363131313865363131316263353635623930353038303630303830313834383436303430353136313131613439323931393036313331356435363562393038313532363032303031363034303531383039313033393032303534393135303530393239313530353035363562376665393235343664363938393530646464333839313064326531356564316439323363643061376233646465396532613661336633383035363535353963623030393035363562363034303830353136303630383038323031383335323566383038333532363032303833303135323931383130313931393039313532363034303531363330366638323533353630653431623831353236336666666666666666383331363630303438323031353235663930383139303630303536303031363039393162303139303633366638323533353039303630323430313566363034303531383038333033383138363561666131353830313536313132343435373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363131323662393139303831303139303631333136633536356239313530393135303830363131323864353736303430353136333662326631396539363065303162383135323630303430313630343035313830393130333930666435623831353131353631313262333537383135313630343035313633366261353839613536306530316238313532363030343831303139313930393135323630323430313631303437323536356236303230383230313531363030313630303136306130316230333136313536313132653435373831363032303031353136303430353136323464653735643630653331623831353236303034303136313034373239313930363132383434353635623530393239313530353035363562356636313132663436313237353935363562356636313132666436313131626335363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363332653433636562353631313332343838363131316530353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131333434393139303631326330623536356236303430383035313830383330333831383635616634313538303135363131333565353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631313338323931393036313330623235363562393135303931353038303135363131336139353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313034373235363562356638323831353236303037383430313630323035323630343038303832323038313531363065303831303139303932353238303534383239303630666631363630303538313131313536313133646135373631313364613631323930333536356236303035383131313135363131336562353736313133656236313239303335363562383135323630323030313630303138323031383035343631313366663930363132613931353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313134326239303631326139313536356238303135363131343736353738303630316631303631313434643537363130313030383038333534303430323833353239313630323030313931363131343736353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631313435393537383239303033363031663136383230313931356235303530353039313833353235303530363030323832303135343630303136303031363034303162303338303832313636303230383430313532363030313630343031623832303438313136363034303834303135323630303136303830316238323034383131363630363038343031353236303031363063303162393039313034383131363630383038333031353236303033393238333031353431363630613039303931303135323930393135303831353136303035383131313135363131346531353736313134653136313239303335363562313431353830313536313135303235373530363030313831353136303035383131313135363131346666353736313134666636313239303335363562313431353562313536313135323335373830353136303430353136333137306363393333363065323162383135323631303437323931393036303034303136313261633935363562363030333831353136303035383131313135363131353338353736313135333836313239303335363562303336313135343635373630303438313532363131353462353635623630303538313532356238333630303830313831363032303031353136303430353136313135363139313930363132643731353635623930383135323630343038303531363032303932383139303033383330313930323035663930383139303535383538313532363030373837303139303932353239303230383135313831353438333932393139303832393036306666313931363630303138333630303538313131313536313135613535373631313561353631323930333536356230323137393035353530363032303832303135313630303138323031393036313135626539303832363132646364353635623530363034303832303135313630303238323031383035343630363038353031353136303830383630313531363061303837303135313630303136303031363034303162303339353836313636303031363030313630383031623033313939303934313639333930393331373630303136303430316239323836313639323930393230323931393039313137363030313630303136303830316230333136363030313630383031623931383531363931393039313032363030313630303136306330316230333136313736303031363063303162393138343136393139303931303231373930353536306330393039323031353136303033393039313031383035343630303136303031363034303162303331393136393139303932313631373930353538303531363030353831313131353631313636333537363131363633363132393033353635623630343035313834393037663163303865353936353666316131386463326461373638323663646335323830356334336538393761313763353066616566623861623363313532366363313639303566393061333931393639313935353039303933353035303530353035363562333336313136613336313062386135363562363030313630303136306130316230333136313436313062383835373333363034303531363331313863646161373630653031623831353236303034303136313034373239313930363132383434353635623766393031366430396437326434306664616532666438636561633662363233346337373036323134666433396331636431653630396130353238633139393330303830353436303031363030313630613031623033313938313136363030313630303136306130316230333834383131363931383231373834353536303430353139323136393138323930376638626530303739633533313635393134313334346364316664306134663238343139343937663937323261336461616665336234313836663662363435376530393035663930613335303530353035363562363131373434363132373539353635623566363131373464363131316263353635623566383438313532363030373832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030353831313131353631313738363537363131373836363132393033353635623630303538313131313536313137393735373631313739373631323930333536356238313532363032303031363030313832303138303534363131376162393036313261393135363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631313764373930363132613931353635623830313536313138323235373830363031663130363131376639353736313031303038303833353430343032383335323931363032303031393136313138323235363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363131383035353738323930303336303166313638323031393135623530353035303931383335323530353036303032383238313031353436303031363030313630343031623033383038323136363032303835303135323630303136303430316238323034383131363630343038353031353236303031363038303162383230343831313636303630383530313532363030313630633031623930393130343831313636303830383430313532363030333930393330313534393039323136363061303930393130313532393039313530383135313630303538313131313536313138393035373631313839303631323930333536356231343631313863333537356638343831353236303037383330313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130343732393136306666313639303630303430313631326163393536356236303033383135323432363030313630303136303430316230333136363063303832303135323566383438313532363030373833303136303230353236303430393032303831353138313534383339323931393038323930363066663139313636303031383336303035383131313135363131393037353736313139303736313239303335363562303231373930353535303630323038323031353136303031383230313930363131393230393038323631326463643536356235303630343038323031353136303032383230313830353436303630383530313531363038303836303135313630613038373031353136303031363030313630343031623033393538363136363030313630303136303830316230333139393039343136393339303933313736303031363034303162393238363136393239303932303239313930393131373630303136303031363038303162303331363630303136303830316239313835313639313930393130323630303136303031363063303162303331363137363030313630633031623931383431363931393039313032313739303535363063303930393230313531363030333930393130313830353436303031363030313630343031623033313931363931393039323136313739303535356636313139626438353832363131666662353635623630383038343031353136303430383035313630303136303031363034303162303339303932313638323532343236303230383330313532393139333530383339323530383739313766313364353833393463663236396434386263663932373935396132396135666665653763393932346461666666383932376563646633633438666661376336373931303136303430353138303931303339306133353039333932353035303530353635623566363131613164363131316263353635623630303930313534363066663136363131613431353736303430353136333766616238316535363065303162383135323630303430313630343035313830393130333930666435623566363131613461363131316263353635623930353034323631316135643630363038363031363034303837303136313331663935363562363030313630303136303430316230333136313131353830363131613937353735303631316137623632303261333030343236313265613035363562363131613862363036303836303136303430383730313631333166393536356236303031363030313630343031623033313631303135356231353631316164313537363131616163363036303835303136303430383630313631333166393536356236303430353136333538373964613133363065313162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130343732353635623631316165363631316165313630363038363031383636313332313235363562363132316335353635623631316166363631316165313630383038363031383636313332313235363562363033303631316230353630323038363031383636313332323635363562393035303134363131623337353736313162313936303230383530313835363133323236353635623630343035313633323634373562326636306531316238313532363130343732393235303630303430313930383135323630323030313930353635623631316234313834383036313332323635363562393035303566303336313162366535373631316235333834383036313332323635363562363034303531363333653038613132353630653131623831353236303034303136313034373239323931393036313332363835363562356636303038383230313631316237643836383036313332323635363562363034303531363131623862393239313930363133313564353635623930383135323630323030313630343035313830393130333930323035343134363131626334353736313162613938343830363133323236353635623630343035313633613431663737326636306530316238313532363030343031363130343732393239313930363133323638353635623631316263653833356636313233326535363562363034303830353136306530383130313930393135323831353438313532356639303831393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f393036336530343762323833393036303230383130313631316330623861383036313332323635363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303139313930393135323530353035303930383235323530363032303930383130313930363131633533393038623031386236313332323635363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303139313930393135323530353035303930383235323530363032303031363131633963363036303862303136303430386330313631333166393536356236303031363030313630343031623033313638313532363032303031363131636237363036303862303138623631333231323536356236313163633039303631333237623536356238313532363032303031363131636432363038303862303138623631333231323536356236313163646239303631333237623536356238313532363032303031383836303031363030313630343031623033313638313532353036303430353138323633666666666666666631363630653031623831353236303034303136313164303939313930363133336138353635623566363034303531383038333033383138363561663431353830313536313164323335373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363131643461393139303831303139303631333435663536356235663832383135323630303638363031363032303532363034303930323039313933353039313530363131643638383238323631326463643536356235303831363030383834303136313164373838383830363133323236353635623630343035313631316438363932393139303631333135643536356239303831353236303430353139303831393030333630323030313831323039313930393135353633656535623438656236306530316238313532356639303630303536303031363039393162303139303633656535623438656239303631316463323930383539303630303430313631326330623536356236303230363034303531383038333033383135663837356166313135383031353631316464653537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313165303239313930363132633164353635623630343038303531363065303831303139303931353239303931353038303630303138313532363032303031363131653232383938303631333232363536356238303830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039333932393139303831383135323630323030313833383338303832383433373566393230313832393035323530393338353532353035303530363030313630303136303430316230333839313636303230383038343031383239303532363034303830383530313834393035323630363038353031393239303932353236303830383430313833393035323630613039303933303138323930353238363832353236303037383830313930393235323230383135313831353438323930363066663139313636303031383336303035383131313135363131656231353736313165623136313239303335363562303231373930353535303630323038323031353136303031383230313930363131656361393038323631326463643536356235303630343038323031353136303032383230313830353436303630383530313531363038303836303135313630613038373031353136303031363030313630343031623033393538363136363030313630303136303830316230333139393039343136393339303933313736303031363034303162393238363136393239303932303239313930393131373630303136303031363038303162303331363630303136303830316239313835313639313930393130323630303136303031363063303162303331363137363030313630633031623931383431363931393039313032313739303535363063303930393230313531363030333930393130313830353436303031363030313630343031623033313931363931393039323136313739303535383036313166363738383830363133323236353635623630343035313631316637353932393139303631333135643536356236303430353138303931303339303230383437666237373239376533626566633639316266633836346138316532343166383365326566373232623665376265636161326563656332353063366435326234333038393862363034303031363032303831303139303631316662333931393036313331663935363562363034303830353136303031363030313630343031623033393338343136383135323932393039313136363032303833303135323031363034303531383039313033393061343530393039353934353035303530353035303536356236313166653936313235353335363562363131666632383236313235396335363562363130626339383136313235623535363562356638303566363132303036363131316263353635623566383638313532363030373832303136303230353236303430393032303630303230313534393039313530363030313630383031623930303436303031363030313630343031623033313636313230333638353832363132333265353635623566363132303430383736313235633635363562356638383831353236303037383530313630323035323630343038303832323036303032303138303534363766666666666666666666666666666666363038303162313931363630303136303830316236303031363030313630343031623033386338313136393138323032393239303932313739303932353539313531363334326132653062353630653131623831353236303034383130313863393035323931383431363630323438333031353236303434383230313532393139323530393036303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f39303633383534356331366139303630363430313566363034303531383038333033383138363561663431353830313536313230653935373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363132313130393139303831303139303631326264613536356236303430353138323633666666666666666631363630653031623831353236303034303136313231326339313930363132633062353635623630323036303430353138303833303338313566383735616631313538303135363132313438353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631323136633931393036313263316435363562363034303830353136303031363030313630343031623033386138313136383235323630323038323031383439303532383235313933393435303835313639323862393237663037646535666633356136373461383030356536363166333333336339303763613633333334363238303837363264313964633762336162623161386331646639323832393030333031393061333930393435303932353035303530356239323530393239303530353635623631323164323630323038323031383236313238326235363562363366666666666666663136313538303135363132316632353735303631323165643630323038323031383236313263333435363562313531353930353035623135363132323339353736313232303436303230383230313832363132383262353635623631323231313630323038333031383336313263333435363562363034303531363363303861306631643630653031623831353236336666666666666666393039333136363030343834303135323630323438333031353235303630343430313631303437323536356236313232343636303230383230313832363132633334353635623930353036313232353536303230383330313833363132383262353635623633666666666666666631363131313536313232366535373631323230343630323038323031383236313238326235363562363030313562363132323765363032303833303138333631326333343536356239303530383131303135363130626339353736313232393436303230383330313833363132633334353635623631323239663630303138343631333461323536356238313831313036313232616535373631323261653631326337393536356239303530363032303032303136303230383130313930363132326333393139303631326130343536356236303031363030313630613031623033313636313232643936303230383430313834363132633334353635623833383138313130363132326539353736313232653936313263373935363562393035303630323030323031363032303831303139303631323266653931393036313261303435363562363030313630303136306130316230333136313031353631323332363537363034303531363330646263386435663630653331623831353236303034303136303430353138303931303339306664356236303031303136313232373135363562356636313233333736313131626335363562393035303566383236303031363030313630343031623033313638343630303136303031363034303162303331363131313536313233363535373631323335653833383536313334623535363562393035303631323337323536356236313233366638343834363133346235353635623930353035623630343038303531363038303831303138323532363030323834303135343830383235323630303338353031353436303230383330313532363030343835303135343932383230313932393039323532363030353834303135343630303136303031363034303162303331363630363038323031353234323931313538303631323364343537353036303031383430313534383135313631323364303931363030313630303136303430316230333136393036313265613035363562383231303135356231353631323366613537363030313630303136303430316230333833313636303630383230313532383138313532363034303831303135313630323038323031353236313234313935363562383238313630363030313831383135313631323430633931393036313334643535363562363030313630303136303430316230333136393035323530356236303630383130313531363132343239393036303634363133346635353635623630323038323031353136303031383630313534363030313630303136303430316230333932393039323136393136313234353439313930363030313630343031623930303436306666313636313265643535363562313031353631323438343537363036303831303135313630343035313633646661653838303136306530316238313532363030313630303136303430316230333930393131363630303438323031353236303234303136313034373235363562383536303031363030313630343031623033313638313630343030313831383135313631323439663931393036313265613035363562393035323530363034303831303138303531363030313630303136303430316230333837313639313930363132346266393038333930363133346132353635623930353235303630303138343031353436303430383230313531363036343931363132346534393136303031363034303162393039313034363066663136393036313265643535363562313031353631323530623537383036303430303135313630343035313633353934333331376636306530316238313532363030343031363130343732393138313532363032303031393035363562383035313630303238353031353536303230383130313531363030333835303135353630343038313031353136303034383530313535363036303031353136303035393039333031383035343630303136303031363034303162303331393136363030313630303136303430316230333930393431363933393039333137393039323535353035303530353035363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030353436303031363034303162393030343630666631363631306238383537363034303531363331616663643739663630653331623831353236303034303136303430353138303931303339306664356236313235613436313235353335363562363132356163363132363266353635623631313138313831363132363337353635623631323562643631323535333536356236313131383138313631323731613536356235663830363132356430363131316263353635623566383438313532363030373832303136303230353236303430393032303630303230313830353439313932353039303630303839303631323630343930363030313630343031623930303436303031363030313630343031623033313636313335323035363562393139303631303130303061383135343831363030313630303136303430316230333032313931363930383336303031363030313630343031623033313630323137393035353931353035303931393035303536356236313062383836313235353335363562363132363366363132353533353635623566363132363438363131316263353635623832333538313535393035303630313436313236363036303630383430313630343038353031363133353362353635623630666631363131383036313236376635373530363132363761363036303833303136303430383430313631333533623536356236306666313631353562313536313236623335373631323639343630363038333031363034303834303136313335336235363562363034303531363334613539626266663630653131623831353236306666393039313136363030343832303135323630323430313631303437323536356236313236633336303630383330313630343038343031363133353362353635623630303138323031383035343630666639323930393231363630303136303430316230323630666636303430316231393930393231363931393039313137393035353631323666343630343038333031363032303834303136313331663935363562363030313931393039313031383035343630303136303031363034303162303331393136363030313630303136303430316230333930393231363931393039313137393035353530353635623631313134663631323535333536356235303830353436313237326539303631326139313536356235663832353538303630316631303631323733643537353035303536356236303166303136303230393030343930356635323630323035663230393038313031393036313131383139313930363132373936353635623630343038303531363065303831303139303931353238303566383135323630363036303230383230313831393035323566363034303833303138313930353239303832303138313930353236303830383230313831393035323630613038323031383139303532363063303930393130313532393035363562356238303832313131353631323761613537356638313535363030313031363132373937353635623530393035363562356636303230383238343033313231353631323762653537356638306664356235303335393139303530353635623830333536336666666666666666383131363831313436313237643835373566383066643562393139303530353635623566383036303430383338353033313231353631323765653537356638306664356238323335363030313630303136303430316230333831313131353631323830333537356638306664356238333031363038303831383630333132313536313238313435373566383066643562393135303631323832323630323038343031363132376335353635623930353039323530393239303530353635623566363032303832383430333132313536313238336235373566383066643562363130626530383236313237633535363562363030313630303136306130316230333931393039313136383135323630323030313930353635623830333536303031363030313630343031623033383131363831313436313237643835373566383066643562356638303630343038333835303331323135363132383766353735663830666435623832333536303031363030313630343031623033383131313135363132383934353735663830666435623833303136306130383138363033313231353631323861353537356638306664356239313530363132383232363032303834303136313238353835363562363030313630303136306130316230333831313638313134363131313831353735663830666435623566383038323834303336303830383131323135363132386439353735663830666435623630363038313132313536313238653635373566383066643562353038323931353036303630383330313335363132386638383136313238623335363562383039313530353039323530393239303530353635623633346534383762373136306530316235663532363032313630303435323630323435666664356236303036383131303631323933333537363334653438376237313630653031623566353236303231363030343532363032343566666435623930353235363562356635623833383131303135363132393531353738313831303135313833383230313532363032303031363132393339353635623530353035663931303135323536356235663831353138303834353236313239373038313630323038363031363032303836303136313239333735363562363031663031363031663139313639323930393230313630323030313932393135303530353635623630323038313532363132393936363032303832303138333531363132393137353635623566363032303833303135313630653036303430383430313532363132396231363130313030383430313832363132393539353635623930353036303430383430313531363030313630303136303430316230333830383231363630363038363031353238303630363038373031353131363630383038363031353238303630383038373031353131363630613038363031353238303630613038373031353131363630633038363031353238303630633038373031353131363630653038363031353235303530383039313530353039323931353035303536356235663630323038323834303331323135363132613134353735663830666435623831333536313261316638313631323862333536356239333932353035303530353635623566383036303230383338353033313231353631326133373537356638306664356238323335363030313630303136303430316230333830383231313135363132613464353735663830666435623831383530313931353038353630316638333031313236313261363035373566383066643562383133353831383131313135363132613665353735663830666435623836363032303832383530313031313131353631326137663537356638306664356236303230393239303932303139363931393535303930393335303530353035303536356236303031383138313163393038323136383036313261613535373630376638323136393135303562363032303832313038313033363132616333353736333465343837623731363065303162356635323630323236303034353236303234356666643562353039313930353035363562363032303831303136313062653338323834363132393137353635623633346534383762373136306530316235663532363034313630303435323630323435666664356236303430353136303630383130313630303136303031363034303162303338313131383238323130313731353631326230643537363132623064363132616437353635623630343035323930353635623630343038303531393038313031363030313630303136303430316230333831313138323832313031373135363132623064353736313262306436313261643735363562363034303531363031663832303136303166313931363831303136303031363030313630343031623033383131313832383231303137313536313262356435373631326235643631326164373536356236303430353239313930353035363562356636303031363030313630343031623033383231313135363132623764353736313262376436313261643735363562353036303166303136303166313931363630323030313930353635623566383236303166383330313132363132623961353735663830666435623831353136313262616436313262613838323631326236353536356236313262333535363562383138313532383436303230383338363031303131313135363132626331353735663830666435623631326264323832363032303833303136303230383730313631323933373536356239343933353035303530353035363562356636303230383238343033313231353631326265613537356638306664356238313531363030313630303136303430316230333831313131353631326266663537356638306664356236313262643238343832383530313631326238623536356236303230383135323566363130626530363032303833303138343631323935393536356235663630323038323834303331323135363132633264353735663830666435623530353139313930353035363562356638303833333536303165313938343336303330313831313236313263343935373566383066643562383330313830333539313530363030313630303136303430316230333832313131353631326336323537356638306664356236303230303139313530363030353831393031623336303338323133313536313231626535373566383066643562363334653438376237313630653031623566353236303332363030343532363032343566666435623566383233353630356531393833333630333031383131323631326361313537356638306664356239313930393130313932393135303530353635623566383236303166383330313132363132636261353735663830666435623831333536313263633836313262613838323631326236353536356238313831353238343630323038333836303130313131313536313263646335373566383066643562383136303230383530313630323038333031333735663931383130313630323030313931393039313532393339323530353035303536356235663630363038323336303331323135363132643038353735663830666435623631326431303631326165623536356238323335363030313630303136303430316230333830383231313135363132643236353735663830666435623631326433323336383338373031363132636162353635623833353236303230383530313335393135303830383231313135363132643437353735663830666435623530363132643534333638323836303136313263616235363562363032303833303135323530363132643636363034303834303136313238353835363562363034303832303135323932393135303530353635623566383235313631326361313831383436303230383730313631323933373536356236303166383231313135363130623565353738303566353236303230356632303630316638343031363030353163383130313630323038353130313536313264613735373530383035623630316638343031363030353163383230313931353035623831383131303135363132646336353735663831353536303031303136313264623335363562353035303530353035303536356238313531363030313630303136303430316230333831313131353631326465363537363132646536363132616437353635623631326466613831363132646634383435343631326139313536356238343631326438323536356236303230383036303166383331313630303138313134363132653264353735663834313536313265313635373530383538333031353135623566313936303033383639303162316331393136363030313835393031623137383535353631326538343536356235663835383135323630323038313230363031663139383631363931356238323831313031353631326535623537383838363031353138323535393438343031393436303031393039313031393038343031363132653363353635623530383538323130313536313265373835373837383530313531356631393630303338383930316236306638313631633139313638313535356235303530363030313834363030313162303138353535356235303530353035303530353035363562363334653438376237313630653031623566353236303131363030343532363032343566666435623830383230313830383231313135363130626533353736313062653336313265386335363562356636336666666666666666383038333136383138313033363132656362353736313265636236313265386335363562363030313031393339323530353035303536356238303832303238313135383238323034383431343137363130626533353736313062653336313265386335363562356638303833333536303165313938343336303330313831313236313266303135373566383066643562383330313630323038313031393235303335393035303630303136303031363034303162303338313131313536313266316635373566383066643562383033363033383231333135363132316265353735663830666435623831383335323831383136303230383530313337353035663832383230313630323039303831303139313930393135323630316639303931303136303166313931363930393130313031393035363562356638333833383535323630323038303836303139353530383038353630303531623833303130313834356635623837383131303135363133303032353738343833303336303166313930313839353238313335333638383930303336303565313930313831313236313266393135373566383066643562383730313630363036313266396638323830363132656563353635623832383735323631326661663833383830313832383436313266326435363562393235303530353036313266626638363833303138333631326565633536356238363833303338383838303135323631326664313833383238343631326632643536356239323530353035303630343036303031363030313630343031623033363132666561383238353031363132383538353635623136393530313934393039343532353039373833303139373930383330313930363030313031363132663663353635623530393039373936353035303530353035303530353035363562363032303831353238313335363032303832303135323630323038323031333536303430383230313532356636303430383330313335363133303333383136313238623335363562363030313630303136306130316230333136363036303833383130313931393039313532383330313335333638343930303336303165313930313831313236313330356135373566383066643562383330313630323038313031393033353630303136303031363034303162303338313131313536313330373535373566383066643562383036303035316233363033383231333135363133303836353735663830666435623630383038303835303135323631333039613630613038353031383238343631326635353536356239353934353035303530353035303536356238303531383031353135383131343631323764383537356638306664356235663830363034303833383530333132313536313330633335373566383066643562383235313931353036313238323236303230383430313631333061333536356235663630323038303833353235663834353436313330653538313631326139313536356238303630323038373031353236303430363030313830383431363566383131343631333130363537363030313831313436313331323235373631333134663536356236306666313938353136363034303861303135323630343038343135313536303035316238613031303139353530363133313466353635623839356635323630323035663230356635623835383131303135363133313436353738313534386238323031383630313532393038333031393038383031363133313262353635623861303136303430303139363530353035623530393339383937353035303530353035303530353035303536356238313833383233373566393130313930383135323931393035303536356235663830363034303833383530333132313536313331376435373566383066643562383235313630303136303031363034303162303338303832313131353631333139333537356638306664356239303834303139303630363038323837303331323135363133316136353735663830666435623631333161653631326165623536356238323531383135323630323038333031353136313331633038313631323862333536356236303230383230313532363034303833303135313832383131313135363133316436353735663830666435623631333165323838383238363031363132623862353635623630343038333031353235303933353036313238323239313530353036303230383430313631333061333536356235663630323038323834303331323135363133323039353735663830666435623631306265303832363132383538353635623566383233353630336531393833333630333031383131323631326361313537356638306664356235663830383333353630316531393834333630333031383131323631333233623537356638306664356238333031383033353931353036303031363030313630343031623033383231313135363133323534353735663830666435623630323030313931353033363831393030333832313331353631323162653537356638306664356236303230383135323566363132626432363032303833303138343836363132663264353635623566363034303832333630333132313536313332386235373566383066643562363133323933363132623133353635623631333239633833363132376335353635623831353236303230383038343031333536303031363030313630343031623033383038323131313536313332623835373566383066643562393038353031393033363630316638333031313236313332636135373566383066643562383133353831383131313135363133326463353736313332646336313261643735363562383036303035316239313530363133326564383438333031363132623335353635623831383135323931383330313834303139313834383130313930333638343131313536313333303635373566383066643562393338353031393335623833383531303135363133333330353738343335393235303631333332303833363132386233353635623832383235323933383530313933393038353031393036313333306235363562393438363031393439303934353235303932393539343530353035303530353035363562356636303430383330313633666666666666666638333531313638343532363032303830383430313531363034303630323038373031353238323831353138303835353236303630383830313931353036303230383330313934353035663932353035623830383331303135363133333964353738343531363030313630303136306130316230333136383235323933383330313933363030313932393039323031393139303833303139303631333337343536356235303936393535303530353035303530353035363562363032303831353238313531363032303832303135323566363032303833303135313630653036303430383430313532363133336365363130313030383430313832363132393539353635623930353036303430383430313531363031663139383038353834303330313630363038363031353236313333656338333833363132393539353635623932353036303031363030313630343031623033363036303837303135313136363038303836303135323630383038363031353139313530383038353834303330313630613038363031353236313334316338333833363133333432353635623932353036306130383630313531393135303830383538343033303136306330383630313532353036313334336138323832363133333432353635623931353035303630633038343031353136313334353736306530383530313832363030313630303136303430316230333136393035323536356235303933393235303530353035363562356638303630343038333835303331323135363133343730353735663830666435623832353139313530363032303833303135313630303136303031363034303162303338313131313536313334386335373566383066643562363133343938383538323836303136313262386235363562393135303530393235303932393035303536356238313831303338313831313131353631306265333537363130626533363132653863353635623630303136303031363034303162303338323831313638323832313630333930383038323131313536313132653435373631313265343631326538633536356236303031363030313630343031623033383138313136383338323136303139303830383231313135363131326534353736313132653436313265386335363562363030313630303136303430316230333831383131363833383231363032383038323136393139303832383131343631333531383537363133353138363132653863353635623530353039323931353035303536356235663630303136303031363034303162303338303833313638313831303336313265636235373631326563623631326538633536356235663630323038323834303331323135363133353462353735663830666435623831333536306666383131363831313436313261316635373566383066646665613136343733366636633633343330303038313930303061", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index 1684e165d..d4921fac3 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -13,7 +13,7 @@ import { WarpMessage, IWarpMessenger } from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/IWarpMessenger.sol"; -import {ValidatorMessages} from "../ValidatorMessages.sol"; +import {ValidatorMessages} from "./utils/ValidatorMessagesInternal.sol"; import {ValidatorRegistrationInput, ValidatorStatus} from "../interfaces/IValidatorManager.sol"; abstract contract PoSValidatorManagerTest is ValidatorManagerTest { diff --git a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol index 0ce88da54..f0a6ab50c 100644 --- a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol @@ -7,7 +7,7 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; import {ValidatorManager, SubnetConversionData, InitialValidator} from "../ValidatorManager.sol"; -import {ValidatorMessages} from "../ValidatorMessages.sol"; +import {ValidatorMessages} from "./utils/ValidatorMessagesInternal.sol"; import { ValidatorStatus, ValidatorRegistrationInput, diff --git a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol index 12fe198c9..a89a888cf 100644 --- a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol @@ -6,7 +6,7 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; -import {ValidatorMessages} from "../ValidatorMessages.sol"; +import {ValidatorMessages} from "./utils/ValidatorMessagesInternal.sol"; import {PChainOwner} from "../interfaces/IValidatorManager.sol"; contract ValidatorMessagesTest is Test { diff --git a/contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol b/contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol new file mode 100644 index 000000000..afc3f2f5b --- /dev/null +++ b/contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol @@ -0,0 +1,671 @@ +// (c) 2023, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +// SPDX-License-Identifier: Ecosystem +pragma solidity 0.8.25; + +import {SubnetConversionData, PChainOwner} from "../../interfaces/IValidatorManager.sol"; + +/** + * @dev Packing utilities for the Warp message types used by the Validator Manager contracts, as specified in ACP-77: + * https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets + */ +library ValidatorMessages { + // The information that uniquely identifies a subnet validation period. + // The validationID is the SHA-256 hash of the concatenation of the CODEC_ID, + // REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID, and the concatenated ValidationPeriod fields. + struct ValidationPeriod { + bytes32 subnetID; + bytes nodeID; + bytes blsPublicKey; + uint64 registrationExpiry; + PChainOwner remainingBalanceOwner; + PChainOwner disableOwner; + uint64 weight; + } + + // The P-Chain uses a hardcoded codecID of 0 for all messages. + uint16 internal constant CODEC_ID = 0; + + // The P-Chain signs a SubnetConversion message that is used to verify the Subnet's initial validators. + uint32 internal constant SUBNET_CONVERSION_MESSAGE_TYPE_ID = 0; + + // Subnets send a RegisterSubnetValidator message to the P-Chain to register a validator. + uint32 internal constant REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID = 1; + + // The P-Chain responds with a RegisterSubnetValidator message indicating whether the registration was successful + // for the given validation ID. + uint32 internal constant SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID = 2; + + // Subnets can send a SubnetValidatorWeight message to the P-Chain to update a validator's weight. + // The P-Chain responds with another SubnetValidatorWeight message acknowledging the weight update. + uint32 internal constant SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID = 3; + + // The Subnet will self-sign a ValidationUptimeMessage to be provided when a validator is initiating + // the end of their validation period. + uint32 internal constant VALIDATION_UPTIME_MESSAGE_TYPE_ID = 0; + + error InvalidMessageLength(uint32 actual, uint32 expected); + error InvalidCodecID(uint32 id); + error InvalidMessageType(); + error InvalidBLSPublicKey(); + + /** + * @notice Packs a SubnetConversionMessage message into a byte array. + * The message format specification is: + * +--------------------+----------+----------+ + * | codecID : uint16 | 2 bytes | + * +--------------------+----------+----------+ + * | typeID : uint32 | 4 bytes | + * +--------------------+----------+----------+ + * | subnetConversionID : [32]byte | 32 bytes | + * +--------------------+----------+----------+ + * | 38 bytes | + * +----------+ + * + * @param subnetConversionID The subnet conversion ID to pack into the message. + * @return The packed message. + */ + function packSubnetConversionMessage(bytes32 subnetConversionID) + internal + pure + returns (bytes memory) + { + return abi.encodePacked(CODEC_ID, SUBNET_CONVERSION_MESSAGE_TYPE_ID, subnetConversionID); + } + + /** + * @notice Unpacks a byte array as a SubnetConversionMessage message. + * The message format specification is the same as the one used in above for packing. + * + * @param input The byte array to unpack. + * @return the unpacked subnetConversionID. + */ + function unpackSubnetConversionMessage(bytes memory input) internal pure returns (bytes32) { + if (input.length != 38) { + revert InvalidMessageLength(uint32(input.length), 38); + } + + // Unpack the codec ID + uint16 codecID; + for (uint256 i; i < 2; ++i) { + codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); + } + if (codecID != CODEC_ID) { + revert InvalidCodecID(codecID); + } + + // Unpack the type ID + uint32 typeID; + for (uint256 i; i < 4; ++i) { + typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); + } + if (typeID != SUBNET_CONVERSION_MESSAGE_TYPE_ID) { + revert InvalidMessageType(); + } + + // Unpack the subnetConversionID + bytes32 subnetConversionID; + for (uint256 i; i < 32; ++i) { + subnetConversionID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); + } + + return subnetConversionID; + } + + /** + * @notice Packs SubnetConversionData into a byte array. + * This byte array is the SHA256 pre-image of the subnetConversionID hash + * The message format specification is: + * + * SubnetConversionData: + * +----------------+-----------------+--------------------------------------------------------+ + * | codecID : uint16 | 2 bytes | + * +----------------+-----------------+--------------------------------------------------------+ + * | subnetID : [32]byte | 32 bytes | + * +----------------+-----------------+--------------------------------------------------------+ + * | managerChainID : [32]byte | 32 bytes | + * +----------------+-----------------+--------------------------------------------------------+ + * | managerAddress : []byte | 4 + len(managerAddress) bytes | + * +----------------+-----------------+--------------------------------------------------------+ + * | validators : []ValidatorData | 4 + sum(validatorLengths) bytes | + * +----------------+-----------------+--------------------------------------------------------+ + * | 74 + len(managerAddress) + len(validatorLengths) bytes | + * +--------------------------------------------------------+ + * ValidatorData: + * +--------------+----------+------------------------+ + * | nodeID : []byte | 4 + len(nodeID) bytes | + * +--------------+----------+------------------------+ + * | blsPublicKey : [48]byte | 48 bytes | + * +--------------+----------+------------------------+ + * | weight : uint64 | 8 bytes | + * +--------------+----------+------------------------+ + * | 60 + len(nodeID) bytes | + * +------------------------+ + * + * @dev Input validation is skipped, since the returned value is intended to be compared + * directly with an authenticated Warp message. + * @param subnetConversionData The struct representing data to pack into the message. + * @return The packed message. + */ + function packSubnetConversionData(SubnetConversionData calldata subnetConversionData) + internal + pure + returns (bytes memory) + { + // Hardcoded 20 is for length of the managerAddress on EVM chains + // solhint-disable-next-line func-named-parameters + bytes memory res = abi.encodePacked( + CODEC_ID, + subnetConversionData.subnetID, + subnetConversionData.validatorManagerBlockchainID, + uint32(20), + subnetConversionData.validatorManagerAddress, + uint32(subnetConversionData.initialValidators.length) + ); + // The approach below of encoding initialValidators using `abi.encodePacked` in a loop + // was tested against pre-allocating the array and doing manual byte by byte packing and + // it was found to be more gas efficient. + for (uint256 i = 0; i < subnetConversionData.initialValidators.length; i++) { + res = abi.encodePacked( + res, + uint32(subnetConversionData.initialValidators[i].nodeID.length), + subnetConversionData.initialValidators[i].nodeID, + subnetConversionData.initialValidators[i].blsPublicKey, + subnetConversionData.initialValidators[i].weight + ); + } + return res; + } + + /** + * @notice Packs a RegisterSubnetValidatorMessage message into a byte array. + * The message format specification is: + * + * RegisterSubnetValidatorMessage: + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | codecID : uint16 | 2 bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | typeID : uint32 | 4 bytes | + * +-----------------------+-------------+-------------------------------------------------------------------+ + * | subnetID : [32]byte | 32 bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | nodeID : []byte | 4 + len(nodeID) bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | blsPublicKey : [48]byte | 48 bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | expiry : uint64 | 8 bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | remainingBalanceOwner : PChainOwner | 4 + len(addresses) * 20 bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | disableOwner : PChainOwner | 4 + len(addresses) * 20 bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | weight : uint64 | 8 bytes | + * +-----------------------+-------------+--------------------------------------------------------------------+ + * | 122 + len(nodeID) + (len(addresses1) + len(addresses2)) * 20 bytes | + * +--------------------------------------------------------------------+ + * + * PChainOwner: + * +-----------+------------+-------------------------------+ + * | threshold : uint32 | 4 bytes | + * +-----------+------------+-------------------------------+ + * | addresses : [][20]byte | 4 + len(addresses) * 20 bytes | + * +-----------+------------+-------------------------------+ + * | 8 + len(addresses) * 20 bytes | + * +-------------------------------+ + * + * @param validationPeriod The information to pack into the message. + * @return The validationID and the packed message. + */ + function packRegisterSubnetValidatorMessage(ValidationPeriod memory validationPeriod) + internal + pure + returns (bytes32, bytes memory) + { + if (validationPeriod.blsPublicKey.length != 48) { + revert InvalidBLSPublicKey(); + } + + // solhint-disable-next-line func-named-parameters + bytes memory res = abi.encodePacked( + CODEC_ID, + REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID, + validationPeriod.subnetID, + uint32(validationPeriod.nodeID.length), + validationPeriod.nodeID, + validationPeriod.blsPublicKey, + validationPeriod.registrationExpiry, + validationPeriod.remainingBalanceOwner.threshold, + uint32(validationPeriod.remainingBalanceOwner.addresses.length) + ); + for (uint256 i = 0; i < validationPeriod.remainingBalanceOwner.addresses.length; i++) { + res = abi.encodePacked(res, validationPeriod.remainingBalanceOwner.addresses[i]); + } + res = abi.encodePacked( + res, + validationPeriod.disableOwner.threshold, + uint32(validationPeriod.disableOwner.addresses.length) + ); + for (uint256 i = 0; i < validationPeriod.disableOwner.addresses.length; i++) { + res = abi.encodePacked(res, validationPeriod.disableOwner.addresses[i]); + } + res = abi.encodePacked(res, validationPeriod.weight); + + return (sha256(res), res); + } + + /** + * @notice Unpacks a byte array as a RegisterSubnetValidatorMessage message. + * The message format specification is the same as the one used in above for packing. + * + * @param input The byte array to unpack. + * @return the unpacked ValidationPeriod. + */ + function unpackRegisterSubnetValidatorMessage(bytes memory input) + internal + pure + returns (ValidationPeriod memory) + { + uint32 index = 0; + ValidationPeriod memory validation; + + // Unpack the codec ID + // Individual fields are unpacked in their own scopes to avoid stack too deep errors. + { + uint16 codecID; + for (uint256 i; i < 2; ++i) { + codecID |= uint16(uint8(input[i + index])) << uint16((8 * (1 - i))); + } + if (codecID != CODEC_ID) { + revert InvalidCodecID(codecID); + } + index += 2; + } + + // Unpack the type ID + { + uint32 typeID; + for (uint256 i; i < 4; ++i) { + typeID |= uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); + } + if (typeID != REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID) { + revert InvalidMessageType(); + } + index += 4; + } + + // Unpack the subnetID + { + bytes32 subnetID; + for (uint256 i; i < 32; ++i) { + subnetID |= bytes32(uint256(uint8(input[i + index])) << (8 * (31 - i))); + } + validation.subnetID = subnetID; + index += 32; + } + + // Unpack the nodeID length + uint32 nodeIDLength; + { + for (uint256 i; i < 4; ++i) { + nodeIDLength |= uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); + } + index += 4; + + // Unpack the nodeID + bytes memory nodeID = new bytes(nodeIDLength); + for (uint256 i; i < nodeIDLength; ++i) { + nodeID[i] = input[i + index]; + } + validation.nodeID = nodeID; + index += nodeIDLength; + } + + // Unpack the blsPublicKey + { + bytes memory blsPublicKey = new bytes(48); + for (uint256 i; i < 48; ++i) { + blsPublicKey[i] = input[i + index]; + } + validation.blsPublicKey = blsPublicKey; + index += 48; + } + + // Unpack the registration expiry + { + uint64 expiry; + for (uint256 i; i < 8; ++i) { + expiry |= uint64(uint8(input[i + index])) << uint64((8 * (7 - i))); + } + validation.registrationExpiry = expiry; + index += 8; + } + + // Unpack the remainingBalanceOwner threshold + uint32 remainingBalanceOwnerAddressesLength; + { + uint32 remainingBalanceOwnerThreshold; + for (uint256 i; i < 4; ++i) { + remainingBalanceOwnerThreshold |= + uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); + } + index += 4; + + // Unpack the remainingBalanceOwner addresses length + for (uint256 i; i < 4; ++i) { + remainingBalanceOwnerAddressesLength |= + uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); + } + index += 4; + + // Unpack the remainingBalanceOwner addresses + address[] memory remainingBalanceOwnerAddresses = + new address[](remainingBalanceOwnerAddressesLength); + for (uint256 i; i < remainingBalanceOwnerAddressesLength; ++i) { + bytes memory addrBytes = new bytes(20); + for (uint256 j; j < 20; ++j) { + addrBytes[j] = input[j + index]; + } + address addr; + // solhint-disable-next-line no-inline-assembly + assembly { + addr := mload(add(addrBytes, 20)) + } + remainingBalanceOwnerAddresses[i] = addr; + index += 20; + } + validation.remainingBalanceOwner = PChainOwner({ + threshold: remainingBalanceOwnerThreshold, + addresses: remainingBalanceOwnerAddresses + }); + } + + // Unpack the disableOwner threshold + uint32 disableOwnerAddressesLength; + { + uint32 disableOwnerThreshold; + for (uint256 i; i < 4; ++i) { + disableOwnerThreshold |= uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); + } + index += 4; + + // Unpack the disableOwner addresses length + for (uint256 i; i < 4; ++i) { + disableOwnerAddressesLength |= + uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); + } + index += 4; + + // Unpack the disableOwner addresses + address[] memory disableOwnerAddresses = new address[](disableOwnerAddressesLength); + for (uint256 i; i < disableOwnerAddressesLength; ++i) { + bytes memory addrBytes = new bytes(20); + for (uint256 j; j < 20; ++j) { + addrBytes[j] = input[j + index]; + } + address addr; + // solhint-disable-next-line no-inline-assembly + assembly { + addr := mload(add(addrBytes, 20)) + } + disableOwnerAddresses[i] = addr; + index += 20; + } + validation.disableOwner = + PChainOwner({threshold: disableOwnerThreshold, addresses: disableOwnerAddresses}); + } + // Now that we have all the variable lengths, validate the input length + uint32 expectedLength = 122 + nodeIDLength + + (remainingBalanceOwnerAddressesLength + disableOwnerAddressesLength) * 20; + if (input.length != expectedLength) { + revert InvalidMessageLength(uint32(input.length), expectedLength); + } + // Unpack the weight + { + uint64 weight; + for (uint256 i; i < 8; ++i) { + weight |= uint64(uint8(input[i + index])) << uint64((8 * (7 - i))); + } + validation.weight = weight; + } + + return validation; + } + + /** + * @notice Packs a SubnetValidatorRegistrationMessage into a byte array. + * The message format specification is: + * +--------------+----------+----------+ + * | codecID : uint16 | 2 bytes | + * +--------------+----------+----------+ + * | typeID : uint32 | 4 bytes | + * +--------------+----------+----------+ + * | validationID : [32]byte | 32 bytes | + * +--------------+----------+----------+ + * | valid : bool | 1 byte | + * +--------------+----------+----------+ + * | 39 bytes | + * +----------+ + * + * @param validationID The ID of the validation period. + * @param valid true if the validation period was registered, false if it was not and never will be. + * @return The packed message. + * + */ + function packSubnetValidatorRegistrationMessage( + bytes32 validationID, + bool valid + ) internal pure returns (bytes memory) { + return abi.encodePacked( + CODEC_ID, SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID, validationID, valid + ); + } + + /** + * @notice Unpacks a byte array as a SubnetValidatorRegistrationMessage message. + * The message format specification is the same as the one used in above for packing. + * + * @param input The byte array to unpack. + * @return The validationID and whether the validation period was registered + * or is not a validator and never will be a validator to do the expiry time passing. + */ + function unpackSubnetValidatorRegistrationMessage(bytes memory input) + internal + pure + returns (bytes32, bool) + { + if (input.length != 39) { + revert InvalidMessageLength(uint32(input.length), 39); + } + // Unpack the codec ID + uint16 codecID; + for (uint256 i; i < 2; ++i) { + codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); + } + if (codecID != CODEC_ID) { + revert InvalidCodecID(codecID); + } + + // Unpack the type ID + uint32 typeID; + for (uint256 i; i < 4; ++i) { + typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); + } + if (typeID != SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID) { + revert InvalidMessageType(); + } + + // Unpack the validation ID. + bytes32 validationID; + for (uint256 i; i < 32; ++i) { + validationID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); + } + + // Unpack the validity + bool valid = input[38] != 0; + + return (validationID, valid); + } + + /** + * @notice Packs a SubnetValidatorWeightMessage message into a byte array. + * The message format specification is: + * +--------------+----------+----------+ + * | codecID : uint16 | 2 bytes | + * +--------------+----------+----------+ + * | typeID : uint32 | 4 bytes | + * +--------------+----------+----------+ + * | validationID : [32]byte | 32 bytes | + * +--------------+----------+----------+ + * | nonce : uint64 | 8 bytes | + * +--------------+----------+----------+ + * | weight : uint64 | 8 bytes | + * +--------------+----------+----------+ + * | 54 bytes | + * +----------+ + * + * @param validationID The ID of the validation period. + * @param nonce The nonce of the validation ID. + * @param weight The new weight of the validator. + * @return The packed message. + */ + function packSubnetValidatorWeightMessage( + bytes32 validationID, + uint64 nonce, + uint64 weight + ) internal pure returns (bytes memory) { + return abi.encodePacked( + CODEC_ID, SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID, validationID, nonce, weight + ); + } + + /** + * @notice Unpacks a byte array as a SubnetValidatorWeight message. + * The message format specification is the same as the one used in above for packing. + * + * @param input The byte array to unpack. + * @return The validationID, nonce, and weight. + */ + function unpackSubnetValidatorWeightMessage(bytes memory input) + internal + pure + returns (bytes32, uint64, uint64) + { + if (input.length != 54) { + revert InvalidMessageLength(uint32(input.length), 54); + } + + // Unpack the codec ID. + uint16 codecID; + for (uint256 i; i < 2; ++i) { + codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); + } + if (codecID != CODEC_ID) { + revert InvalidCodecID(codecID); + } + + // Unpack the type ID. + uint32 typeID; + for (uint256 i; i < 4; ++i) { + typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); + } + if (typeID != SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID) { + revert InvalidMessageType(); + } + + // Unpack the validation ID. + bytes32 validationID; + for (uint256 i; i < 32; ++i) { + validationID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); + } + + // Unpack the nonce. + uint64 nonce; + for (uint256 i; i < 8; ++i) { + nonce |= uint64(uint8(input[i + 38])) << uint64((8 * (7 - i))); + } + + // Unpack the weight. + uint64 weight; + for (uint256 i; i < 8; ++i) { + weight |= uint64(uint8(input[i + 46])) << uint64((8 * (7 - i))); + } + + return (validationID, nonce, weight); + } + + /** + * @notice Packs a ValidationUptimeMessage into a byte array. + * The message format specification is: + * +--------------+----------+----------+ + * | codecID : uint16 | 2 bytes | + * +--------------+----------+----------+ + * | typeID : uint32 | 4 bytes | + * +--------------+----------+----------+ + * | validationID : [32]byte | 32 bytes | + * +--------------+----------+----------+ + * | uptime : uint64 | 8 bytes | + * +--------------+----------+----------+ + * | 46 bytes | + * +----------+ + * + * @param validationID The ID of the validation period. + * @param uptime The uptime of the validator. + * @return The packed message. + */ + function packValidationUptimeMessage( + bytes32 validationID, + uint64 uptime + ) internal pure returns (bytes memory) { + return abi.encodePacked(CODEC_ID, VALIDATION_UPTIME_MESSAGE_TYPE_ID, validationID, uptime); + } + + /** + * @notice Unpacks a byte array as a ValidationUptimeMessage. + * The message format specification is the same as the one used in above for packing. + * + * @param input The byte array to unpack. + * @return The validationID and uptime. + */ + function unpackValidationUptimeMessage(bytes memory input) + internal + pure + returns (bytes32, uint64) + { + if (input.length != 46) { + revert InvalidMessageLength(uint32(input.length), 46); + } + + // Unpack the codec ID. + uint16 codecID; + for (uint256 i; i < 2; ++i) { + codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); + } + if (codecID != CODEC_ID) { + revert InvalidCodecID(codecID); + } + + // Unpack the type ID. + uint32 typeID; + for (uint256 i; i < 4; ++i) { + typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); + } + if (typeID != VALIDATION_UPTIME_MESSAGE_TYPE_ID) { + revert InvalidMessageType(); + } + + // Unpack the validation ID. + bytes32 validationID; + for (uint256 i; i < 32; ++i) { + validationID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); + } + + // Unpack the uptime. + uint64 uptime; + for (uint256 i; i < 8; ++i) { + uptime |= uint64(uint8(input[i + 38])) << uint64((8 * (7 - i))); + } + + return (validationID, uptime); + } +} From da13a34d9d410c9db35f0d5e6ea8c792638e6e75 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 17 Oct 2024 09:01:11 -0500 Subject: [PATCH 03/43] test external lib --- contracts/validator-manager/tests/ValidatorMessagesTests.t.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol index a89a888cf..12fe198c9 100644 --- a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol @@ -6,7 +6,7 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; -import {ValidatorMessages} from "./utils/ValidatorMessagesInternal.sol"; +import {ValidatorMessages} from "../ValidatorMessages.sol"; import {PChainOwner} from "../interfaces/IValidatorManager.sol"; contract ValidatorMessagesTest is Test { From b196a2367bdb18c9e37a45d57b6e8f3f66a8d369 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 18 Oct 2024 11:54:34 -0500 Subject: [PATCH 04/43] remove oz contracts module --- .gitmodules | 3 --- lib/openzeppelin-contracts | 1 - 2 files changed, 4 deletions(-) delete mode 160000 lib/openzeppelin-contracts diff --git a/.gitmodules b/.gitmodules index d93a66b6c..79d879e32 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,9 +2,6 @@ branch = v1 path = lib/forge-std url = https://github.com/foundry-rs/forge-std -[submodule "lib/openzeppelin-contracts"] - path = lib/openzeppelin-contracts - url = https://github.com/openzeppelin/openzeppelin-contracts [submodule "lib/openzeppelin-contracts-upgradeable"] path = lib/openzeppelin-contracts-upgradeable url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts deleted file mode 160000 index dbb6104ce..000000000 --- a/lib/openzeppelin-contracts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dbb6104ce834628e473d2173bbc9d47f81a9eec3 From 2b7db87dfd6a6066e7cb76c40e386f1d8cb679ae Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 18 Oct 2024 11:54:53 -0500 Subject: [PATCH 05/43] solc compatible remappings --- remappings.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/remappings.txt b/remappings.txt index dc324915d..b3acc7187 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,7 +1,7 @@ @avalabs/subnet-evm-contracts@1.2.0/=lib/subnet-evm/contracts/ -@openzeppelin/contracts@5.0.2=lib/openzeppelin-contracts/contracts/ -@openzeppelin/contracts-upgradeable@5.0.2=lib/openzeppelin-contracts-upgradeable/contracts/ +@openzeppelin/contracts@5.0.2=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts +@openzeppelin/contracts-upgradeable@5.0.2=lib/openzeppelin-contracts-upgradeable/contracts @forge-std=lib/forge-std/src -@teleporter/=contracts/teleporter/ -@mocks/=contracts/mocks/ +@teleporter/=contracts/teleporter +@mocks/=contracts/mocks @utilities/=contracts/utilities/ From 5f6d452f9ca8230af8a6ece668603585d687d4a7 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 18 Oct 2024 14:03:19 -0500 Subject: [PATCH 06/43] use solc for abi bindings --- .../go/INativeMinter/INativeMinter.go | 431 +- abi-bindings/go/ProxyAdmin/ProxyAdmin.go | 4222 +++- .../TransparentUpgradeableProxy.go | 3786 +++- .../ValidatorSetSig/ValidatorSetSig.go | 615 +- .../go/mocks/ExampleERC20/ExampleERC20.go | 4537 ++++- .../TeleporterMessenger.go | 4280 +++- .../TeleporterRegistry/TeleporterRegistry.go | 2277 ++- .../tests/TestMessenger/TestMessenger.go | 8000 +++++++- .../ERC20TokenStakingManager.go | 16939 ++++++++++++++-- .../ExampleRewardCalculator.go | 186 +- .../NativeTokenStakingManager.go | 16091 +++++++++++++-- .../PoAValidatorManager.go | 7737 ++++++- remappings.txt | 2 +- scripts/abi_bindings.sh | 38 +- tests/utils/chain.go | 7 +- tests/utils/validator_manager.go | 8 +- 16 files changed, 64870 insertions(+), 4286 deletions(-) diff --git a/abi-bindings/go/INativeMinter/INativeMinter.go b/abi-bindings/go/INativeMinter/INativeMinter.go index 308b401a0..a1ea24404 100644 --- a/abi-bindings/go/INativeMinter/INativeMinter.go +++ b/abi-bindings/go/INativeMinter/INativeMinter.go @@ -29,9 +29,438 @@ var ( _ = abi.ConvertType ) +// IAllowListMetaData contains all meta data concerning the IAllowList contract. +var IAllowListMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IAllowListABI is the input ABI used to generate the binding from. +// Deprecated: Use IAllowListMetaData.ABI instead. +var IAllowListABI = IAllowListMetaData.ABI + +// IAllowList is an auto generated Go binding around an Ethereum contract. +type IAllowList struct { + IAllowListCaller // Read-only binding to the contract + IAllowListTransactor // Write-only binding to the contract + IAllowListFilterer // Log filterer for contract events +} + +// IAllowListCaller is an auto generated read-only Go binding around an Ethereum contract. +type IAllowListCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAllowListTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IAllowListTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAllowListFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IAllowListFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAllowListSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IAllowListSession struct { + Contract *IAllowList // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IAllowListCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IAllowListCallerSession struct { + Contract *IAllowListCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IAllowListTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IAllowListTransactorSession struct { + Contract *IAllowListTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IAllowListRaw is an auto generated low-level Go binding around an Ethereum contract. +type IAllowListRaw struct { + Contract *IAllowList // Generic contract binding to access the raw methods on +} + +// IAllowListCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IAllowListCallerRaw struct { + Contract *IAllowListCaller // Generic read-only contract binding to access the raw methods on +} + +// IAllowListTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IAllowListTransactorRaw struct { + Contract *IAllowListTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIAllowList creates a new instance of IAllowList, bound to a specific deployed contract. +func NewIAllowList(address common.Address, backend bind.ContractBackend) (*IAllowList, error) { + contract, err := bindIAllowList(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IAllowList{IAllowListCaller: IAllowListCaller{contract: contract}, IAllowListTransactor: IAllowListTransactor{contract: contract}, IAllowListFilterer: IAllowListFilterer{contract: contract}}, nil +} + +// NewIAllowListCaller creates a new read-only instance of IAllowList, bound to a specific deployed contract. +func NewIAllowListCaller(address common.Address, caller bind.ContractCaller) (*IAllowListCaller, error) { + contract, err := bindIAllowList(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IAllowListCaller{contract: contract}, nil +} + +// NewIAllowListTransactor creates a new write-only instance of IAllowList, bound to a specific deployed contract. +func NewIAllowListTransactor(address common.Address, transactor bind.ContractTransactor) (*IAllowListTransactor, error) { + contract, err := bindIAllowList(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IAllowListTransactor{contract: contract}, nil +} + +// NewIAllowListFilterer creates a new log filterer instance of IAllowList, bound to a specific deployed contract. +func NewIAllowListFilterer(address common.Address, filterer bind.ContractFilterer) (*IAllowListFilterer, error) { + contract, err := bindIAllowList(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IAllowListFilterer{contract: contract}, nil +} + +// bindIAllowList binds a generic wrapper to an already deployed contract. +func bindIAllowList(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IAllowListMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IAllowList *IAllowListRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAllowList.Contract.IAllowListCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IAllowList *IAllowListRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAllowList.Contract.IAllowListTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IAllowList *IAllowListRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAllowList.Contract.IAllowListTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IAllowList *IAllowListCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAllowList.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IAllowList *IAllowListTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAllowList.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IAllowList *IAllowListTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAllowList.Contract.contract.Transact(opts, method, params...) +} + +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_IAllowList *IAllowListCaller) ReadAllowList(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { + var out []interface{} + err := _IAllowList.contract.Call(opts, &out, "readAllowList", addr) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_IAllowList *IAllowListSession) ReadAllowList(addr common.Address) (*big.Int, error) { + return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) +} + +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_IAllowList *IAllowListCallerSession) ReadAllowList(addr common.Address) (*big.Int, error) { + return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetAdmin(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setAdmin", addr) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address addr) returns() +func (_IAllowList *IAllowListSession) SetAdmin(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetAdmin(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) +} + +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// +// Solidity: function setEnabled(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetEnabled(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setEnabled", addr) +} + +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// +// Solidity: function setEnabled(address addr) returns() +func (_IAllowList *IAllowListSession) SetEnabled(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) +} + +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// +// Solidity: function setEnabled(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetEnabled(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) +} + +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// +// Solidity: function setManager(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetManager(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setManager", addr) +} + +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// +// Solidity: function setManager(address addr) returns() +func (_IAllowList *IAllowListSession) SetManager(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) +} + +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// +// Solidity: function setManager(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetManager(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) +} + +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// +// Solidity: function setNone(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetNone(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setNone", addr) +} + +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// +// Solidity: function setNone(address addr) returns() +func (_IAllowList *IAllowListSession) SetNone(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) +} + +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// +// Solidity: function setNone(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetNone(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) +} + +// IAllowListRoleSetIterator is returned from FilterRoleSet and is used to iterate over the raw logs and unpacked data for RoleSet events raised by the IAllowList contract. +type IAllowListRoleSetIterator struct { + Event *IAllowListRoleSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IAllowListRoleSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IAllowListRoleSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IAllowListRoleSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IAllowListRoleSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAllowListRoleSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAllowListRoleSet represents a RoleSet event raised by the IAllowList contract. +type IAllowListRoleSet struct { + Role *big.Int + Account common.Address + Sender common.Address + OldRole *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleSet is a free log retrieval operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_IAllowList *IAllowListFilterer) FilterRoleSet(opts *bind.FilterOpts, role []*big.Int, account []common.Address, sender []common.Address) (*IAllowListRoleSetIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IAllowList.contract.FilterLogs(opts, "RoleSet", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &IAllowListRoleSetIterator{contract: _IAllowList.contract, event: "RoleSet", logs: logs, sub: sub}, nil +} + +// WatchRoleSet is a free log subscription operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_IAllowList *IAllowListFilterer) WatchRoleSet(opts *bind.WatchOpts, sink chan<- *IAllowListRoleSet, role []*big.Int, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IAllowList.contract.WatchLogs(opts, "RoleSet", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IAllowListRoleSet) + if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleSet is a log parse operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_IAllowList *IAllowListFilterer) ParseRoleSet(log types.Log) (*IAllowListRoleSet, error) { + event := new(IAllowListRoleSet) + if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // INativeMinterMetaData contains all meta data concerning the INativeMinter contract. var INativeMinterMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"mintNativeCoin\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"readAllowList\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"role\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setAdmin\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setEnabled\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setManager\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNone\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"NativeCoinMinted\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleSet\",\"inputs\":[{\"name\":\"role\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldRole\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeCoinMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintNativeCoin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // INativeMinterABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go index 02989d202..5a2b3a362 100644 --- a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go +++ b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go @@ -29,23 +29,3632 @@ var ( _ = abi.ConvertType ) +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", +} + +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events +} + +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on +} + +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +} + +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AddressCaller{contract: contract}, nil +} + +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AddressTransactor{contract: contract}, nil +} + +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AddressFilterer{contract: contract}, nil +} + +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) +} + +// ContextMetaData contains all meta data concerning the Context contract. +var ContextMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ContextABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextMetaData.ABI instead. +var ContextABI = ContextMetaData.ABI + +// Context is an auto generated Go binding around an Ethereum contract. +type Context struct { + ContextCaller // Read-only binding to the contract + ContextTransactor // Write-only binding to the contract + ContextFilterer // Log filterer for contract events +} + +// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextSession struct { + Contract *Context // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextCallerSession struct { + Contract *ContextCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextTransactorSession struct { + Contract *ContextTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextRaw struct { + Contract *Context // Generic contract binding to access the raw methods on +} + +// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextCallerRaw struct { + Contract *ContextCaller // Generic read-only contract binding to access the raw methods on +} + +// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextTransactorRaw struct { + Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContext creates a new instance of Context, bound to a specific deployed contract. +func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { + contract, err := bindContext(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil +} + +// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. +func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { + contract, err := bindContext(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextCaller{contract: contract}, nil +} + +// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. +func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { + contract, err := bindContext(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextTransactor{contract: contract}, nil +} + +// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. +func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { + contract, err := bindContext(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContextFilterer{contract: contract}, nil +} + +// bindContext binds a generic wrapper to an already deployed contract. +func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.contract.Transact(opts, method, params...) +} + +// ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. +var ERC1967ProxyMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", + Bin: "0x60806040526040516103ca3803806103ca8339810160408190526100229161023c565b61002c8282610033565b505061031b565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610305565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b038082111561027f575f80fd5b818501915085601f830112610292575f80fd5b8151818111156102a4576102a4610228565b604051601f8201601f19908116603f011681019083821181831017156102cc576102cc610228565b816040528281528860208487010111156102e4575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f82518060208501845e5f920191825250919050565b60a3806103275f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201d71d9606c221249d6bea9623205d9628509770cc2b548646e0eee653df844eb64736f6c63430008190033", +} + +// ERC1967ProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC1967ProxyMetaData.ABI instead. +var ERC1967ProxyABI = ERC1967ProxyMetaData.ABI + +// ERC1967ProxyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC1967ProxyMetaData.Bin instead. +var ERC1967ProxyBin = ERC1967ProxyMetaData.Bin + +// DeployERC1967Proxy deploys a new Ethereum contract, binding an instance of ERC1967Proxy to it. +func DeployERC1967Proxy(auth *bind.TransactOpts, backend bind.ContractBackend, implementation common.Address, _data []byte) (common.Address, *types.Transaction, *ERC1967Proxy, error) { + parsed, err := ERC1967ProxyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967ProxyBin), backend, implementation, _data) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil +} + +// ERC1967Proxy is an auto generated Go binding around an Ethereum contract. +type ERC1967Proxy struct { + ERC1967ProxyCaller // Read-only binding to the contract + ERC1967ProxyTransactor // Write-only binding to the contract + ERC1967ProxyFilterer // Log filterer for contract events +} + +// ERC1967ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC1967ProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC1967ProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC1967ProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC1967ProxySession struct { + Contract *ERC1967Proxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC1967ProxyCallerSession struct { + Contract *ERC1967ProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC1967ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC1967ProxyTransactorSession struct { + Contract *ERC1967ProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC1967ProxyRaw struct { + Contract *ERC1967Proxy // Generic contract binding to access the raw methods on +} + +// ERC1967ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC1967ProxyCallerRaw struct { + Contract *ERC1967ProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC1967ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC1967ProxyTransactorRaw struct { + Contract *ERC1967ProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC1967Proxy creates a new instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967Proxy(address common.Address, backend bind.ContractBackend) (*ERC1967Proxy, error) { + contract, err := bindERC1967Proxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil +} + +// NewERC1967ProxyCaller creates a new read-only instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyCaller(address common.Address, caller bind.ContractCaller) (*ERC1967ProxyCaller, error) { + contract, err := bindERC1967Proxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC1967ProxyCaller{contract: contract}, nil +} + +// NewERC1967ProxyTransactor creates a new write-only instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967ProxyTransactor, error) { + contract, err := bindERC1967Proxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC1967ProxyTransactor{contract: contract}, nil +} + +// NewERC1967ProxyFilterer creates a new log filterer instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967ProxyFilterer, error) { + contract, err := bindERC1967Proxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC1967ProxyFilterer{contract: contract}, nil +} + +// bindERC1967Proxy binds a generic wrapper to an already deployed contract. +func bindERC1967Proxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC1967ProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Proxy *ERC1967ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Proxy.Contract.ERC1967ProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Proxy *ERC1967ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Proxy *ERC1967ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Proxy *ERC1967ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Proxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) +} + +// ERC1967ProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Proxy contract. +type ERC1967ProxyUpgradedIterator struct { + Event *ERC1967ProxyUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967ProxyUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967ProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967ProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967ProxyUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967ProxyUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967ProxyUpgraded represents a Upgraded event raised by the ERC1967Proxy contract. +type ERC1967ProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967ProxyUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Proxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ERC1967ProxyUpgradedIterator{contract: _ERC1967Proxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Proxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967ProxyUpgraded) + if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC1967ProxyUpgraded, error) { + event := new(ERC1967ProxyUpgraded) + if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. +var ERC1967UtilsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206102e0afcf8d6f22c46ef1da3bd84f4a9180c360db8303cf6ce7c1339a50f2e764736f6c63430008190033", +} + +// ERC1967UtilsABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC1967UtilsMetaData.ABI instead. +var ERC1967UtilsABI = ERC1967UtilsMetaData.ABI + +// ERC1967UtilsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC1967UtilsMetaData.Bin instead. +var ERC1967UtilsBin = ERC1967UtilsMetaData.Bin + +// DeployERC1967Utils deploys a new Ethereum contract, binding an instance of ERC1967Utils to it. +func DeployERC1967Utils(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC1967Utils, error) { + parsed, err := ERC1967UtilsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967UtilsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil +} + +// ERC1967Utils is an auto generated Go binding around an Ethereum contract. +type ERC1967Utils struct { + ERC1967UtilsCaller // Read-only binding to the contract + ERC1967UtilsTransactor // Write-only binding to the contract + ERC1967UtilsFilterer // Log filterer for contract events +} + +// ERC1967UtilsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC1967UtilsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC1967UtilsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC1967UtilsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC1967UtilsSession struct { + Contract *ERC1967Utils // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967UtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC1967UtilsCallerSession struct { + Contract *ERC1967UtilsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC1967UtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC1967UtilsTransactorSession struct { + Contract *ERC1967UtilsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967UtilsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC1967UtilsRaw struct { + Contract *ERC1967Utils // Generic contract binding to access the raw methods on +} + +// ERC1967UtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC1967UtilsCallerRaw struct { + Contract *ERC1967UtilsCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC1967UtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC1967UtilsTransactorRaw struct { + Contract *ERC1967UtilsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC1967Utils creates a new instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967Utils(address common.Address, backend bind.ContractBackend) (*ERC1967Utils, error) { + contract, err := bindERC1967Utils(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil +} + +// NewERC1967UtilsCaller creates a new read-only instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsCaller(address common.Address, caller bind.ContractCaller) (*ERC1967UtilsCaller, error) { + contract, err := bindERC1967Utils(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC1967UtilsCaller{contract: contract}, nil +} + +// NewERC1967UtilsTransactor creates a new write-only instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967UtilsTransactor, error) { + contract, err := bindERC1967Utils(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC1967UtilsTransactor{contract: contract}, nil +} + +// NewERC1967UtilsFilterer creates a new log filterer instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967UtilsFilterer, error) { + contract, err := bindERC1967Utils(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC1967UtilsFilterer{contract: contract}, nil +} + +// bindERC1967Utils binds a generic wrapper to an already deployed contract. +func bindERC1967Utils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC1967UtilsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Utils *ERC1967UtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Utils.Contract.ERC1967UtilsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Utils *ERC1967UtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Utils *ERC1967UtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Utils *ERC1967UtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Utils.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Utils.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Utils.Contract.contract.Transact(opts, method, params...) +} + +// ERC1967UtilsAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ERC1967Utils contract. +type ERC1967UtilsAdminChangedIterator struct { + Event *ERC1967UtilsAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsAdminChanged represents a AdminChanged event raised by the ERC1967Utils contract. +type ERC1967UtilsAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UtilsAdminChangedIterator, error) { + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &ERC1967UtilsAdminChangedIterator{contract: _ERC1967Utils.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsAdminChanged) (event.Subscription, error) { + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsAdminChanged) + if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseAdminChanged(log types.Log) (*ERC1967UtilsAdminChanged, error) { + event := new(ERC1967UtilsAdminChanged) + if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ERC1967Utils contract. +type ERC1967UtilsBeaconUpgradedIterator struct { + Event *ERC1967UtilsBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsBeaconUpgraded represents a BeaconUpgraded event raised by the ERC1967Utils contract. +type ERC1967UtilsBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UtilsBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &ERC1967UtilsBeaconUpgradedIterator{contract: _ERC1967Utils.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsBeaconUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseBeaconUpgraded(log types.Log) (*ERC1967UtilsBeaconUpgraded, error) { + event := new(ERC1967UtilsBeaconUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Utils contract. +type ERC1967UtilsUpgradedIterator struct { + Event *ERC1967UtilsUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsUpgraded represents a Upgraded event raised by the ERC1967Utils contract. +type ERC1967UtilsUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UtilsUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ERC1967UtilsUpgradedIterator{contract: _ERC1967Utils.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseUpgraded(log types.Log) (*ERC1967UtilsUpgraded, error) { + event := new(ERC1967UtilsUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IBeaconMetaData contains all meta data concerning the IBeacon contract. +var IBeaconMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IBeaconABI is the input ABI used to generate the binding from. +// Deprecated: Use IBeaconMetaData.ABI instead. +var IBeaconABI = IBeaconMetaData.ABI + +// IBeacon is an auto generated Go binding around an Ethereum contract. +type IBeacon struct { + IBeaconCaller // Read-only binding to the contract + IBeaconTransactor // Write-only binding to the contract + IBeaconFilterer // Log filterer for contract events +} + +// IBeaconCaller is an auto generated read-only Go binding around an Ethereum contract. +type IBeaconCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IBeaconTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IBeaconFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IBeaconSession struct { + Contract *IBeacon // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IBeaconCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IBeaconCallerSession struct { + Contract *IBeaconCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IBeaconTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IBeaconTransactorSession struct { + Contract *IBeaconTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IBeaconRaw is an auto generated low-level Go binding around an Ethereum contract. +type IBeaconRaw struct { + Contract *IBeacon // Generic contract binding to access the raw methods on +} + +// IBeaconCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IBeaconCallerRaw struct { + Contract *IBeaconCaller // Generic read-only contract binding to access the raw methods on +} + +// IBeaconTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IBeaconTransactorRaw struct { + Contract *IBeaconTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIBeacon creates a new instance of IBeacon, bound to a specific deployed contract. +func NewIBeacon(address common.Address, backend bind.ContractBackend) (*IBeacon, error) { + contract, err := bindIBeacon(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IBeacon{IBeaconCaller: IBeaconCaller{contract: contract}, IBeaconTransactor: IBeaconTransactor{contract: contract}, IBeaconFilterer: IBeaconFilterer{contract: contract}}, nil +} + +// NewIBeaconCaller creates a new read-only instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconCaller(address common.Address, caller bind.ContractCaller) (*IBeaconCaller, error) { + contract, err := bindIBeacon(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IBeaconCaller{contract: contract}, nil +} + +// NewIBeaconTransactor creates a new write-only instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconTransactor(address common.Address, transactor bind.ContractTransactor) (*IBeaconTransactor, error) { + contract, err := bindIBeacon(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IBeaconTransactor{contract: contract}, nil +} + +// NewIBeaconFilterer creates a new log filterer instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconFilterer(address common.Address, filterer bind.ContractFilterer) (*IBeaconFilterer, error) { + contract, err := bindIBeacon(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IBeaconFilterer{contract: contract}, nil +} + +// bindIBeacon binds a generic wrapper to an already deployed contract. +func bindIBeacon(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IBeaconMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IBeacon *IBeaconRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeacon.Contract.IBeaconCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IBeacon *IBeaconRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeacon.Contract.IBeaconTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeacon *IBeaconRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeacon.Contract.IBeaconTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IBeacon *IBeaconCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeacon.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IBeacon *IBeaconTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeacon.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeacon *IBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeacon.Contract.contract.Transact(opts, method, params...) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IBeacon.contract.Call(opts, &out, "implementation") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconSession) Implementation() (common.Address, error) { + return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconCallerSession) Implementation() (common.Address, error) { + return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) +} + +// IERC1967MetaData contains all meta data concerning the IERC1967 contract. +var IERC1967MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", +} + +// IERC1967ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC1967MetaData.ABI instead. +var IERC1967ABI = IERC1967MetaData.ABI + +// IERC1967 is an auto generated Go binding around an Ethereum contract. +type IERC1967 struct { + IERC1967Caller // Read-only binding to the contract + IERC1967Transactor // Write-only binding to the contract + IERC1967Filterer // Log filterer for contract events +} + +// IERC1967Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC1967Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC1967Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC1967Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC1967Session struct { + Contract *IERC1967 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1967CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC1967CallerSession struct { + Contract *IERC1967Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC1967TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC1967TransactorSession struct { + Contract *IERC1967Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1967Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC1967Raw struct { + Contract *IERC1967 // Generic contract binding to access the raw methods on +} + +// IERC1967CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC1967CallerRaw struct { + Contract *IERC1967Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC1967TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC1967TransactorRaw struct { + Contract *IERC1967Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC1967 creates a new instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967(address common.Address, backend bind.ContractBackend) (*IERC1967, error) { + contract, err := bindIERC1967(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC1967{IERC1967Caller: IERC1967Caller{contract: contract}, IERC1967Transactor: IERC1967Transactor{contract: contract}, IERC1967Filterer: IERC1967Filterer{contract: contract}}, nil +} + +// NewIERC1967Caller creates a new read-only instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Caller(address common.Address, caller bind.ContractCaller) (*IERC1967Caller, error) { + contract, err := bindIERC1967(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC1967Caller{contract: contract}, nil +} + +// NewIERC1967Transactor creates a new write-only instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC1967Transactor, error) { + contract, err := bindIERC1967(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC1967Transactor{contract: contract}, nil +} + +// NewIERC1967Filterer creates a new log filterer instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC1967Filterer, error) { + contract, err := bindIERC1967(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC1967Filterer{contract: contract}, nil +} + +// bindIERC1967 binds a generic wrapper to an already deployed contract. +func bindIERC1967(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC1967MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1967 *IERC1967Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1967.Contract.IERC1967Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1967 *IERC1967Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1967.Contract.IERC1967Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1967 *IERC1967Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1967.Contract.IERC1967Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1967 *IERC1967CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1967.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1967 *IERC1967TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1967.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1967 *IERC1967TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1967.Contract.contract.Transact(opts, method, params...) +} + +// IERC1967AdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the IERC1967 contract. +type IERC1967AdminChangedIterator struct { + Event *IERC1967AdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967AdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967AdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967AdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967AdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967AdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967AdminChanged represents a AdminChanged event raised by the IERC1967 contract. +type IERC1967AdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967AdminChangedIterator, error) { + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &IERC1967AdminChangedIterator{contract: _IERC1967.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967AdminChanged) (event.Subscription, error) { + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967AdminChanged) + if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) ParseAdminChanged(log types.Log) (*IERC1967AdminChanged, error) { + event := new(IERC1967AdminChanged) + if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC1967BeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the IERC1967 contract. +type IERC1967BeaconUpgradedIterator struct { + Event *IERC1967BeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967BeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967BeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967BeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967BeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967BeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967BeaconUpgraded represents a BeaconUpgraded event raised by the IERC1967 contract. +type IERC1967BeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967BeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &IERC1967BeaconUpgradedIterator{contract: _IERC1967.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967BeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967BeaconUpgraded) + if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) ParseBeaconUpgraded(log types.Log) (*IERC1967BeaconUpgraded, error) { + event := new(IERC1967BeaconUpgraded) + if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC1967UpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the IERC1967 contract. +type IERC1967UpgradedIterator struct { + Event *IERC1967Upgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967UpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967Upgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967Upgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967UpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967UpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967Upgraded represents a Upgraded event raised by the IERC1967 contract. +type IERC1967Upgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &IERC1967UpgradedIterator{contract: _IERC1967.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967Upgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967Upgraded) + if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) ParseUpgraded(log types.Log) (*IERC1967Upgraded, error) { + event := new(IERC1967Upgraded) + if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyMetaData contains all meta data concerning the ITransparentUpgradeableProxy contract. +var ITransparentUpgradeableProxyMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", +} + +// ITransparentUpgradeableProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ITransparentUpgradeableProxyMetaData.ABI instead. +var ITransparentUpgradeableProxyABI = ITransparentUpgradeableProxyMetaData.ABI + +// ITransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. +type ITransparentUpgradeableProxy struct { + ITransparentUpgradeableProxyCaller // Read-only binding to the contract + ITransparentUpgradeableProxyTransactor // Write-only binding to the contract + ITransparentUpgradeableProxyFilterer // Log filterer for contract events +} + +// ITransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITransparentUpgradeableProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITransparentUpgradeableProxySession struct { + Contract *ITransparentUpgradeableProxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITransparentUpgradeableProxyCallerSession struct { + Contract *ITransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITransparentUpgradeableProxyTransactorSession struct { + Contract *ITransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyRaw struct { + Contract *ITransparentUpgradeableProxy // Generic contract binding to access the raw methods on +} + +// ITransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyCallerRaw struct { + Contract *ITransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ITransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyTransactorRaw struct { + Contract *ITransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITransparentUpgradeableProxy creates a new instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*ITransparentUpgradeableProxy, error) { + contract, err := bindITransparentUpgradeableProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxy{ITransparentUpgradeableProxyCaller: ITransparentUpgradeableProxyCaller{contract: contract}, ITransparentUpgradeableProxyTransactor: ITransparentUpgradeableProxyTransactor{contract: contract}, ITransparentUpgradeableProxyFilterer: ITransparentUpgradeableProxyFilterer{contract: contract}}, nil +} + +// NewITransparentUpgradeableProxyCaller creates a new read-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*ITransparentUpgradeableProxyCaller, error) { + contract, err := bindITransparentUpgradeableProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyCaller{contract: contract}, nil +} + +// NewITransparentUpgradeableProxyTransactor creates a new write-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ITransparentUpgradeableProxyTransactor, error) { + contract, err := bindITransparentUpgradeableProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyTransactor{contract: contract}, nil +} + +// NewITransparentUpgradeableProxyFilterer creates a new log filterer instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ITransparentUpgradeableProxyFilterer, error) { + contract, err := bindITransparentUpgradeableProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyFilterer{contract: contract}, nil +} + +// bindITransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. +func bindITransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITransparentUpgradeableProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactor) UpgradeToAndCall(opts *bind.TransactOpts, arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.contract.Transact(opts, "upgradeToAndCall", arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxySession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorSession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) +} + +// ITransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyAdminChangedIterator struct { + Event *ITransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ITransparentUpgradeableProxyAdminChangedIterator, error) { + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyAdminChangedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyAdminChanged) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*ITransparentUpgradeableProxyAdminChanged, error) { + event := new(ITransparentUpgradeableProxyAdminChanged) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyBeaconUpgradedIterator struct { + Event *ITransparentUpgradeableProxyBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyBeaconUpgraded represents a BeaconUpgraded event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ITransparentUpgradeableProxyBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyBeaconUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseBeaconUpgraded(log types.Log) (*ITransparentUpgradeableProxyBeaconUpgraded, error) { + event := new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyUpgradedIterator struct { + Event *ITransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ITransparentUpgradeableProxyUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*ITransparentUpgradeableProxyUpgraded, error) { + event := new(ITransparentUpgradeableProxyUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OwnableMetaData contains all meta data concerning the Ownable contract. +var OwnableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// OwnableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableMetaData.ABI instead. +var OwnableABI = OwnableMetaData.ABI + +// Ownable is an auto generated Go binding around an Ethereum contract. +type Ownable struct { + OwnableCaller // Read-only binding to the contract + OwnableTransactor // Write-only binding to the contract + OwnableFilterer // Log filterer for contract events +} + +// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableSession struct { + Contract *Ownable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableCallerSession struct { + Contract *OwnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableTransactorSession struct { + Contract *OwnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableRaw struct { + Contract *Ownable // Generic contract binding to access the raw methods on +} + +// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableCallerRaw struct { + Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableTransactorRaw struct { + Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. +func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { + contract, err := bindOwnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil +} + +// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { + contract, err := bindOwnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableCaller{contract: contract}, nil +} + +// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { + contract, err := bindOwnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableTransactor{contract: contract}, nil +} + +// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. +func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { + contract, err := bindOwnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableFilterer{contract: contract}, nil +} + +// bindOwnable binds a generic wrapper to an already deployed contract. +func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Ownable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract. +type OwnableOwnershipTransferredIterator struct { + Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract. +type OwnableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) { + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProxyMetaData contains all meta data concerning the Proxy contract. +var ProxyMetaData = &bind.MetaData{ + ABI: "[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", +} + +// ProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ProxyMetaData.ABI instead. +var ProxyABI = ProxyMetaData.ABI + +// Proxy is an auto generated Go binding around an Ethereum contract. +type Proxy struct { + ProxyCaller // Read-only binding to the contract + ProxyTransactor // Write-only binding to the contract + ProxyFilterer // Log filterer for contract events +} + +// ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProxySession struct { + Contract *Proxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProxyCallerSession struct { + Contract *ProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProxyTransactorSession struct { + Contract *ProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProxyRaw struct { + Contract *Proxy // Generic contract binding to access the raw methods on +} + +// ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProxyCallerRaw struct { + Contract *ProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProxyTransactorRaw struct { + Contract *ProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProxy creates a new instance of Proxy, bound to a specific deployed contract. +func NewProxy(address common.Address, backend bind.ContractBackend) (*Proxy, error) { + contract, err := bindProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Proxy{ProxyCaller: ProxyCaller{contract: contract}, ProxyTransactor: ProxyTransactor{contract: contract}, ProxyFilterer: ProxyFilterer{contract: contract}}, nil +} + +// NewProxyCaller creates a new read-only instance of Proxy, bound to a specific deployed contract. +func NewProxyCaller(address common.Address, caller bind.ContractCaller) (*ProxyCaller, error) { + contract, err := bindProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProxyCaller{contract: contract}, nil +} + +// NewProxyTransactor creates a new write-only instance of Proxy, bound to a specific deployed contract. +func NewProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyTransactor, error) { + contract, err := bindProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProxyTransactor{contract: contract}, nil +} + +// NewProxyFilterer creates a new log filterer instance of Proxy, bound to a specific deployed contract. +func NewProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyFilterer, error) { + contract, err := bindProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProxyFilterer{contract: contract}, nil +} + +// bindProxy binds a generic wrapper to an already deployed contract. +func bindProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proxy *ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proxy.Contract.ProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proxy *ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proxy.Contract.ProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proxy *ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proxy.Contract.ProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proxy *ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proxy *ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proxy *ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Proxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) +} + // ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. var ProxyAdminMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeAndCall\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b506040516104d33803806104d383398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103de806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea164736f6c6343000819000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033", +} + +// ProxyAdminABI is the input ABI used to generate the binding from. +// Deprecated: Use ProxyAdminMetaData.ABI instead. +var ProxyAdminABI = ProxyAdminMetaData.ABI + +// ProxyAdminBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ProxyAdminMetaData.Bin instead. +var ProxyAdminBin = ProxyAdminMetaData.Bin + +// DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. +func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { + parsed, err := ProxyAdminMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, initialOwner) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil +} + +// ProxyAdmin is an auto generated Go binding around an Ethereum contract. +type ProxyAdmin struct { + ProxyAdminCaller // Read-only binding to the contract + ProxyAdminTransactor // Write-only binding to the contract + ProxyAdminFilterer // Log filterer for contract events +} + +// ProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProxyAdminCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProxyAdminTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProxyAdminFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProxyAdminSession struct { + Contract *ProxyAdmin // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProxyAdminCallerSession struct { + Contract *ProxyAdminCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProxyAdminTransactorSession struct { + Contract *ProxyAdminTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProxyAdminRaw struct { + Contract *ProxyAdmin // Generic contract binding to access the raw methods on +} + +// ProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProxyAdminCallerRaw struct { + Contract *ProxyAdminCaller // Generic read-only contract binding to access the raw methods on +} + +// ProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProxyAdminTransactorRaw struct { + Contract *ProxyAdminTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProxyAdmin creates a new instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdmin(address common.Address, backend bind.ContractBackend) (*ProxyAdmin, error) { + contract, err := bindProxyAdmin(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil +} + +// NewProxyAdminCaller creates a new read-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*ProxyAdminCaller, error) { + contract, err := bindProxyAdmin(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProxyAdminCaller{contract: contract}, nil +} + +// NewProxyAdminTransactor creates a new write-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyAdminTransactor, error) { + contract, err := bindProxyAdmin(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProxyAdminTransactor{contract: contract}, nil +} + +// NewProxyAdminFilterer creates a new log filterer instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyAdminFilterer, error) { + contract, err := bindProxyAdmin(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProxyAdminFilterer{contract: contract}, nil +} + +// bindProxyAdmin binds a generic wrapper to an already deployed contract. +func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProxyAdminMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ProxyAdmin *ProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.ProxyAdminCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ProxyAdmin *ProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ProxyAdmin *ProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ProxyAdmin *ProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCallerSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "upgradeAndCall", proxy, implementation, data) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +} + +// ProxyAdminOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferredIterator struct { + Event *ProxyAdminOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProxyAdminOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProxyAdminOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// ProxyAdminABI is the input ABI used to generate the binding from. -// Deprecated: Use ProxyAdminMetaData.ABI instead. -var ProxyAdminABI = ProxyAdminMetaData.ABI +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProxyAdminOwnershipTransferredIterator) Error() error { + return it.fail +} -// ProxyAdminBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ProxyAdminMetaData.Bin instead. -var ProxyAdminBin = ProxyAdminMetaData.Bin +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProxyAdminOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} -// DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. -func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { - parsed, err := ProxyAdminMetaData.GetAbi() +// ProxyAdminOwnershipTransferred represents a OwnershipTransferred event raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProxyAdminOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ProxyAdmin.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ProxyAdminOwnershipTransferredIterator{contract: _ProxyAdmin.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProxyAdminOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ProxyAdmin.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) (*ProxyAdminOwnershipTransferred, error) { + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StorageSlotMetaData contains all meta data concerning the StorageSlot contract. +var StorageSlotMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205ba4b68c0f2890fefa20a45ab4fdb3aa3c0defff2fa4e4e8ad178e0a33741fec64736f6c63430008190033", +} + +// StorageSlotABI is the input ABI used to generate the binding from. +// Deprecated: Use StorageSlotMetaData.ABI instead. +var StorageSlotABI = StorageSlotMetaData.ABI + +// StorageSlotBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StorageSlotMetaData.Bin instead. +var StorageSlotBin = StorageSlotMetaData.Bin + +// DeployStorageSlot deploys a new Ethereum contract, binding an instance of StorageSlot to it. +func DeployStorageSlot(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StorageSlot, error) { + parsed, err := StorageSlotMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -53,111 +3662,284 @@ func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, ini return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, initialOwner) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StorageSlotBin), backend) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil + return address, tx, &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil } -// ProxyAdmin is an auto generated Go binding around an Ethereum contract. -type ProxyAdmin struct { - ProxyAdminCaller // Read-only binding to the contract - ProxyAdminTransactor // Write-only binding to the contract - ProxyAdminFilterer // Log filterer for contract events +// StorageSlot is an auto generated Go binding around an Ethereum contract. +type StorageSlot struct { + StorageSlotCaller // Read-only binding to the contract + StorageSlotTransactor // Write-only binding to the contract + StorageSlotFilterer // Log filterer for contract events } -// ProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. -type ProxyAdminCaller struct { +// StorageSlotCaller is an auto generated read-only Go binding around an Ethereum contract. +type StorageSlotCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ProxyAdminTransactor struct { +// StorageSlotTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StorageSlotTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ProxyAdminFilterer struct { +// StorageSlotFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StorageSlotFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ProxyAdminSession is an auto generated Go binding around an Ethereum contract, +// StorageSlotSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ProxyAdminSession struct { - Contract *ProxyAdmin // Generic contract binding to set the session for +type StorageSlotSession struct { + Contract *StorageSlot // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// StorageSlotCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ProxyAdminCallerSession struct { - Contract *ProxyAdminCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type StorageSlotCallerSession struct { + Contract *StorageSlotCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// StorageSlotTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ProxyAdminTransactorSession struct { - Contract *ProxyAdminTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type StorageSlotTransactorSession struct { + Contract *StorageSlotTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StorageSlotRaw is an auto generated low-level Go binding around an Ethereum contract. +type StorageSlotRaw struct { + Contract *StorageSlot // Generic contract binding to access the raw methods on +} + +// StorageSlotCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StorageSlotCallerRaw struct { + Contract *StorageSlotCaller // Generic read-only contract binding to access the raw methods on +} + +// StorageSlotTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StorageSlotTransactorRaw struct { + Contract *StorageSlotTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStorageSlot creates a new instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlot(address common.Address, backend bind.ContractBackend) (*StorageSlot, error) { + contract, err := bindStorageSlot(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil +} + +// NewStorageSlotCaller creates a new read-only instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotCaller(address common.Address, caller bind.ContractCaller) (*StorageSlotCaller, error) { + contract, err := bindStorageSlot(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StorageSlotCaller{contract: contract}, nil +} + +// NewStorageSlotTransactor creates a new write-only instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotTransactor(address common.Address, transactor bind.ContractTransactor) (*StorageSlotTransactor, error) { + contract, err := bindStorageSlot(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StorageSlotTransactor{contract: contract}, nil +} + +// NewStorageSlotFilterer creates a new log filterer instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotFilterer(address common.Address, filterer bind.ContractFilterer) (*StorageSlotFilterer, error) { + contract, err := bindStorageSlot(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StorageSlotFilterer{contract: contract}, nil +} + +// bindStorageSlot binds a generic wrapper to an already deployed contract. +func bindStorageSlot(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StorageSlotMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StorageSlot *StorageSlotRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StorageSlot.Contract.StorageSlotCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StorageSlot *StorageSlotRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StorageSlot.Contract.StorageSlotTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StorageSlot *StorageSlotRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StorageSlot.Contract.StorageSlotTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StorageSlot *StorageSlotCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StorageSlot.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StorageSlot *StorageSlotTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StorageSlot.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StorageSlot *StorageSlotTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StorageSlot.Contract.contract.Transact(opts, method, params...) +} + +// TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. +var TransparentUpgradeableProxyMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", + Bin: "0x60a0604052604051610dbc380380610dbc8339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b50505061044b565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d9c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610435565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d9c8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104e7806108b583390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b03808211156103af575f80fd5b818601915086601f8301126103c2575f80fd5b8151818111156103d4576103d4610356565b604051601f8201601f19908116603f011681019083821181831017156103fc576103fc610356565b81604052828152896020848701011115610414575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104536104625f395f601001526104535ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212204423f74f93e7db279ee266fc7a53465e65cd2894fc1504291f691df5682c71a764736f6c63430008190033608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", +} + +// TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use TransparentUpgradeableProxyMetaData.ABI instead. +var TransparentUpgradeableProxyABI = TransparentUpgradeableProxyMetaData.ABI + +// TransparentUpgradeableProxyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use TransparentUpgradeableProxyMetaData.Bin instead. +var TransparentUpgradeableProxyBin = TransparentUpgradeableProxyMetaData.Bin + +// DeployTransparentUpgradeableProxy deploys a new Ethereum contract, binding an instance of TransparentUpgradeableProxy to it. +func DeployTransparentUpgradeableProxy(auth *bind.TransactOpts, backend bind.ContractBackend, _logic common.Address, initialOwner common.Address, _data []byte) (common.Address, *types.Transaction, *TransparentUpgradeableProxy, error) { + parsed, err := TransparentUpgradeableProxyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TransparentUpgradeableProxyBin), backend, _logic, initialOwner, _data) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &TransparentUpgradeableProxy{TransparentUpgradeableProxyCaller: TransparentUpgradeableProxyCaller{contract: contract}, TransparentUpgradeableProxyTransactor: TransparentUpgradeableProxyTransactor{contract: contract}, TransparentUpgradeableProxyFilterer: TransparentUpgradeableProxyFilterer{contract: contract}}, nil +} + +// TransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. +type TransparentUpgradeableProxy struct { + TransparentUpgradeableProxyCaller // Read-only binding to the contract + TransparentUpgradeableProxyTransactor // Write-only binding to the contract + TransparentUpgradeableProxyFilterer // Log filterer for contract events +} + +// TransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TransparentUpgradeableProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TransparentUpgradeableProxySession struct { + Contract *TransparentUpgradeableProxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TransparentUpgradeableProxyCallerSession struct { + Contract *TransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TransparentUpgradeableProxyTransactorSession struct { + Contract *TransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. -type ProxyAdminRaw struct { - Contract *ProxyAdmin // Generic contract binding to access the raw methods on +// TransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type TransparentUpgradeableProxyRaw struct { + Contract *TransparentUpgradeableProxy // Generic contract binding to access the raw methods on } -// ProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ProxyAdminCallerRaw struct { - Contract *ProxyAdminCaller // Generic read-only contract binding to access the raw methods on +// TransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyCallerRaw struct { + Contract *TransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on } -// ProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ProxyAdminTransactorRaw struct { - Contract *ProxyAdminTransactor // Generic write-only contract binding to access the raw methods on +// TransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyTransactorRaw struct { + Contract *TransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on } -// NewProxyAdmin creates a new instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdmin(address common.Address, backend bind.ContractBackend) (*ProxyAdmin, error) { - contract, err := bindProxyAdmin(address, backend, backend, backend) +// NewTransparentUpgradeableProxy creates a new instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*TransparentUpgradeableProxy, error) { + contract, err := bindTransparentUpgradeableProxy(address, backend, backend, backend) if err != nil { return nil, err } - return &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil + return &TransparentUpgradeableProxy{TransparentUpgradeableProxyCaller: TransparentUpgradeableProxyCaller{contract: contract}, TransparentUpgradeableProxyTransactor: TransparentUpgradeableProxyTransactor{contract: contract}, TransparentUpgradeableProxyFilterer: TransparentUpgradeableProxyFilterer{contract: contract}}, nil } -// NewProxyAdminCaller creates a new read-only instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*ProxyAdminCaller, error) { - contract, err := bindProxyAdmin(address, caller, nil, nil) +// NewTransparentUpgradeableProxyCaller creates a new read-only instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*TransparentUpgradeableProxyCaller, error) { + contract, err := bindTransparentUpgradeableProxy(address, caller, nil, nil) if err != nil { return nil, err } - return &ProxyAdminCaller{contract: contract}, nil + return &TransparentUpgradeableProxyCaller{contract: contract}, nil } -// NewProxyAdminTransactor creates a new write-only instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyAdminTransactor, error) { - contract, err := bindProxyAdmin(address, nil, transactor, nil) +// NewTransparentUpgradeableProxyTransactor creates a new write-only instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*TransparentUpgradeableProxyTransactor, error) { + contract, err := bindTransparentUpgradeableProxy(address, nil, transactor, nil) if err != nil { return nil, err } - return &ProxyAdminTransactor{contract: contract}, nil + return &TransparentUpgradeableProxyTransactor{contract: contract}, nil } -// NewProxyAdminFilterer creates a new log filterer instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyAdminFilterer, error) { - contract, err := bindProxyAdmin(address, nil, nil, filterer) +// NewTransparentUpgradeableProxyFilterer creates a new log filterer instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*TransparentUpgradeableProxyFilterer, error) { + contract, err := bindTransparentUpgradeableProxy(address, nil, nil, filterer) if err != nil { return nil, err } - return &ProxyAdminFilterer{contract: contract}, nil + return &TransparentUpgradeableProxyFilterer{contract: contract}, nil } -// bindProxyAdmin binds a generic wrapper to an already deployed contract. -func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ProxyAdminMetaData.GetAbi() +// bindTransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. +func bindTransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TransparentUpgradeableProxyMetaData.GetAbi() if err != nil { return nil, err } @@ -168,168 +3950,199 @@ func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transact // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ProxyAdmin *ProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ProxyAdmin.Contract.ProxyAdminCaller.contract.Call(opts, result, method, params...) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ProxyAdmin *ProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transfer(opts) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ProxyAdmin *ProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transact(opts, method, params...) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ProxyAdmin *ProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ProxyAdmin.Contract.contract.Call(opts, result, method, params...) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ProxyAdmin *ProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.Contract.contract.Transfer(opts) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ProxyAdmin *ProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ProxyAdmin.Contract.contract.Transact(opts, method, params...) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) } -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// Fallback is a paid mutator transaction binding the contract fallback function. // -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ProxyAdmin.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - +// Solidity: fallback() payable returns() +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.contract.RawTransact(opts, calldata) } -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// Fallback is a paid mutator transaction binding the contract fallback function. // -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminSession) UPGRADEINTERFACEVERSION() (string, error) { - return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +// Solidity: fallback() payable returns() +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.Fallback(&_TransparentUpgradeableProxy.TransactOpts, calldata) } -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// Fallback is a paid mutator transaction binding the contract fallback function. // -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminCallerSession) UPGRADEINTERFACEVERSION() (string, error) { - return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +// Solidity: fallback() payable returns() +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.Fallback(&_TransparentUpgradeableProxy.TransactOpts, calldata) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ProxyAdmin.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) +// TransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyAdminChangedIterator struct { + Event *TransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log - return out0, err + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminSession) Owner() (common.Address, error) { - return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TransparentUpgradeableProxyAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminCallerSession) Owner() (common.Address, error) { - return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "renounceOwnership") + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminSession) RenounceOwnership() (*types.Transaction, error) { - return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TransparentUpgradeableProxyAdminChangedIterator) Error() error { + return it.fail } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TransparentUpgradeableProxyAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "transferOwnership", newOwner) +// TransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) -} +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*TransparentUpgradeableProxyAdminChangedIterator, error) { -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) + logs, sub, err := _TransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &TransparentUpgradeableProxyAdminChangedIterator{contract: _TransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil } -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. // -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "upgradeAndCall", proxy, implementation, data) -} +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *TransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. -// -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) + logs, sub, err := _TransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TransparentUpgradeableProxyAdminChanged) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. // -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*TransparentUpgradeableProxyAdminChanged, error) { + event := new(TransparentUpgradeableProxyAdminChanged) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// ProxyAdminOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ProxyAdmin contract. -type ProxyAdminOwnershipTransferredIterator struct { - Event *ProxyAdminOwnershipTransferred // Event containing the contract specifics and raw log +// TransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyUpgradedIterator struct { + Event *TransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -343,7 +4156,7 @@ type ProxyAdminOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { +func (it *TransparentUpgradeableProxyUpgradedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -352,7 +4165,7 @@ func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ProxyAdminOwnershipTransferred) + it.Event = new(TransparentUpgradeableProxyUpgraded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -367,7 +4180,7 @@ func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ProxyAdminOwnershipTransferred) + it.Event = new(TransparentUpgradeableProxyUpgraded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -383,60 +4196,51 @@ func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ProxyAdminOwnershipTransferredIterator) Error() error { +func (it *TransparentUpgradeableProxyUpgradedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ProxyAdminOwnershipTransferredIterator) Close() error { +func (it *TransparentUpgradeableProxyUpgradedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ProxyAdminOwnershipTransferred represents a OwnershipTransferred event raised by the ProxyAdmin contract. -type ProxyAdminOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// TransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProxyAdminOwnershipTransferredIterator, error) { +// Solidity: event Upgraded(address indexed implementation) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*TransparentUpgradeableProxyUpgradedIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) } - logs, sub, err := _ProxyAdmin.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) if err != nil { return nil, err } - return &ProxyAdminOwnershipTransferredIterator{contract: _ProxyAdmin.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &TransparentUpgradeableProxyUpgradedIterator{contract: _TransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProxyAdminOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event Upgraded(address indexed implementation) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *TransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) } - logs, sub, err := _ProxyAdmin.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) if err != nil { return nil, err } @@ -446,8 +4250,8 @@ func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ProxyAdminOwnershipTransferred) - if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(TransparentUpgradeableProxyUpgraded) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { return err } event.Raw = log @@ -468,12 +4272,12 @@ func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.Watc }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) (*ProxyAdminOwnershipTransferred, error) { - event := new(ProxyAdminOwnershipTransferred) - if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event Upgraded(address indexed implementation) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*TransparentUpgradeableProxyUpgraded, error) { + event := new(TransparentUpgradeableProxyUpgraded) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } event.Raw = log diff --git a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go index a054267e5..65aae70d9 100644 --- a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go +++ b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go @@ -29,10 +29,3792 @@ var ( _ = abi.ConvertType ) +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", +} + +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events +} + +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on +} + +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +} + +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AddressCaller{contract: contract}, nil +} + +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AddressTransactor{contract: contract}, nil +} + +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AddressFilterer{contract: contract}, nil +} + +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) +} + +// ContextMetaData contains all meta data concerning the Context contract. +var ContextMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ContextABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextMetaData.ABI instead. +var ContextABI = ContextMetaData.ABI + +// Context is an auto generated Go binding around an Ethereum contract. +type Context struct { + ContextCaller // Read-only binding to the contract + ContextTransactor // Write-only binding to the contract + ContextFilterer // Log filterer for contract events +} + +// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextSession struct { + Contract *Context // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextCallerSession struct { + Contract *ContextCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextTransactorSession struct { + Contract *ContextTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextRaw struct { + Contract *Context // Generic contract binding to access the raw methods on +} + +// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextCallerRaw struct { + Contract *ContextCaller // Generic read-only contract binding to access the raw methods on +} + +// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextTransactorRaw struct { + Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContext creates a new instance of Context, bound to a specific deployed contract. +func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { + contract, err := bindContext(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil +} + +// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. +func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { + contract, err := bindContext(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextCaller{contract: contract}, nil +} + +// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. +func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { + contract, err := bindContext(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextTransactor{contract: contract}, nil +} + +// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. +func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { + contract, err := bindContext(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContextFilterer{contract: contract}, nil +} + +// bindContext binds a generic wrapper to an already deployed contract. +func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.contract.Transact(opts, method, params...) +} + +// ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. +var ERC1967ProxyMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", + Bin: "0x60806040526040516103ca3803806103ca8339810160408190526100229161023c565b61002c8282610033565b505061031b565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610305565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b038082111561027f575f80fd5b818501915085601f830112610292575f80fd5b8151818111156102a4576102a4610228565b604051601f8201601f19908116603f011681019083821181831017156102cc576102cc610228565b816040528281528860208487010111156102e4575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f82518060208501845e5f920191825250919050565b60a3806103275f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201d71d9606c221249d6bea9623205d9628509770cc2b548646e0eee653df844eb64736f6c63430008190033", +} + +// ERC1967ProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC1967ProxyMetaData.ABI instead. +var ERC1967ProxyABI = ERC1967ProxyMetaData.ABI + +// ERC1967ProxyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC1967ProxyMetaData.Bin instead. +var ERC1967ProxyBin = ERC1967ProxyMetaData.Bin + +// DeployERC1967Proxy deploys a new Ethereum contract, binding an instance of ERC1967Proxy to it. +func DeployERC1967Proxy(auth *bind.TransactOpts, backend bind.ContractBackend, implementation common.Address, _data []byte) (common.Address, *types.Transaction, *ERC1967Proxy, error) { + parsed, err := ERC1967ProxyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967ProxyBin), backend, implementation, _data) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil +} + +// ERC1967Proxy is an auto generated Go binding around an Ethereum contract. +type ERC1967Proxy struct { + ERC1967ProxyCaller // Read-only binding to the contract + ERC1967ProxyTransactor // Write-only binding to the contract + ERC1967ProxyFilterer // Log filterer for contract events +} + +// ERC1967ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC1967ProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC1967ProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC1967ProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC1967ProxySession struct { + Contract *ERC1967Proxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC1967ProxyCallerSession struct { + Contract *ERC1967ProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC1967ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC1967ProxyTransactorSession struct { + Contract *ERC1967ProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC1967ProxyRaw struct { + Contract *ERC1967Proxy // Generic contract binding to access the raw methods on +} + +// ERC1967ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC1967ProxyCallerRaw struct { + Contract *ERC1967ProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC1967ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC1967ProxyTransactorRaw struct { + Contract *ERC1967ProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC1967Proxy creates a new instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967Proxy(address common.Address, backend bind.ContractBackend) (*ERC1967Proxy, error) { + contract, err := bindERC1967Proxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil +} + +// NewERC1967ProxyCaller creates a new read-only instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyCaller(address common.Address, caller bind.ContractCaller) (*ERC1967ProxyCaller, error) { + contract, err := bindERC1967Proxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC1967ProxyCaller{contract: contract}, nil +} + +// NewERC1967ProxyTransactor creates a new write-only instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967ProxyTransactor, error) { + contract, err := bindERC1967Proxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC1967ProxyTransactor{contract: contract}, nil +} + +// NewERC1967ProxyFilterer creates a new log filterer instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967ProxyFilterer, error) { + contract, err := bindERC1967Proxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC1967ProxyFilterer{contract: contract}, nil +} + +// bindERC1967Proxy binds a generic wrapper to an already deployed contract. +func bindERC1967Proxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC1967ProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Proxy *ERC1967ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Proxy.Contract.ERC1967ProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Proxy *ERC1967ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Proxy *ERC1967ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Proxy *ERC1967ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Proxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) +} + +// ERC1967ProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Proxy contract. +type ERC1967ProxyUpgradedIterator struct { + Event *ERC1967ProxyUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967ProxyUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967ProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967ProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967ProxyUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967ProxyUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967ProxyUpgraded represents a Upgraded event raised by the ERC1967Proxy contract. +type ERC1967ProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967ProxyUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Proxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ERC1967ProxyUpgradedIterator{contract: _ERC1967Proxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Proxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967ProxyUpgraded) + if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC1967ProxyUpgraded, error) { + event := new(ERC1967ProxyUpgraded) + if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. +var ERC1967UtilsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206102e0afcf8d6f22c46ef1da3bd84f4a9180c360db8303cf6ce7c1339a50f2e764736f6c63430008190033", +} + +// ERC1967UtilsABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC1967UtilsMetaData.ABI instead. +var ERC1967UtilsABI = ERC1967UtilsMetaData.ABI + +// ERC1967UtilsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC1967UtilsMetaData.Bin instead. +var ERC1967UtilsBin = ERC1967UtilsMetaData.Bin + +// DeployERC1967Utils deploys a new Ethereum contract, binding an instance of ERC1967Utils to it. +func DeployERC1967Utils(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC1967Utils, error) { + parsed, err := ERC1967UtilsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967UtilsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil +} + +// ERC1967Utils is an auto generated Go binding around an Ethereum contract. +type ERC1967Utils struct { + ERC1967UtilsCaller // Read-only binding to the contract + ERC1967UtilsTransactor // Write-only binding to the contract + ERC1967UtilsFilterer // Log filterer for contract events +} + +// ERC1967UtilsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC1967UtilsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC1967UtilsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC1967UtilsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC1967UtilsSession struct { + Contract *ERC1967Utils // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967UtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC1967UtilsCallerSession struct { + Contract *ERC1967UtilsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC1967UtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC1967UtilsTransactorSession struct { + Contract *ERC1967UtilsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967UtilsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC1967UtilsRaw struct { + Contract *ERC1967Utils // Generic contract binding to access the raw methods on +} + +// ERC1967UtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC1967UtilsCallerRaw struct { + Contract *ERC1967UtilsCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC1967UtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC1967UtilsTransactorRaw struct { + Contract *ERC1967UtilsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC1967Utils creates a new instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967Utils(address common.Address, backend bind.ContractBackend) (*ERC1967Utils, error) { + contract, err := bindERC1967Utils(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil +} + +// NewERC1967UtilsCaller creates a new read-only instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsCaller(address common.Address, caller bind.ContractCaller) (*ERC1967UtilsCaller, error) { + contract, err := bindERC1967Utils(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC1967UtilsCaller{contract: contract}, nil +} + +// NewERC1967UtilsTransactor creates a new write-only instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967UtilsTransactor, error) { + contract, err := bindERC1967Utils(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC1967UtilsTransactor{contract: contract}, nil +} + +// NewERC1967UtilsFilterer creates a new log filterer instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967UtilsFilterer, error) { + contract, err := bindERC1967Utils(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC1967UtilsFilterer{contract: contract}, nil +} + +// bindERC1967Utils binds a generic wrapper to an already deployed contract. +func bindERC1967Utils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC1967UtilsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Utils *ERC1967UtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Utils.Contract.ERC1967UtilsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Utils *ERC1967UtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Utils *ERC1967UtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Utils *ERC1967UtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Utils.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Utils.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Utils.Contract.contract.Transact(opts, method, params...) +} + +// ERC1967UtilsAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ERC1967Utils contract. +type ERC1967UtilsAdminChangedIterator struct { + Event *ERC1967UtilsAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsAdminChanged represents a AdminChanged event raised by the ERC1967Utils contract. +type ERC1967UtilsAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UtilsAdminChangedIterator, error) { + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &ERC1967UtilsAdminChangedIterator{contract: _ERC1967Utils.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsAdminChanged) (event.Subscription, error) { + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsAdminChanged) + if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseAdminChanged(log types.Log) (*ERC1967UtilsAdminChanged, error) { + event := new(ERC1967UtilsAdminChanged) + if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ERC1967Utils contract. +type ERC1967UtilsBeaconUpgradedIterator struct { + Event *ERC1967UtilsBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsBeaconUpgraded represents a BeaconUpgraded event raised by the ERC1967Utils contract. +type ERC1967UtilsBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UtilsBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &ERC1967UtilsBeaconUpgradedIterator{contract: _ERC1967Utils.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsBeaconUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseBeaconUpgraded(log types.Log) (*ERC1967UtilsBeaconUpgraded, error) { + event := new(ERC1967UtilsBeaconUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Utils contract. +type ERC1967UtilsUpgradedIterator struct { + Event *ERC1967UtilsUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsUpgraded represents a Upgraded event raised by the ERC1967Utils contract. +type ERC1967UtilsUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UtilsUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ERC1967UtilsUpgradedIterator{contract: _ERC1967Utils.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseUpgraded(log types.Log) (*ERC1967UtilsUpgraded, error) { + event := new(ERC1967UtilsUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IBeaconMetaData contains all meta data concerning the IBeacon contract. +var IBeaconMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IBeaconABI is the input ABI used to generate the binding from. +// Deprecated: Use IBeaconMetaData.ABI instead. +var IBeaconABI = IBeaconMetaData.ABI + +// IBeacon is an auto generated Go binding around an Ethereum contract. +type IBeacon struct { + IBeaconCaller // Read-only binding to the contract + IBeaconTransactor // Write-only binding to the contract + IBeaconFilterer // Log filterer for contract events +} + +// IBeaconCaller is an auto generated read-only Go binding around an Ethereum contract. +type IBeaconCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IBeaconTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IBeaconFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IBeaconSession struct { + Contract *IBeacon // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IBeaconCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IBeaconCallerSession struct { + Contract *IBeaconCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IBeaconTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IBeaconTransactorSession struct { + Contract *IBeaconTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IBeaconRaw is an auto generated low-level Go binding around an Ethereum contract. +type IBeaconRaw struct { + Contract *IBeacon // Generic contract binding to access the raw methods on +} + +// IBeaconCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IBeaconCallerRaw struct { + Contract *IBeaconCaller // Generic read-only contract binding to access the raw methods on +} + +// IBeaconTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IBeaconTransactorRaw struct { + Contract *IBeaconTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIBeacon creates a new instance of IBeacon, bound to a specific deployed contract. +func NewIBeacon(address common.Address, backend bind.ContractBackend) (*IBeacon, error) { + contract, err := bindIBeacon(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IBeacon{IBeaconCaller: IBeaconCaller{contract: contract}, IBeaconTransactor: IBeaconTransactor{contract: contract}, IBeaconFilterer: IBeaconFilterer{contract: contract}}, nil +} + +// NewIBeaconCaller creates a new read-only instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconCaller(address common.Address, caller bind.ContractCaller) (*IBeaconCaller, error) { + contract, err := bindIBeacon(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IBeaconCaller{contract: contract}, nil +} + +// NewIBeaconTransactor creates a new write-only instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconTransactor(address common.Address, transactor bind.ContractTransactor) (*IBeaconTransactor, error) { + contract, err := bindIBeacon(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IBeaconTransactor{contract: contract}, nil +} + +// NewIBeaconFilterer creates a new log filterer instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconFilterer(address common.Address, filterer bind.ContractFilterer) (*IBeaconFilterer, error) { + contract, err := bindIBeacon(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IBeaconFilterer{contract: contract}, nil +} + +// bindIBeacon binds a generic wrapper to an already deployed contract. +func bindIBeacon(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IBeaconMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IBeacon *IBeaconRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeacon.Contract.IBeaconCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IBeacon *IBeaconRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeacon.Contract.IBeaconTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeacon *IBeaconRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeacon.Contract.IBeaconTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IBeacon *IBeaconCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeacon.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IBeacon *IBeaconTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeacon.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeacon *IBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeacon.Contract.contract.Transact(opts, method, params...) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IBeacon.contract.Call(opts, &out, "implementation") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconSession) Implementation() (common.Address, error) { + return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconCallerSession) Implementation() (common.Address, error) { + return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) +} + +// IERC1967MetaData contains all meta data concerning the IERC1967 contract. +var IERC1967MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", +} + +// IERC1967ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC1967MetaData.ABI instead. +var IERC1967ABI = IERC1967MetaData.ABI + +// IERC1967 is an auto generated Go binding around an Ethereum contract. +type IERC1967 struct { + IERC1967Caller // Read-only binding to the contract + IERC1967Transactor // Write-only binding to the contract + IERC1967Filterer // Log filterer for contract events +} + +// IERC1967Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC1967Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC1967Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC1967Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC1967Session struct { + Contract *IERC1967 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1967CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC1967CallerSession struct { + Contract *IERC1967Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC1967TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC1967TransactorSession struct { + Contract *IERC1967Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1967Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC1967Raw struct { + Contract *IERC1967 // Generic contract binding to access the raw methods on +} + +// IERC1967CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC1967CallerRaw struct { + Contract *IERC1967Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC1967TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC1967TransactorRaw struct { + Contract *IERC1967Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC1967 creates a new instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967(address common.Address, backend bind.ContractBackend) (*IERC1967, error) { + contract, err := bindIERC1967(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC1967{IERC1967Caller: IERC1967Caller{contract: contract}, IERC1967Transactor: IERC1967Transactor{contract: contract}, IERC1967Filterer: IERC1967Filterer{contract: contract}}, nil +} + +// NewIERC1967Caller creates a new read-only instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Caller(address common.Address, caller bind.ContractCaller) (*IERC1967Caller, error) { + contract, err := bindIERC1967(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC1967Caller{contract: contract}, nil +} + +// NewIERC1967Transactor creates a new write-only instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC1967Transactor, error) { + contract, err := bindIERC1967(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC1967Transactor{contract: contract}, nil +} + +// NewIERC1967Filterer creates a new log filterer instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC1967Filterer, error) { + contract, err := bindIERC1967(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC1967Filterer{contract: contract}, nil +} + +// bindIERC1967 binds a generic wrapper to an already deployed contract. +func bindIERC1967(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC1967MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1967 *IERC1967Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1967.Contract.IERC1967Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1967 *IERC1967Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1967.Contract.IERC1967Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1967 *IERC1967Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1967.Contract.IERC1967Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1967 *IERC1967CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1967.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1967 *IERC1967TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1967.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1967 *IERC1967TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1967.Contract.contract.Transact(opts, method, params...) +} + +// IERC1967AdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the IERC1967 contract. +type IERC1967AdminChangedIterator struct { + Event *IERC1967AdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967AdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967AdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967AdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967AdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967AdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967AdminChanged represents a AdminChanged event raised by the IERC1967 contract. +type IERC1967AdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967AdminChangedIterator, error) { + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &IERC1967AdminChangedIterator{contract: _IERC1967.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967AdminChanged) (event.Subscription, error) { + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967AdminChanged) + if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) ParseAdminChanged(log types.Log) (*IERC1967AdminChanged, error) { + event := new(IERC1967AdminChanged) + if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC1967BeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the IERC1967 contract. +type IERC1967BeaconUpgradedIterator struct { + Event *IERC1967BeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967BeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967BeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967BeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967BeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967BeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967BeaconUpgraded represents a BeaconUpgraded event raised by the IERC1967 contract. +type IERC1967BeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967BeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &IERC1967BeaconUpgradedIterator{contract: _IERC1967.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967BeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967BeaconUpgraded) + if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) ParseBeaconUpgraded(log types.Log) (*IERC1967BeaconUpgraded, error) { + event := new(IERC1967BeaconUpgraded) + if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC1967UpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the IERC1967 contract. +type IERC1967UpgradedIterator struct { + Event *IERC1967Upgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967UpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967Upgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967Upgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967UpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967UpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967Upgraded represents a Upgraded event raised by the IERC1967 contract. +type IERC1967Upgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &IERC1967UpgradedIterator{contract: _IERC1967.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967Upgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967Upgraded) + if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) ParseUpgraded(log types.Log) (*IERC1967Upgraded, error) { + event := new(IERC1967Upgraded) + if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyMetaData contains all meta data concerning the ITransparentUpgradeableProxy contract. +var ITransparentUpgradeableProxyMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", +} + +// ITransparentUpgradeableProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ITransparentUpgradeableProxyMetaData.ABI instead. +var ITransparentUpgradeableProxyABI = ITransparentUpgradeableProxyMetaData.ABI + +// ITransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. +type ITransparentUpgradeableProxy struct { + ITransparentUpgradeableProxyCaller // Read-only binding to the contract + ITransparentUpgradeableProxyTransactor // Write-only binding to the contract + ITransparentUpgradeableProxyFilterer // Log filterer for contract events +} + +// ITransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITransparentUpgradeableProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITransparentUpgradeableProxySession struct { + Contract *ITransparentUpgradeableProxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITransparentUpgradeableProxyCallerSession struct { + Contract *ITransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITransparentUpgradeableProxyTransactorSession struct { + Contract *ITransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyRaw struct { + Contract *ITransparentUpgradeableProxy // Generic contract binding to access the raw methods on +} + +// ITransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyCallerRaw struct { + Contract *ITransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ITransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyTransactorRaw struct { + Contract *ITransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITransparentUpgradeableProxy creates a new instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*ITransparentUpgradeableProxy, error) { + contract, err := bindITransparentUpgradeableProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxy{ITransparentUpgradeableProxyCaller: ITransparentUpgradeableProxyCaller{contract: contract}, ITransparentUpgradeableProxyTransactor: ITransparentUpgradeableProxyTransactor{contract: contract}, ITransparentUpgradeableProxyFilterer: ITransparentUpgradeableProxyFilterer{contract: contract}}, nil +} + +// NewITransparentUpgradeableProxyCaller creates a new read-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*ITransparentUpgradeableProxyCaller, error) { + contract, err := bindITransparentUpgradeableProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyCaller{contract: contract}, nil +} + +// NewITransparentUpgradeableProxyTransactor creates a new write-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ITransparentUpgradeableProxyTransactor, error) { + contract, err := bindITransparentUpgradeableProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyTransactor{contract: contract}, nil +} + +// NewITransparentUpgradeableProxyFilterer creates a new log filterer instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ITransparentUpgradeableProxyFilterer, error) { + contract, err := bindITransparentUpgradeableProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyFilterer{contract: contract}, nil +} + +// bindITransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. +func bindITransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITransparentUpgradeableProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactor) UpgradeToAndCall(opts *bind.TransactOpts, arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.contract.Transact(opts, "upgradeToAndCall", arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxySession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorSession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) +} + +// ITransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyAdminChangedIterator struct { + Event *ITransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ITransparentUpgradeableProxyAdminChangedIterator, error) { + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyAdminChangedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyAdminChanged) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*ITransparentUpgradeableProxyAdminChanged, error) { + event := new(ITransparentUpgradeableProxyAdminChanged) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyBeaconUpgradedIterator struct { + Event *ITransparentUpgradeableProxyBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyBeaconUpgraded represents a BeaconUpgraded event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ITransparentUpgradeableProxyBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyBeaconUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseBeaconUpgraded(log types.Log) (*ITransparentUpgradeableProxyBeaconUpgraded, error) { + event := new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyUpgradedIterator struct { + Event *ITransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ITransparentUpgradeableProxyUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*ITransparentUpgradeableProxyUpgraded, error) { + event := new(ITransparentUpgradeableProxyUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OwnableMetaData contains all meta data concerning the Ownable contract. +var OwnableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// OwnableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableMetaData.ABI instead. +var OwnableABI = OwnableMetaData.ABI + +// Ownable is an auto generated Go binding around an Ethereum contract. +type Ownable struct { + OwnableCaller // Read-only binding to the contract + OwnableTransactor // Write-only binding to the contract + OwnableFilterer // Log filterer for contract events +} + +// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableSession struct { + Contract *Ownable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableCallerSession struct { + Contract *OwnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableTransactorSession struct { + Contract *OwnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableRaw struct { + Contract *Ownable // Generic contract binding to access the raw methods on +} + +// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableCallerRaw struct { + Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableTransactorRaw struct { + Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. +func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { + contract, err := bindOwnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil +} + +// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { + contract, err := bindOwnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableCaller{contract: contract}, nil +} + +// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { + contract, err := bindOwnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableTransactor{contract: contract}, nil +} + +// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. +func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { + contract, err := bindOwnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableFilterer{contract: contract}, nil +} + +// bindOwnable binds a generic wrapper to an already deployed contract. +func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Ownable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract. +type OwnableOwnershipTransferredIterator struct { + Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract. +type OwnableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) { + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ProxyMetaData contains all meta data concerning the Proxy contract. +var ProxyMetaData = &bind.MetaData{ + ABI: "[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", +} + +// ProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ProxyMetaData.ABI instead. +var ProxyABI = ProxyMetaData.ABI + +// Proxy is an auto generated Go binding around an Ethereum contract. +type Proxy struct { + ProxyCaller // Read-only binding to the contract + ProxyTransactor // Write-only binding to the contract + ProxyFilterer // Log filterer for contract events +} + +// ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProxySession struct { + Contract *Proxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProxyCallerSession struct { + Contract *ProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProxyTransactorSession struct { + Contract *ProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProxyRaw struct { + Contract *Proxy // Generic contract binding to access the raw methods on +} + +// ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProxyCallerRaw struct { + Contract *ProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProxyTransactorRaw struct { + Contract *ProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProxy creates a new instance of Proxy, bound to a specific deployed contract. +func NewProxy(address common.Address, backend bind.ContractBackend) (*Proxy, error) { + contract, err := bindProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Proxy{ProxyCaller: ProxyCaller{contract: contract}, ProxyTransactor: ProxyTransactor{contract: contract}, ProxyFilterer: ProxyFilterer{contract: contract}}, nil +} + +// NewProxyCaller creates a new read-only instance of Proxy, bound to a specific deployed contract. +func NewProxyCaller(address common.Address, caller bind.ContractCaller) (*ProxyCaller, error) { + contract, err := bindProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProxyCaller{contract: contract}, nil +} + +// NewProxyTransactor creates a new write-only instance of Proxy, bound to a specific deployed contract. +func NewProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyTransactor, error) { + contract, err := bindProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProxyTransactor{contract: contract}, nil +} + +// NewProxyFilterer creates a new log filterer instance of Proxy, bound to a specific deployed contract. +func NewProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyFilterer, error) { + contract, err := bindProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProxyFilterer{contract: contract}, nil +} + +// bindProxy binds a generic wrapper to an already deployed contract. +func bindProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proxy *ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proxy.Contract.ProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proxy *ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proxy.Contract.ProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proxy *ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proxy.Contract.ProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proxy *ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proxy *ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proxy *ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Proxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) +} + +// ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. +var ProxyAdminMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033", +} + +// ProxyAdminABI is the input ABI used to generate the binding from. +// Deprecated: Use ProxyAdminMetaData.ABI instead. +var ProxyAdminABI = ProxyAdminMetaData.ABI + +// ProxyAdminBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ProxyAdminMetaData.Bin instead. +var ProxyAdminBin = ProxyAdminMetaData.Bin + +// DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. +func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { + parsed, err := ProxyAdminMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, initialOwner) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil +} + +// ProxyAdmin is an auto generated Go binding around an Ethereum contract. +type ProxyAdmin struct { + ProxyAdminCaller // Read-only binding to the contract + ProxyAdminTransactor // Write-only binding to the contract + ProxyAdminFilterer // Log filterer for contract events +} + +// ProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProxyAdminCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProxyAdminTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProxyAdminFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProxyAdminSession struct { + Contract *ProxyAdmin // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProxyAdminCallerSession struct { + Contract *ProxyAdminCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProxyAdminTransactorSession struct { + Contract *ProxyAdminTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProxyAdminRaw struct { + Contract *ProxyAdmin // Generic contract binding to access the raw methods on +} + +// ProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProxyAdminCallerRaw struct { + Contract *ProxyAdminCaller // Generic read-only contract binding to access the raw methods on +} + +// ProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProxyAdminTransactorRaw struct { + Contract *ProxyAdminTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProxyAdmin creates a new instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdmin(address common.Address, backend bind.ContractBackend) (*ProxyAdmin, error) { + contract, err := bindProxyAdmin(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil +} + +// NewProxyAdminCaller creates a new read-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*ProxyAdminCaller, error) { + contract, err := bindProxyAdmin(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProxyAdminCaller{contract: contract}, nil +} + +// NewProxyAdminTransactor creates a new write-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyAdminTransactor, error) { + contract, err := bindProxyAdmin(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProxyAdminTransactor{contract: contract}, nil +} + +// NewProxyAdminFilterer creates a new log filterer instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyAdminFilterer, error) { + contract, err := bindProxyAdmin(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProxyAdminFilterer{contract: contract}, nil +} + +// bindProxyAdmin binds a generic wrapper to an already deployed contract. +func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProxyAdminMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ProxyAdmin *ProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.ProxyAdminCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ProxyAdmin *ProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ProxyAdmin *ProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ProxyAdmin *ProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCallerSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "upgradeAndCall", proxy, implementation, data) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +} + +// ProxyAdminOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferredIterator struct { + Event *ProxyAdminOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProxyAdminOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProxyAdminOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProxyAdminOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProxyAdminOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProxyAdminOwnershipTransferred represents a OwnershipTransferred event raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProxyAdminOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ProxyAdmin.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ProxyAdminOwnershipTransferredIterator{contract: _ProxyAdmin.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProxyAdminOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ProxyAdmin.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) (*ProxyAdminOwnershipTransferred, error) { + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StorageSlotMetaData contains all meta data concerning the StorageSlot contract. +var StorageSlotMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205ba4b68c0f2890fefa20a45ab4fdb3aa3c0defff2fa4e4e8ad178e0a33741fec64736f6c63430008190033", +} + +// StorageSlotABI is the input ABI used to generate the binding from. +// Deprecated: Use StorageSlotMetaData.ABI instead. +var StorageSlotABI = StorageSlotMetaData.ABI + +// StorageSlotBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StorageSlotMetaData.Bin instead. +var StorageSlotBin = StorageSlotMetaData.Bin + +// DeployStorageSlot deploys a new Ethereum contract, binding an instance of StorageSlot to it. +func DeployStorageSlot(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StorageSlot, error) { + parsed, err := StorageSlotMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StorageSlotBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil +} + +// StorageSlot is an auto generated Go binding around an Ethereum contract. +type StorageSlot struct { + StorageSlotCaller // Read-only binding to the contract + StorageSlotTransactor // Write-only binding to the contract + StorageSlotFilterer // Log filterer for contract events +} + +// StorageSlotCaller is an auto generated read-only Go binding around an Ethereum contract. +type StorageSlotCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StorageSlotTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StorageSlotTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StorageSlotFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StorageSlotFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StorageSlotSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StorageSlotSession struct { + Contract *StorageSlot // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StorageSlotCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StorageSlotCallerSession struct { + Contract *StorageSlotCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StorageSlotTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StorageSlotTransactorSession struct { + Contract *StorageSlotTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StorageSlotRaw is an auto generated low-level Go binding around an Ethereum contract. +type StorageSlotRaw struct { + Contract *StorageSlot // Generic contract binding to access the raw methods on +} + +// StorageSlotCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StorageSlotCallerRaw struct { + Contract *StorageSlotCaller // Generic read-only contract binding to access the raw methods on +} + +// StorageSlotTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StorageSlotTransactorRaw struct { + Contract *StorageSlotTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStorageSlot creates a new instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlot(address common.Address, backend bind.ContractBackend) (*StorageSlot, error) { + contract, err := bindStorageSlot(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil +} + +// NewStorageSlotCaller creates a new read-only instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotCaller(address common.Address, caller bind.ContractCaller) (*StorageSlotCaller, error) { + contract, err := bindStorageSlot(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StorageSlotCaller{contract: contract}, nil +} + +// NewStorageSlotTransactor creates a new write-only instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotTransactor(address common.Address, transactor bind.ContractTransactor) (*StorageSlotTransactor, error) { + contract, err := bindStorageSlot(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StorageSlotTransactor{contract: contract}, nil +} + +// NewStorageSlotFilterer creates a new log filterer instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotFilterer(address common.Address, filterer bind.ContractFilterer) (*StorageSlotFilterer, error) { + contract, err := bindStorageSlot(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StorageSlotFilterer{contract: contract}, nil +} + +// bindStorageSlot binds a generic wrapper to an already deployed contract. +func bindStorageSlot(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StorageSlotMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StorageSlot *StorageSlotRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StorageSlot.Contract.StorageSlotCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StorageSlot *StorageSlotRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StorageSlot.Contract.StorageSlotTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StorageSlot *StorageSlotRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StorageSlot.Contract.StorageSlotTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StorageSlot *StorageSlotCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StorageSlot.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StorageSlot *StorageSlotTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StorageSlot.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StorageSlot *StorageSlotTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StorageSlot.Contract.contract.Transact(opts, method, params...) +} + // TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. var TransparentUpgradeableProxyMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_logic\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidAdmin\",\"inputs\":[{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ProxyDeniedAdminAccess\",\"inputs\":[]}]", - Bin: "0x60a0604052604051610dbb380380610dbb8339810160408190526100229161038c565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610471565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d9b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610456565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d9b8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104d3806108c883390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561038457818101518382015260200161036c565b50505f910152565b5f805f6060848603121561039e575f80fd5b6103a78461033b565b92506103b56020850161033b565b60408501519092506001600160401b03808211156103d1575f80fd5b818601915086601f8301126103e4575f80fd5b8151818111156103f6576103f6610356565b604051601f8201601f19908116603f0116810190838211818310171561041e5761041e610356565b81604052828152896020848701011115610436575f80fd5b61044783602083016020880161036a565b80955050505050509250925092565b5f825161046781846020870161036a565b9190910192915050565b6080516104406104885f395f601001526104405ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea164736f6c6343000819000a608060405234801561000f575f80fd5b506040516104d33803806104d383398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103de806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea164736f6c6343000819000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", + Bin: "0x60a0604052604051610dbc380380610dbc8339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b50505061044b565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d9c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610435565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d9c8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104e7806108b583390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b03808211156103af575f80fd5b818601915086601f8301126103c2575f80fd5b8151818111156103d4576103d4610356565b604051601f8201601f19908116603f011681019083821181831017156103fc576103fc610356565b81604052828152896020848701011115610414575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104536104625f395f601001526104535ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212204423f74f93e7db279ee266fc7a53465e65cd2894fc1504291f691df5682c71a764736f6c63430008190033608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go index 59ff01e96..0193add1e 100644 --- a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go +++ b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go @@ -39,10 +39,621 @@ type ValidatorSetSigMessage struct { Payload []byte } +// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. +type WarpBlockHash struct { + SourceChainID [32]byte + BlockHash [32]byte +} + +// WarpMessage is an auto generated low-level Go binding around an user-defined struct. +type WarpMessage struct { + SourceChainID [32]byte + OriginSenderAddress common.Address + Payload []byte +} + +// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. +var IWarpMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWarpMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use IWarpMessengerMetaData.ABI instead. +var IWarpMessengerABI = IWarpMessengerMetaData.ABI + +// IWarpMessenger is an auto generated Go binding around an Ethereum contract. +type IWarpMessenger struct { + IWarpMessengerCaller // Read-only binding to the contract + IWarpMessengerTransactor // Write-only binding to the contract + IWarpMessengerFilterer // Log filterer for contract events +} + +// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWarpMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWarpMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWarpMessengerSession struct { + Contract *IWarpMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWarpMessengerCallerSession struct { + Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWarpMessengerTransactorSession struct { + Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWarpMessengerRaw struct { + Contract *IWarpMessenger // Generic contract binding to access the raw methods on +} + +// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWarpMessengerCallerRaw struct { + Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactorRaw struct { + Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { + contract, err := bindIWarpMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil +} + +// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { + contract, err := bindIWarpMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerCaller{contract: contract}, nil +} + +// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { + contract, err := bindIWarpMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerTransactor{contract: contract}, nil +} + +// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { + contract, err := bindIWarpMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWarpMessengerFilterer{contract: contract}, nil +} + +// bindIWarpMessenger binds a generic wrapper to an already deployed contract. +func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWarpMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) + + outstruct := new(struct { + WarpBlockHash WarpBlockHash + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) + + outstruct := new(struct { + Message WarpMessage + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessageIterator struct { + Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWarpMessengerSendWarpMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWarpMessengerSendWarpMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessage struct { + Sender common.Address + MessageID [32]byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil +} + +// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReentrancyGuardMetaData contains all meta data concerning the ReentrancyGuard contract. +var ReentrancyGuardMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}]", +} + +// ReentrancyGuardABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardMetaData.ABI instead. +var ReentrancyGuardABI = ReentrancyGuardMetaData.ABI + +// ReentrancyGuard is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuard struct { + ReentrancyGuardCaller // Read-only binding to the contract + ReentrancyGuardTransactor // Write-only binding to the contract + ReentrancyGuardFilterer // Log filterer for contract events +} + +// ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardSession struct { + Contract *ReentrancyGuard // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardCallerSession struct { + Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardTransactorSession struct { + Contract *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardRaw struct { + Contract *ReentrancyGuard // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardCallerRaw struct { + Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactorRaw struct { + Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) { + contract, err := bindReentrancyGuard(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) { + contract, err := bindReentrancyGuard(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardCaller{contract: contract}, nil +} + +// NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) { + contract, err := bindReentrancyGuard(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardTransactor{contract: contract}, nil +} + +// NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) { + contract, err := bindReentrancyGuard(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardFilterer{contract: contract}, nil +} + +// bindReentrancyGuard binds a generic wrapper to an already deployed contract. +func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...) +} + // ValidatorSetSigMetaData contains all meta data concerning the ValidatorSetSig contract. var ValidatorSetSigMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blockchainID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"executeCall\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"targetContractAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validateMessage\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structValidatorSetSigMessage\",\"components\":[{\"name\":\"targetBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorSetSigAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"targetContractAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorBlockchainID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Delivered\",\"inputs\":[{\"name\":\"targetContractAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", - Bin: "0x60c060405234801561000f575f80fd5b50604051610b37380380610b3783398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a3f6100f85f395f818161016801526104ab01525f818161011b015261026a0152610a3f5ff3fe608060405260043610610062575f3560e01c80630731775d1461006d5780635433da421461009d5780637d969c34146100b25780637ecebe00146100d15780638d6e579d1461010a578063b771b3bc1461013d578063d127dc9b14610157575f80fd5b3661006957005b5f80fd5b348015610078575f80fd5b506100805f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b06100ab366004610633565b61018a565b005b3480156100bd575f80fd5b506100b06100cc366004610787565b6104a7565b3480156100dc575f80fd5b506100fc6100eb36600461082e565b60016020525f908152604090205481565b604051908152602001610094565b348015610115575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610148575f80fd5b506100806005600160991b0181565b348015610162575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b61019261060b565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261020291908101906108b5565b91509150806102665760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102e55760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161025d565b60208201516001600160a01b0316156103565760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161025d565b5f826040015180602001905181019061036f9190610954565b905061037a816104a7565b606081015161038a9060016109f2565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103c891610a17565b5f6040518083038185875af1925050503d805f8114610402576040519150601f19603f3d011682016040523d82523d5f602084013e610407565b606091505b50509050806104585760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161025d565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104a460015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461052b5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161025d565b60208101516001600160a01b0316301461059f5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161025d565b60608101516040808301516001600160a01b03165f90815260016020522054146104a45760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161025d565b60025f540361062d57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610643575f80fd5b813563ffffffff81168114610656575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156106935761069361065d565b60405290565b604051606081016001600160401b03811182821017156106935761069361065d565b604051601f8201601f191681016001600160401b03811182821017156106e3576106e361065d565b604052919050565b6001600160a01b03811681146104a4575f80fd5b803561070a816106eb565b919050565b5f6001600160401b038211156107275761072761065d565b50601f01601f191660200190565b5f82601f830112610744575f80fd5b81356107576107528261070f565b6106bb565b81815284602083860101111561076b575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610797575f80fd5b81356001600160401b03808211156107ad575f80fd5b9083019060c082860312156107c0575f80fd5b6107c8610671565b823581526107d8602084016106ff565b60208201526107e9604084016106ff565b6040820152606083013560608201526080830135608082015260a083013582811115610813575f80fd5b61081f87828601610735565b60a08301525095945050505050565b5f6020828403121561083e575f80fd5b8135610656816106eb565b5f5b8381101561086357818101518382015260200161084b565b50505f910152565b5f82601f83011261087a575f80fd5b81516108886107528261070f565b81815284602083860101111561089c575f80fd5b6108ad826020830160208701610849565b949350505050565b5f80604083850312156108c6575f80fd5b82516001600160401b03808211156108dc575f80fd5b90840190606082870312156108ef575f80fd5b6108f7610699565b825181526020830151610909816106eb565b602082015260408301518281111561091f575f80fd5b61092b8882860161086b565b60408301525080945050505060208301518015158114610949575f80fd5b809150509250929050565b5f60208284031215610964575f80fd5b81516001600160401b038082111561097a575f80fd5b9083019060c0828603121561098d575f80fd5b610995610671565b8251815260208301516109a7816106eb565b602082015260408301516109ba816106eb565b80604083015250606083015160608201526080830151608082015260a0830151828111156109e6575f80fd5b61081f8782860161086b565b80820180821115610a1157634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8251610a28818460208701610849565b919091019291505056fea164736f6c6343000819000a", + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Delivered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"executeCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"targetBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorSetSigAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structValidatorSetSigMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"validateMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60c060405234801561000f575f80fd5b50604051610b52380380610b5283398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a5a6100f85f395f818161017701526104ba01525f818161012a01526102790152610a5a5ff3fe608060405260043610610071575f3560e01c80637ecebe001161004c5780637ecebe00146100e05780638d6e579d14610119578063b771b3bc1461014c578063d127dc9b14610166575f80fd5b80630731775d1461007c5780635433da42146100ac5780637d969c34146100c1575f80fd5b3661007857005b5f80fd5b348015610087575f80fd5b5061008f5f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf6100ba366004610642565b610199565b005b3480156100cc575f80fd5b506100bf6100db36600461079a565b6104b6565b3480156100eb575f80fd5b5061010b6100fa366004610842565b60016020525f908152604090205481565b6040519081526020016100a3565b348015610124575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610157575f80fd5b5061008f6005600160991b0181565b348015610171575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a161061a565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261021191908101906108aa565b91509150806102755760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102f45760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161026c565b60208201516001600160a01b0316156103655760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161026c565b5f826040015180602001905181019061037e919061094a565b9050610389816104b6565b60608101516103999060016109e9565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103d791610a0e565b5f6040518083038185875af1925050503d805f8114610411576040519150601f19603f3d011682016040523d82523d5f602084013e610416565b606091505b50509050806104675760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161026c565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104b360015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461053a5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161026c565b60208101516001600160a01b031630146105ae5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161026c565b60608101516040808301516001600160a01b03165f90815260016020522054146104b35760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161026c565b60025f540361063c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610652575f80fd5b813563ffffffff81168114610665575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156106a3576106a361066c565b60405290565b6040516060810167ffffffffffffffff811182821017156106a3576106a361066c565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f5576106f561066c565b604052919050565b6001600160a01b03811681146104b3575f80fd5b803561071c816106fd565b919050565b5f67ffffffffffffffff82111561073a5761073a61066c565b50601f01601f191660200190565b5f82601f830112610757575f80fd5b813561076a61076582610721565b6106cc565b81815284602083860101111561077e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107aa575f80fd5b813567ffffffffffffffff808211156107c1575f80fd5b9083019060c082860312156107d4575f80fd5b6107dc610680565b823581526107ec60208401610711565b60208201526107fd60408401610711565b6040820152606083013560608201526080830135608082015260a083013582811115610827575f80fd5b61083387828601610748565b60a08301525095945050505050565b5f60208284031215610852575f80fd5b8135610665816106fd565b5f82601f83011261086c575f80fd5b815161087a61076582610721565b81815284602083860101111561088e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f80604083850312156108bb575f80fd5b825167ffffffffffffffff808211156108d2575f80fd5b90840190606082870312156108e5575f80fd5b6108ed6106a9565b8251815260208301516108ff816106fd565b6020820152604083015182811115610915575f80fd5b6109218882860161085d565b6040830152508094505050506020830151801515811461093f575f80fd5b809150509250929050565b5f6020828403121561095a575f80fd5b815167ffffffffffffffff80821115610971575f80fd5b9083019060c08286031215610984575f80fd5b61098c610680565b82518152602083015161099e816106fd565b602082015260408301516109b1816106fd565b80604083015250606083015160608201526080830151608082015260a0830151828111156109dd575f80fd5b6108338782860161085d565b80820180821115610a0857634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220a4fd8a391bae82c95be13fcdbc66e692c77e1237dc4d00e6f704801b804bba6d64736f6c63430008190033", } // ValidatorSetSigABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go index 1b2b5e53a..166b5d40c 100644 --- a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go +++ b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go @@ -29,135 +29,264 @@ var ( _ = abi.ConvertType ) -// ExampleERC20MetaData contains all meta data concerning the ExampleERC20 contract. -var ExampleERC20MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b61088a8061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100bc575f3560e01c806342966c681161007957806342966c681461014a57806370a082311461015d57806379cc67901461018557806395d89b4114610198578063a0712d68146101a0578063a9059cbb146101b3578063dd62ed3e146101c6575f80fd5b806306fdde03146100c0578063095ea7b3146100de57806318160ddd1461010157806323b872dd14610113578063313ce5671461012657806340c10f1914610135575b5f80fd5b6100c86101d9565b6040516100d5919061068a565b60405180910390f35b6100f16100ec3660046106f1565b610269565b60405190151581526020016100d5565b6002545b6040519081526020016100d5565b6100f1610121366004610719565b610282565b604051601281526020016100d5565b6101486101433660046106f1565b6102a5565b005b610148610158366004610752565b6102e4565b61010561016b366004610769565b6001600160a01b03165f9081526020819052604090205490565b6101486101933660046106f1565b6102f1565b6100c8610306565b6101486101ae366004610752565b610315565b6100f16101c13660046106f1565b610347565b6101056101d4366004610789565b610354565b6060600380546101e8906107ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610214906107ba565b801561025f5780601f106102365761010080835404028352916020019161025f565b820191905f5260205f20905b81548152906001019060200180831161024257829003601f168201915b5050505050905090565b5f3361027681858561037e565b60019150505b92915050565b5f3361028f858285610390565b61029a8585856103e0565b506001949350505050565b678ac7230489e800008111156102d65760405162461bcd60e51b81526004016102cd906107f2565b60405180910390fd5b6102e0828261043d565b5050565b6102ee3382610471565b50565b6102fc823383610390565b6102e08282610471565b6060600480546101e8906107ba565b678ac7230489e8000081111561033d5760405162461bcd60e51b81526004016102cd906107f2565b6102ee338261043d565b5f336102768185856103e0565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61038b83838360016104a5565b505050565b5f61039b8484610354565b90505f1981146103da57818110156103cc57828183604051637dc7a0d960e11b81526004016102cd93929190610829565b6103da84848484035f6104a5565b50505050565b6001600160a01b038316610409575f604051634b637e8f60e11b81526004016102cd919061084a565b6001600160a01b038216610432575f60405163ec442f0560e01b81526004016102cd919061084a565b61038b838383610577565b6001600160a01b038216610466575f60405163ec442f0560e01b81526004016102cd919061084a565b6102e05f8383610577565b6001600160a01b03821661049a575f604051634b637e8f60e11b81526004016102cd919061084a565b6102e0825f83610577565b6001600160a01b0384166104ce575f60405163e602df0560e01b81526004016102cd919061084a565b6001600160a01b0383166104f7575f604051634a1406b160e11b81526004016102cd919061084a565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156103da57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161056991815260200190565b60405180910390a350505050565b6001600160a01b0383166105a1578060025f828254610596919061085e565b909155506105fe9050565b6001600160a01b0383165f90815260208190526040902054818110156105e05783818360405163391434e360e21b81526004016102cd93929190610829565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661061a57600280548290039055610638565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161067d91815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b818110156106b65785810183015185820160400152820161069a565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146106ec575f80fd5b919050565b5f8060408385031215610702575f80fd5b61070b836106d6565b946020939093013593505050565b5f805f6060848603121561072b575f80fd5b610734846106d6565b9250610742602085016106d6565b9150604084013590509250925092565b5f60208284031215610762575f80fd5b5035919050565b5f60208284031215610779575f80fd5b610782826106d6565b9392505050565b5f806040838503121561079a575f80fd5b6107a3836106d6565b91506107b1602084016106d6565b90509250929050565b600181811c908216806107ce57607f821691505b6020821081036107ec57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252601f908201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604082015260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b8082018082111561027c57634e487b7160e01b5f52601160045260245ffdfea164736f6c6343000819000a", +// ContextMetaData contains all meta data concerning the Context contract. +var ContextMetaData = &bind.MetaData{ + ABI: "[]", } -// ExampleERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use ExampleERC20MetaData.ABI instead. -var ExampleERC20ABI = ExampleERC20MetaData.ABI +// ContextABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextMetaData.ABI instead. +var ContextABI = ContextMetaData.ABI -// ExampleERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ExampleERC20MetaData.Bin instead. -var ExampleERC20Bin = ExampleERC20MetaData.Bin +// Context is an auto generated Go binding around an Ethereum contract. +type Context struct { + ContextCaller // Read-only binding to the contract + ContextTransactor // Write-only binding to the contract + ContextFilterer // Log filterer for contract events +} -// DeployExampleERC20 deploys a new Ethereum contract, binding an instance of ExampleERC20 to it. -func DeployExampleERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ExampleERC20, error) { - parsed, err := ExampleERC20MetaData.GetAbi() +// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextSession struct { + Contract *Context // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextCallerSession struct { + Contract *ContextCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextTransactorSession struct { + Contract *ContextTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextRaw struct { + Contract *Context // Generic contract binding to access the raw methods on +} + +// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextCallerRaw struct { + Contract *ContextCaller // Generic read-only contract binding to access the raw methods on +} + +// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextTransactorRaw struct { + Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContext creates a new instance of Context, bound to a specific deployed contract. +func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { + contract, err := bindContext(address, backend, backend, backend) if err != nil { - return common.Address{}, nil, nil, err + return nil, err } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") + return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil +} + +// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. +func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { + contract, err := bindContext(address, caller, nil, nil) + if err != nil { + return nil, err } + return &ContextCaller{contract: contract}, nil +} - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ExampleERC20Bin), backend) +// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. +func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { + contract, err := bindContext(address, nil, transactor, nil) if err != nil { - return common.Address{}, nil, nil, err + return nil, err } - return address, tx, &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil + return &ContextTransactor{contract: contract}, nil } -// ExampleERC20 is an auto generated Go binding around an Ethereum contract. -type ExampleERC20 struct { - ExampleERC20Caller // Read-only binding to the contract - ExampleERC20Transactor // Write-only binding to the contract - ExampleERC20Filterer // Log filterer for contract events +// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. +func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { + contract, err := bindContext(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContextFilterer{contract: contract}, nil } -// ExampleERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type ExampleERC20Caller struct { +// bindContext binds a generic wrapper to an already deployed contract. +func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.contract.Transact(opts, method, params...) +} + +// ERC20MetaData contains all meta data concerning the ERC20 contract. +var ERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20MetaData.ABI instead. +var ERC20ABI = ERC20MetaData.ABI + +// ERC20 is an auto generated Go binding around an Ethereum contract. +type ERC20 struct { + ERC20Caller // Read-only binding to the contract + ERC20Transactor // Write-only binding to the contract + ERC20Filterer // Log filterer for contract events +} + +// ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20Caller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ExampleERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ExampleERC20Transactor struct { +// ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20Transactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ExampleERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ExampleERC20Filterer struct { +// ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20Filterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ExampleERC20Session is an auto generated Go binding around an Ethereum contract, +// ERC20Session is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ExampleERC20Session struct { - Contract *ExampleERC20 // Generic contract binding to set the session for +type ERC20Session struct { + Contract *ERC20 // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ExampleERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ExampleERC20CallerSession struct { - Contract *ExampleERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ERC20CallerSession struct { + Contract *ERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ExampleERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ExampleERC20TransactorSession struct { - Contract *ExampleERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20TransactorSession struct { + Contract *ERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ExampleERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type ExampleERC20Raw struct { - Contract *ExampleERC20 // Generic contract binding to access the raw methods on +// ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20Raw struct { + Contract *ERC20 // Generic contract binding to access the raw methods on } -// ExampleERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ExampleERC20CallerRaw struct { - Contract *ExampleERC20Caller // Generic read-only contract binding to access the raw methods on +// ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CallerRaw struct { + Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on } -// ExampleERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ExampleERC20TransactorRaw struct { - Contract *ExampleERC20Transactor // Generic write-only contract binding to access the raw methods on +// ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20TransactorRaw struct { + Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on } -// NewExampleERC20 creates a new instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20(address common.Address, backend bind.ContractBackend) (*ExampleERC20, error) { - contract, err := bindExampleERC20(address, backend, backend, backend) +// NewERC20 creates a new instance of ERC20, bound to a specific deployed contract. +func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) { + contract, err := bindERC20(address, backend, backend, backend) if err != nil { return nil, err } - return &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil + return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil } -// NewExampleERC20Caller creates a new read-only instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20Caller(address common.Address, caller bind.ContractCaller) (*ExampleERC20Caller, error) { - contract, err := bindExampleERC20(address, caller, nil, nil) +// NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) { + contract, err := bindERC20(address, caller, nil, nil) if err != nil { return nil, err } - return &ExampleERC20Caller{contract: contract}, nil + return &ERC20Caller{contract: contract}, nil } -// NewExampleERC20Transactor creates a new write-only instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ExampleERC20Transactor, error) { - contract, err := bindExampleERC20(address, nil, transactor, nil) +// NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) { + contract, err := bindERC20(address, nil, transactor, nil) if err != nil { return nil, err } - return &ExampleERC20Transactor{contract: contract}, nil + return &ERC20Transactor{contract: contract}, nil } -// NewExampleERC20Filterer creates a new log filterer instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ExampleERC20Filterer, error) { - contract, err := bindExampleERC20(address, nil, nil, filterer) +// NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract. +func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) { + contract, err := bindERC20(address, nil, nil, filterer) if err != nil { return nil, err } - return &ExampleERC20Filterer{contract: contract}, nil + return &ERC20Filterer{contract: contract}, nil } -// bindExampleERC20 binds a generic wrapper to an already deployed contract. -func bindExampleERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ExampleERC20MetaData.GetAbi() +// bindERC20 binds a generic wrapper to an already deployed contract. +func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20MetaData.GetAbi() if err != nil { return nil, err } @@ -168,46 +297,46 @@ func bindExampleERC20(address common.Address, caller bind.ContractCaller, transa // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ExampleERC20 *ExampleERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ExampleERC20.Contract.ExampleERC20Caller.contract.Call(opts, result, method, params...) +func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ExampleERC20 *ExampleERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transfer(opts) +func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ExampleERC20 *ExampleERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transact(opts, method, params...) +func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ExampleERC20 *ExampleERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ExampleERC20.Contract.contract.Call(opts, result, method, params...) +func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ExampleERC20 *ExampleERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ExampleERC20.Contract.contract.Transfer(opts) +func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ExampleERC20 *ExampleERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ExampleERC20.Contract.contract.Transact(opts, method, params...) +func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transact(opts, method, params...) } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { +func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "allowance", owner, spender) + err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) if err != nil { return *new(*big.Int), err @@ -222,23 +351,23 @@ func (_ExampleERC20 *ExampleERC20Caller) Allowance(opts *bind.CallOpts, owner co // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) +func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ExampleERC20 *ExampleERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) +func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { +func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "balanceOf", account) + err := _ERC20.contract.Call(opts, &out, "balanceOf", account) if err != nil { return *new(*big.Int), err @@ -253,23 +382,23 @@ func (_ExampleERC20 *ExampleERC20Caller) BalanceOf(opts *bind.CallOpts, account // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) +func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ExampleERC20 *ExampleERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) +func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) } // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ExampleERC20 *ExampleERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { +func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "decimals") + err := _ERC20.contract.Call(opts, &out, "decimals") if err != nil { return *new(uint8), err @@ -284,85 +413,3889 @@ func (_ExampleERC20 *ExampleERC20Caller) Decimals(opts *bind.CallOpts) (uint8, e // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ExampleERC20 *ExampleERC20Session) Decimals() (uint8, error) { - return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) +func (_ERC20 *ERC20Session) Decimals() (uint8, error) { + return _ERC20.Contract.Decimals(&_ERC20.CallOpts) } // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ExampleERC20 *ExampleERC20CallerSession) Decimals() (uint8, error) { - return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) +func (_ERC20 *ERC20CallerSession) Decimals() (uint8, error) { + return _ERC20.Contract.Decimals(&_ERC20.CallOpts) } // Name is a free data retrieval call binding the contract method 0x06fdde03. // // Solidity: function name() view returns(string) -func (_ExampleERC20 *ExampleERC20Caller) Name(opts *bind.CallOpts) (string, error) { +func (_ERC20 *ERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20Session) Name() (string, error) { + return _ERC20.Contract.Name(&_ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20CallerSession) Name() (string, error) { + return _ERC20.Contract.Name(&_ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20Session) Symbol() (string, error) { + return _ERC20.Contract.Symbol(&_ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20CallerSession) Symbol() (string, error) { + return _ERC20.Contract.Symbol(&_ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) +} + +// ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. +type ERC20ApprovalIterator struct { + Event *ERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20Approval represents a Approval event raised by the ERC20 contract. +type ERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) { + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract. +type ERC20TransferIterator struct { + Event *ERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20Transfer represents a Transfer event raised by the ERC20 contract. +type ERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) { + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract. +var ERC20BurnableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ERC20BurnableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20BurnableMetaData.ABI instead. +var ERC20BurnableABI = ERC20BurnableMetaData.ABI + +// ERC20Burnable is an auto generated Go binding around an Ethereum contract. +type ERC20Burnable struct { + ERC20BurnableCaller // Read-only binding to the contract + ERC20BurnableTransactor // Write-only binding to the contract + ERC20BurnableFilterer // Log filterer for contract events +} + +// ERC20BurnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20BurnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20BurnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20BurnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20BurnableSession struct { + Contract *ERC20Burnable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20BurnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20BurnableCallerSession struct { + Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20BurnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20BurnableTransactorSession struct { + Contract *ERC20BurnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20BurnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20BurnableRaw struct { + Contract *ERC20Burnable // Generic contract binding to access the raw methods on +} + +// ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20BurnableCallerRaw struct { + Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20BurnableTransactorRaw struct { + Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) { + contract, err := bindERC20Burnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil +} + +// NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) { + contract, err := bindERC20Burnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20BurnableCaller{contract: contract}, nil +} + +// NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) { + contract, err := bindERC20Burnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20BurnableTransactor{contract: contract}, nil +} + +// NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) { + contract, err := bindERC20Burnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20BurnableFilterer{contract: contract}, nil +} + +// bindERC20Burnable binds a generic wrapper to an already deployed contract. +func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20BurnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableSession) Decimals() (uint8, error) { + return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableCallerSession) Decimals() (uint8, error) { + return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableSession) Name() (string, error) { + return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableCallerSession) Name() (string, error) { + return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableSession) Symbol() (string, error) { + return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableCallerSession) Symbol() (string, error) { + return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burn", value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, value) +} + +// ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract. +type ERC20BurnableApprovalIterator struct { + Event *ERC20BurnableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20BurnableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20BurnableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20BurnableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract. +type ERC20BurnableApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) { + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract. +type ERC20BurnableTransferIterator struct { + Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20BurnableTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20BurnableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20BurnableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract. +type ERC20BurnableTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) { + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ExampleERC20MetaData contains all meta data concerning the ExampleERC20 contract. +var ExampleERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b6108d48061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a0712d68146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806342966c681461015957806370a082311461016c57806379cc679014610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806340c10f1914610144575b5f80fd5b6100d761020d565b6040516100e4919061072e565b60405180910390f35b6101006100fb36600461077e565b61029d565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b6101006101303660046107a6565b6102b6565b604051601281526020016100e4565b61015761015236600461077e565b6102d9565b005b6101576101673660046107df565b610344565b61011461017a3660046107f6565b6001600160a01b03165f9081526020819052604090205490565b6101576101a236600461077e565b610351565b6100d7610366565b6101576101bd3660046107df565b610375565b6101006101d036600461077e565b6103d7565b6101146101e3366004610816565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c90610847565b80601f016020809104026020016040519081016040528092919081815260200182805461024890610847565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa8185856103e4565b60019150505b92915050565b5f336102c38582856103f6565b6102ce858585610471565b506001949350505050565b678ac7230489e800008111156103365760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61034082826104ce565b5050565b61034e3382610502565b50565b61035c8233836103f6565b6103408282610502565b60606004805461021c90610847565b678ac7230489e800008111156103cd5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604482015260640161032d565b61034e33826104ce565b5f336102aa818585610471565b6103f18383836001610536565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046b578181101561045d57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161032d565b61046b84848484035f610536565b50505050565b6001600160a01b03831661049a57604051634b637e8f60e11b81525f600482015260240161032d565b6001600160a01b0382166104c35760405163ec442f0560e01b81525f600482015260240161032d565b6103f1838383610608565b6001600160a01b0382166104f75760405163ec442f0560e01b81525f600482015260240161032d565b6103405f8383610608565b6001600160a01b03821661052b57604051634b637e8f60e11b81525f600482015260240161032d565b610340825f83610608565b6001600160a01b03841661055f5760405163e602df0560e01b81525f600482015260240161032d565b6001600160a01b03831661058857604051634a1406b160e11b81525f600482015260240161032d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610632578060025f828254610627919061087f565b909155506106a29050565b6001600160a01b0383165f90815260208190526040902054818110156106845760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161032d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106be576002805482900390556106dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161072191815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610779575f80fd5b919050565b5f806040838503121561078f575f80fd5b61079883610763565b946020939093013593505050565b5f805f606084860312156107b8575f80fd5b6107c184610763565b92506107cf60208501610763565b9150604084013590509250925092565b5f602082840312156107ef575f80fd5b5035919050565b5f60208284031215610806575f80fd5b61080f82610763565b9392505050565b5f8060408385031215610827575f80fd5b61083083610763565b915061083e60208401610763565b90509250929050565b600181811c9082168061085b57607f821691505b60208210810361087957634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102b057634e487b7160e01b5f52601160045260245ffdfea264697066735822122034396e8de5a9f28b1cab74302d03ab34d552d34ef04c7df704b4afd19b7818fd64736f6c63430008190033", +} + +// ExampleERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ExampleERC20MetaData.ABI instead. +var ExampleERC20ABI = ExampleERC20MetaData.ABI + +// ExampleERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ExampleERC20MetaData.Bin instead. +var ExampleERC20Bin = ExampleERC20MetaData.Bin + +// DeployExampleERC20 deploys a new Ethereum contract, binding an instance of ExampleERC20 to it. +func DeployExampleERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ExampleERC20, error) { + parsed, err := ExampleERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ExampleERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil +} + +// ExampleERC20 is an auto generated Go binding around an Ethereum contract. +type ExampleERC20 struct { + ExampleERC20Caller // Read-only binding to the contract + ExampleERC20Transactor // Write-only binding to the contract + ExampleERC20Filterer // Log filterer for contract events +} + +// ExampleERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type ExampleERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExampleERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ExampleERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExampleERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ExampleERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExampleERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ExampleERC20Session struct { + Contract *ExampleERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ExampleERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ExampleERC20CallerSession struct { + Contract *ExampleERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ExampleERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ExampleERC20TransactorSession struct { + Contract *ExampleERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ExampleERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type ExampleERC20Raw struct { + Contract *ExampleERC20 // Generic contract binding to access the raw methods on +} + +// ExampleERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ExampleERC20CallerRaw struct { + Contract *ExampleERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// ExampleERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ExampleERC20TransactorRaw struct { + Contract *ExampleERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewExampleERC20 creates a new instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20(address common.Address, backend bind.ContractBackend) (*ExampleERC20, error) { + contract, err := bindExampleERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil +} + +// NewExampleERC20Caller creates a new read-only instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20Caller(address common.Address, caller bind.ContractCaller) (*ExampleERC20Caller, error) { + contract, err := bindExampleERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ExampleERC20Caller{contract: contract}, nil +} + +// NewExampleERC20Transactor creates a new write-only instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ExampleERC20Transactor, error) { + contract, err := bindExampleERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ExampleERC20Transactor{contract: contract}, nil +} + +// NewExampleERC20Filterer creates a new log filterer instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ExampleERC20Filterer, error) { + contract, err := bindExampleERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ExampleERC20Filterer{contract: contract}, nil +} + +// bindExampleERC20 binds a generic wrapper to an already deployed contract. +func bindExampleERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ExampleERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ExampleERC20 *ExampleERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExampleERC20.Contract.ExampleERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ExampleERC20 *ExampleERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ExampleERC20 *ExampleERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ExampleERC20 *ExampleERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExampleERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ExampleERC20 *ExampleERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExampleERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ExampleERC20 *ExampleERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExampleERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ExampleERC20 *ExampleERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ExampleERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ExampleERC20 *ExampleERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ExampleERC20 *ExampleERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ExampleERC20 *ExampleERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ExampleERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ExampleERC20 *ExampleERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ExampleERC20 *ExampleERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ExampleERC20 *ExampleERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ExampleERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ExampleERC20 *ExampleERC20Session) Decimals() (uint8, error) { + return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ExampleERC20 *ExampleERC20CallerSession) Decimals() (uint8, error) { + return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ExampleERC20 *ExampleERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ExampleERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ExampleERC20 *ExampleERC20Session) Name() (string, error) { + return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ExampleERC20 *ExampleERC20CallerSession) Name() (string, error) { + return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ExampleERC20 *ExampleERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ExampleERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ExampleERC20 *ExampleERC20Session) Symbol() (string, error) { + return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ExampleERC20 *ExampleERC20CallerSession) Symbol() (string, error) { + return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ExampleERC20 *ExampleERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ExampleERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ExampleERC20 *ExampleERC20Session) TotalSupply() (*big.Int, error) { + return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ExampleERC20 *ExampleERC20CallerSession) TotalSupply() (*big.Int, error) { + return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Transactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "burn", value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Session) Burn(value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Transactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "burnFrom", account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Session) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20Transactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "mint", account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20Session) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) +} + +// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. +// +// Solidity: function mint(uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20Transactor) Mint0(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "mint0", amount) +} + +// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. +// +// Solidity: function mint(uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20Session) Mint0(amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) +} + +// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. +// +// Solidity: function mint(uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) Mint0(amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) +} + +// ExampleERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ExampleERC20 contract. +type ExampleERC20ApprovalIterator struct { + Event *ExampleERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ExampleERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ExampleERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ExampleERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ExampleERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ExampleERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ExampleERC20Approval represents a Approval event raised by the ExampleERC20 contract. +type ExampleERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ExampleERC20 *ExampleERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ExampleERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ExampleERC20ApprovalIterator{contract: _ExampleERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ExampleERC20 *ExampleERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ExampleERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ExampleERC20Approval) + if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ExampleERC20 *ExampleERC20Filterer) ParseApproval(log types.Log) (*ExampleERC20Approval, error) { + event := new(ExampleERC20Approval) + if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ExampleERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ExampleERC20 contract. +type ExampleERC20TransferIterator struct { + Event *ExampleERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ExampleERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ExampleERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ExampleERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ExampleERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ExampleERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ExampleERC20Transfer represents a Transfer event raised by the ExampleERC20 contract. +type ExampleERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ExampleERC20 *ExampleERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ExampleERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ExampleERC20TransferIterator{contract: _ExampleERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ExampleERC20 *ExampleERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ExampleERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ExampleERC20Transfer) + if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ExampleERC20 *ExampleERC20Filterer) ParseTransfer(log types.Log) (*ExampleERC20Transfer, error) { + event := new(ExampleERC20Transfer) + if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC1155ErrorsMetaData contains all meta data concerning the IERC1155Errors contract. +var IERC1155ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}]", +} + +// IERC1155ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC1155ErrorsMetaData.ABI instead. +var IERC1155ErrorsABI = IERC1155ErrorsMetaData.ABI + +// IERC1155Errors is an auto generated Go binding around an Ethereum contract. +type IERC1155Errors struct { + IERC1155ErrorsCaller // Read-only binding to the contract + IERC1155ErrorsTransactor // Write-only binding to the contract + IERC1155ErrorsFilterer // Log filterer for contract events +} + +// IERC1155ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC1155ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1155ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC1155ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1155ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC1155ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1155ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC1155ErrorsSession struct { + Contract *IERC1155Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1155ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC1155ErrorsCallerSession struct { + Contract *IERC1155ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC1155ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC1155ErrorsTransactorSession struct { + Contract *IERC1155ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1155ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC1155ErrorsRaw struct { + Contract *IERC1155Errors // Generic contract binding to access the raw methods on +} + +// IERC1155ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC1155ErrorsCallerRaw struct { + Contract *IERC1155ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC1155ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC1155ErrorsTransactorRaw struct { + Contract *IERC1155ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC1155Errors creates a new instance of IERC1155Errors, bound to a specific deployed contract. +func NewIERC1155Errors(address common.Address, backend bind.ContractBackend) (*IERC1155Errors, error) { + contract, err := bindIERC1155Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC1155Errors{IERC1155ErrorsCaller: IERC1155ErrorsCaller{contract: contract}, IERC1155ErrorsTransactor: IERC1155ErrorsTransactor{contract: contract}, IERC1155ErrorsFilterer: IERC1155ErrorsFilterer{contract: contract}}, nil +} + +// NewIERC1155ErrorsCaller creates a new read-only instance of IERC1155Errors, bound to a specific deployed contract. +func NewIERC1155ErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC1155ErrorsCaller, error) { + contract, err := bindIERC1155Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC1155ErrorsCaller{contract: contract}, nil +} + +// NewIERC1155ErrorsTransactor creates a new write-only instance of IERC1155Errors, bound to a specific deployed contract. +func NewIERC1155ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC1155ErrorsTransactor, error) { + contract, err := bindIERC1155Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC1155ErrorsTransactor{contract: contract}, nil +} + +// NewIERC1155ErrorsFilterer creates a new log filterer instance of IERC1155Errors, bound to a specific deployed contract. +func NewIERC1155ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC1155ErrorsFilterer, error) { + contract, err := bindIERC1155Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC1155ErrorsFilterer{contract: contract}, nil +} + +// bindIERC1155Errors binds a generic wrapper to an already deployed contract. +func bindIERC1155Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC1155ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1155Errors *IERC1155ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1155Errors.Contract.IERC1155ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1155Errors *IERC1155ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1155Errors.Contract.IERC1155ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1155Errors *IERC1155ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1155Errors.Contract.IERC1155ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1155Errors *IERC1155ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1155Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1155Errors *IERC1155ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1155Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1155Errors *IERC1155ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1155Errors.Contract.contract.Transact(opts, method, params...) +} + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20ErrorsMetaData contains all meta data concerning the IERC20Errors contract. +var IERC20ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}]", +} + +// IERC20ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20ErrorsMetaData.ABI instead. +var IERC20ErrorsABI = IERC20ErrorsMetaData.ABI + +// IERC20Errors is an auto generated Go binding around an Ethereum contract. +type IERC20Errors struct { + IERC20ErrorsCaller // Read-only binding to the contract + IERC20ErrorsTransactor // Write-only binding to the contract + IERC20ErrorsFilterer // Log filterer for contract events +} + +// IERC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20ErrorsSession struct { + Contract *IERC20Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20ErrorsCallerSession struct { + Contract *IERC20ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20ErrorsTransactorSession struct { + Contract *IERC20ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20ErrorsRaw struct { + Contract *IERC20Errors // Generic contract binding to access the raw methods on +} + +// IERC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20ErrorsCallerRaw struct { + Contract *IERC20ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20ErrorsTransactorRaw struct { + Contract *IERC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Errors creates a new instance of IERC20Errors, bound to a specific deployed contract. +func NewIERC20Errors(address common.Address, backend bind.ContractBackend) (*IERC20Errors, error) { + contract, err := bindIERC20Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Errors{IERC20ErrorsCaller: IERC20ErrorsCaller{contract: contract}, IERC20ErrorsTransactor: IERC20ErrorsTransactor{contract: contract}, IERC20ErrorsFilterer: IERC20ErrorsFilterer{contract: contract}}, nil +} + +// NewIERC20ErrorsCaller creates a new read-only instance of IERC20Errors, bound to a specific deployed contract. +func NewIERC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20ErrorsCaller, error) { + contract, err := bindIERC20Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20ErrorsCaller{contract: contract}, nil +} + +// NewIERC20ErrorsTransactor creates a new write-only instance of IERC20Errors, bound to a specific deployed contract. +func NewIERC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20ErrorsTransactor, error) { + contract, err := bindIERC20Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20ErrorsTransactor{contract: contract}, nil +} + +// NewIERC20ErrorsFilterer creates a new log filterer instance of IERC20Errors, bound to a specific deployed contract. +func NewIERC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20ErrorsFilterer, error) { + contract, err := bindIERC20Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20ErrorsFilterer{contract: contract}, nil +} + +// bindIERC20Errors binds a generic wrapper to an already deployed contract. +func bindIERC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Errors *IERC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Errors.Contract.IERC20ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Errors *IERC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Errors.Contract.IERC20ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Errors *IERC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Errors.Contract.IERC20ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Errors *IERC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Errors *IERC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Errors *IERC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Errors.Contract.contract.Transact(opts, method, params...) +} + +// IERC20MetadataMetaData contains all meta data concerning the IERC20Metadata contract. +var IERC20MetadataMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20MetadataABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetadataMetaData.ABI instead. +var IERC20MetadataABI = IERC20MetadataMetaData.ABI + +// IERC20Metadata is an auto generated Go binding around an Ethereum contract. +type IERC20Metadata struct { + IERC20MetadataCaller // Read-only binding to the contract + IERC20MetadataTransactor // Write-only binding to the contract + IERC20MetadataFilterer // Log filterer for contract events +} + +// IERC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20MetadataCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20MetadataTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20MetadataFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20MetadataSession struct { + Contract *IERC20Metadata // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20MetadataCallerSession struct { + Contract *IERC20MetadataCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20MetadataTransactorSession struct { + Contract *IERC20MetadataTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20MetadataRaw struct { + Contract *IERC20Metadata // Generic contract binding to access the raw methods on +} + +// IERC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20MetadataCallerRaw struct { + Contract *IERC20MetadataCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20MetadataTransactorRaw struct { + Contract *IERC20MetadataTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Metadata creates a new instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20Metadata(address common.Address, backend bind.ContractBackend) (*IERC20Metadata, error) { + contract, err := bindIERC20Metadata(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Metadata{IERC20MetadataCaller: IERC20MetadataCaller{contract: contract}, IERC20MetadataTransactor: IERC20MetadataTransactor{contract: contract}, IERC20MetadataFilterer: IERC20MetadataFilterer{contract: contract}}, nil +} + +// NewIERC20MetadataCaller creates a new read-only instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC20MetadataCaller, error) { + contract, err := bindIERC20Metadata(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20MetadataCaller{contract: contract}, nil +} + +// NewIERC20MetadataTransactor creates a new write-only instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MetadataTransactor, error) { + contract, err := bindIERC20Metadata(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20MetadataTransactor{contract: contract}, nil +} + +// NewIERC20MetadataFilterer creates a new log filterer instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MetadataFilterer, error) { + contract, err := bindIERC20Metadata(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20MetadataFilterer{contract: contract}, nil +} + +// bindIERC20Metadata binds a generic wrapper to an already deployed contract. +func bindIERC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetadataMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Metadata *IERC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Metadata.Contract.IERC20MetadataCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Metadata *IERC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Metadata *IERC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Metadata *IERC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Metadata.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Metadata.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Metadata.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataSession) Decimals() (uint8, error) { + return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataCallerSession) Decimals() (uint8, error) { + return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataSession) Name() (string, error) { + return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataCallerSession) Name() (string, error) { + return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataSession) Symbol() (string, error) { + return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataCallerSession) Symbol() (string, error) { + return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) TotalSupply() (*big.Int, error) { + return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) TotalSupply() (*big.Int, error) { + return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, value) +} + +// IERC20MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Metadata contract. +type IERC20MetadataApprovalIterator struct { + Event *IERC20MetadataApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MetadataApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MetadataApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MetadataApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MetadataApproval represents a Approval event raised by the IERC20Metadata contract. +type IERC20MetadataApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MetadataApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20MetadataApprovalIterator{contract: _IERC20Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MetadataApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MetadataApproval) + if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) ParseApproval(log types.Log) (*IERC20MetadataApproval, error) { + event := new(IERC20MetadataApproval) + if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Metadata contract. +type IERC20MetadataTransferIterator struct { + Event *IERC20MetadataTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MetadataTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MetadataTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MetadataTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MetadataTransfer represents a Transfer event raised by the IERC20Metadata contract. +type IERC20MetadataTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MetadataTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20MetadataTransferIterator{contract: _IERC20Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MetadataTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MetadataTransfer) + if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) ParseTransfer(log types.Log) (*IERC20MetadataTransfer, error) { + event := new(IERC20MetadataTransfer) + if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MintableMetaData contains all meta data concerning the IERC20Mintable contract. +var IERC20MintableMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20MintableABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MintableMetaData.ABI instead. +var IERC20MintableABI = IERC20MintableMetaData.ABI + +// IERC20Mintable is an auto generated Go binding around an Ethereum contract. +type IERC20Mintable struct { + IERC20MintableCaller // Read-only binding to the contract + IERC20MintableTransactor // Write-only binding to the contract + IERC20MintableFilterer // Log filterer for contract events +} + +// IERC20MintableCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20MintableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MintableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20MintableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MintableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20MintableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MintableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20MintableSession struct { + Contract *IERC20Mintable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MintableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20MintableCallerSession struct { + Contract *IERC20MintableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20MintableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20MintableTransactorSession struct { + Contract *IERC20MintableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MintableRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20MintableRaw struct { + Contract *IERC20Mintable // Generic contract binding to access the raw methods on +} + +// IERC20MintableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20MintableCallerRaw struct { + Contract *IERC20MintableCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20MintableTransactorRaw struct { + Contract *IERC20MintableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Mintable creates a new instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20Mintable(address common.Address, backend bind.ContractBackend) (*IERC20Mintable, error) { + contract, err := bindIERC20Mintable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Mintable{IERC20MintableCaller: IERC20MintableCaller{contract: contract}, IERC20MintableTransactor: IERC20MintableTransactor{contract: contract}, IERC20MintableFilterer: IERC20MintableFilterer{contract: contract}}, nil +} + +// NewIERC20MintableCaller creates a new read-only instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*IERC20MintableCaller, error) { + contract, err := bindIERC20Mintable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20MintableCaller{contract: contract}, nil +} + +// NewIERC20MintableTransactor creates a new write-only instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MintableTransactor, error) { + contract, err := bindIERC20Mintable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20MintableTransactor{contract: contract}, nil +} + +// NewIERC20MintableFilterer creates a new log filterer instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MintableFilterer, error) { + contract, err := bindIERC20Mintable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20MintableFilterer{contract: contract}, nil +} + +// bindIERC20Mintable binds a generic wrapper to an already deployed contract. +func bindIERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MintableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Mintable *IERC20MintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Mintable.Contract.IERC20MintableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Mintable *IERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Mintable *IERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Mintable *IERC20MintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Mintable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Mintable *IERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Mintable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Mintable *IERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Mintable.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "name") + err := _IERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) if err != nil { - return *new(string), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(string)).(*string) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function name() view returns(string) -func (_ExampleERC20 *ExampleERC20Session) Name() (string, error) { - return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Mintable *IERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function name() view returns(string) -func (_ExampleERC20 *ExampleERC20CallerSession) Name() (string, error) { - return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function symbol() view returns(string) -func (_ExampleERC20 *ExampleERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "symbol") + err := _IERC20Mintable.contract.Call(opts, &out, "balanceOf", account) if err != nil { - return *new(string), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(string)).(*string) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function symbol() view returns(string) -func (_ExampleERC20 *ExampleERC20Session) Symbol() (string, error) { - return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Mintable *IERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function symbol() view returns(string) -func (_ExampleERC20 *ExampleERC20CallerSession) Symbol() (string, error) { - return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_ExampleERC20 *ExampleERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { +func (_IERC20Mintable *IERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "totalSupply") + err := _IERC20Mintable.contract.Call(opts, &out, "totalSupply") if err != nil { return *new(*big.Int), err @@ -377,167 +4310,104 @@ func (_ExampleERC20 *ExampleERC20Caller) TotalSupply(opts *bind.CallOpts) (*big. // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_ExampleERC20 *ExampleERC20Session) TotalSupply() (*big.Int, error) { - return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) +func (_IERC20Mintable *IERC20MintableSession) TotalSupply() (*big.Int, error) { + return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_ExampleERC20 *ExampleERC20CallerSession) TotalSupply() (*big.Int, error) { - return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) +func (_IERC20Mintable *IERC20MintableCallerSession) TotalSupply() (*big.Int, error) { + return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "approve", spender, value) +func (_IERC20Mintable *IERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "approve", spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) +func (_IERC20Mintable *IERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Transactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "burn", value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Session) Burn(value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) Burn(value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Transactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "burnFrom", account, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Session) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) +func (_IERC20Mintable *IERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) } // Mint is a paid mutator transaction binding the contract method 0x40c10f19. // // Solidity: function mint(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Transactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "mint", account, amount) +func (_IERC20Mintable *IERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "mint", account, amount) } // Mint is a paid mutator transaction binding the contract method 0x40c10f19. // // Solidity: function mint(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Session) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) +func (_IERC20Mintable *IERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) } // Mint is a paid mutator transaction binding the contract method 0x40c10f19. // // Solidity: function mint(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) -} - -// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. -// -// Solidity: function mint(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Transactor) Mint0(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "mint0", amount) -} - -// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. -// -// Solidity: function mint(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Session) Mint0(amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) -} - -// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. -// -// Solidity: function mint(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) Mint0(amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) +func (_IERC20Mintable *IERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "transfer", to, value) +func (_IERC20Mintable *IERC20MintableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "transfer", to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) +func (_IERC20Mintable *IERC20MintableSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) +func (_IERC20Mintable *IERC20MintableTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "transferFrom", from, to, value) +func (_IERC20Mintable *IERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "transferFrom", from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) +func (_IERC20Mintable *IERC20MintableSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) +func (_IERC20Mintable *IERC20MintableTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) } -// ExampleERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ExampleERC20 contract. -type ExampleERC20ApprovalIterator struct { - Event *ExampleERC20Approval // Event containing the contract specifics and raw log +// IERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Mintable contract. +type IERC20MintableApprovalIterator struct { + Event *IERC20MintableApproval // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -551,7 +4421,7 @@ type ExampleERC20ApprovalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ExampleERC20ApprovalIterator) Next() bool { +func (it *IERC20MintableApprovalIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -560,7 +4430,7 @@ func (it *ExampleERC20ApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ExampleERC20Approval) + it.Event = new(IERC20MintableApproval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -575,7 +4445,7 @@ func (it *ExampleERC20ApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ExampleERC20Approval) + it.Event = new(IERC20MintableApproval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -591,19 +4461,19 @@ func (it *ExampleERC20ApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ExampleERC20ApprovalIterator) Error() error { +func (it *IERC20MintableApprovalIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ExampleERC20ApprovalIterator) Close() error { +func (it *IERC20MintableApprovalIterator) Close() error { it.sub.Unsubscribe() return nil } -// ExampleERC20Approval represents a Approval event raised by the ExampleERC20 contract. -type ExampleERC20Approval struct { +// IERC20MintableApproval represents a Approval event raised by the IERC20Mintable contract. +type IERC20MintableApproval struct { Owner common.Address Spender common.Address Value *big.Int @@ -613,7 +4483,7 @@ type ExampleERC20Approval struct { // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ExampleERC20ApprovalIterator, error) { +func (_IERC20Mintable *IERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MintableApprovalIterator, error) { var ownerRule []interface{} for _, ownerItem := range owner { @@ -624,17 +4494,17 @@ func (_ExampleERC20 *ExampleERC20Filterer) FilterApproval(opts *bind.FilterOpts, spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } - return &ExampleERC20ApprovalIterator{contract: _ExampleERC20.contract, event: "Approval", logs: logs, sub: sub}, nil + return &IERC20MintableApprovalIterator{contract: _IERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil } // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ExampleERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { +func (_IERC20Mintable *IERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { var ownerRule []interface{} for _, ownerItem := range owner { @@ -645,7 +4515,7 @@ func (_ExampleERC20 *ExampleERC20Filterer) WatchApproval(opts *bind.WatchOpts, s spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } @@ -655,8 +4525,8 @@ func (_ExampleERC20 *ExampleERC20Filterer) WatchApproval(opts *bind.WatchOpts, s select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ExampleERC20Approval) - if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(IERC20MintableApproval) + if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { return err } event.Raw = log @@ -680,18 +4550,18 @@ func (_ExampleERC20 *ExampleERC20Filterer) WatchApproval(opts *bind.WatchOpts, s // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) ParseApproval(log types.Log) (*ExampleERC20Approval, error) { - event := new(ExampleERC20Approval) - if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { +func (_IERC20Mintable *IERC20MintableFilterer) ParseApproval(log types.Log) (*IERC20MintableApproval, error) { + event := new(IERC20MintableApproval) + if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ExampleERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ExampleERC20 contract. -type ExampleERC20TransferIterator struct { - Event *ExampleERC20Transfer // Event containing the contract specifics and raw log +// IERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Mintable contract. +type IERC20MintableTransferIterator struct { + Event *IERC20MintableTransfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -705,7 +4575,7 @@ type ExampleERC20TransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ExampleERC20TransferIterator) Next() bool { +func (it *IERC20MintableTransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -714,7 +4584,7 @@ func (it *ExampleERC20TransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ExampleERC20Transfer) + it.Event = new(IERC20MintableTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -729,7 +4599,7 @@ func (it *ExampleERC20TransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ExampleERC20Transfer) + it.Event = new(IERC20MintableTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -745,19 +4615,19 @@ func (it *ExampleERC20TransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ExampleERC20TransferIterator) Error() error { +func (it *IERC20MintableTransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ExampleERC20TransferIterator) Close() error { +func (it *IERC20MintableTransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// ExampleERC20Transfer represents a Transfer event raised by the ExampleERC20 contract. -type ExampleERC20Transfer struct { +// IERC20MintableTransfer represents a Transfer event raised by the IERC20Mintable contract. +type IERC20MintableTransfer struct { From common.Address To common.Address Value *big.Int @@ -767,7 +4637,7 @@ type ExampleERC20Transfer struct { // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ExampleERC20TransferIterator, error) { +func (_IERC20Mintable *IERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MintableTransferIterator, error) { var fromRule []interface{} for _, fromItem := range from { @@ -778,17 +4648,17 @@ func (_ExampleERC20 *ExampleERC20Filterer) FilterTransfer(opts *bind.FilterOpts, toRule = append(toRule, toItem) } - logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } - return &ExampleERC20TransferIterator{contract: _ExampleERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil + return &IERC20MintableTransferIterator{contract: _IERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil } // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ExampleERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { +func (_IERC20Mintable *IERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { var fromRule []interface{} for _, fromItem := range from { @@ -799,7 +4669,7 @@ func (_ExampleERC20 *ExampleERC20Filterer) WatchTransfer(opts *bind.WatchOpts, s toRule = append(toRule, toItem) } - logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } @@ -809,8 +4679,8 @@ func (_ExampleERC20 *ExampleERC20Filterer) WatchTransfer(opts *bind.WatchOpts, s select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ExampleERC20Transfer) - if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + event := new(IERC20MintableTransfer) + if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { return err } event.Raw = log @@ -834,11 +4704,162 @@ func (_ExampleERC20 *ExampleERC20Filterer) WatchTransfer(opts *bind.WatchOpts, s // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) ParseTransfer(log types.Log) (*ExampleERC20Transfer, error) { - event := new(ExampleERC20Transfer) - if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { +func (_IERC20Mintable *IERC20MintableFilterer) ParseTransfer(log types.Log) (*IERC20MintableTransfer, error) { + event := new(IERC20MintableTransfer) + if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } event.Raw = log return event, nil } + +// IERC721ErrorsMetaData contains all meta data concerning the IERC721Errors contract. +var IERC721ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}]", +} + +// IERC721ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC721ErrorsMetaData.ABI instead. +var IERC721ErrorsABI = IERC721ErrorsMetaData.ABI + +// IERC721Errors is an auto generated Go binding around an Ethereum contract. +type IERC721Errors struct { + IERC721ErrorsCaller // Read-only binding to the contract + IERC721ErrorsTransactor // Write-only binding to the contract + IERC721ErrorsFilterer // Log filterer for contract events +} + +// IERC721ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC721ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC721ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC721ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC721ErrorsSession struct { + Contract *IERC721Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC721ErrorsCallerSession struct { + Contract *IERC721ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC721ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC721ErrorsTransactorSession struct { + Contract *IERC721ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC721ErrorsRaw struct { + Contract *IERC721Errors // Generic contract binding to access the raw methods on +} + +// IERC721ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC721ErrorsCallerRaw struct { + Contract *IERC721ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC721ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC721ErrorsTransactorRaw struct { + Contract *IERC721ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC721Errors creates a new instance of IERC721Errors, bound to a specific deployed contract. +func NewIERC721Errors(address common.Address, backend bind.ContractBackend) (*IERC721Errors, error) { + contract, err := bindIERC721Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC721Errors{IERC721ErrorsCaller: IERC721ErrorsCaller{contract: contract}, IERC721ErrorsTransactor: IERC721ErrorsTransactor{contract: contract}, IERC721ErrorsFilterer: IERC721ErrorsFilterer{contract: contract}}, nil +} + +// NewIERC721ErrorsCaller creates a new read-only instance of IERC721Errors, bound to a specific deployed contract. +func NewIERC721ErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC721ErrorsCaller, error) { + contract, err := bindIERC721Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC721ErrorsCaller{contract: contract}, nil +} + +// NewIERC721ErrorsTransactor creates a new write-only instance of IERC721Errors, bound to a specific deployed contract. +func NewIERC721ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ErrorsTransactor, error) { + contract, err := bindIERC721Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC721ErrorsTransactor{contract: contract}, nil +} + +// NewIERC721ErrorsFilterer creates a new log filterer instance of IERC721Errors, bound to a specific deployed contract. +func NewIERC721ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ErrorsFilterer, error) { + contract, err := bindIERC721Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC721ErrorsFilterer{contract: contract}, nil +} + +// bindIERC721Errors binds a generic wrapper to an already deployed contract. +func bindIERC721Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC721ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721Errors *IERC721ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721Errors.Contract.IERC721ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721Errors *IERC721ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721Errors.Contract.IERC721ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721Errors *IERC721ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721Errors.Contract.IERC721ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721Errors *IERC721ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721Errors *IERC721ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721Errors *IERC721ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go index 52fdbce12..1eb6a6dd7 100644 --- a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -63,10 +63,4286 @@ type TeleporterMessageReceipt struct { RelayerRewardAddress common.Address } +// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. +type WarpBlockHash struct { + SourceChainID [32]byte + BlockHash [32]byte +} + +// WarpMessage is an auto generated low-level Go binding around an user-defined struct. +type WarpMessage struct { + SourceChainID [32]byte + OriginSenderAddress common.Address + Payload []byte +} + +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", +} + +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events +} + +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on +} + +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +} + +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AddressCaller{contract: contract}, nil +} + +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AddressTransactor{contract: contract}, nil +} + +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AddressFilterer{contract: contract}, nil +} + +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) +} + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20PermitMetaData contains all meta data concerning the IERC20Permit contract. +var IERC20PermitMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20PermitABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20PermitMetaData.ABI instead. +var IERC20PermitABI = IERC20PermitMetaData.ABI + +// IERC20Permit is an auto generated Go binding around an Ethereum contract. +type IERC20Permit struct { + IERC20PermitCaller // Read-only binding to the contract + IERC20PermitTransactor // Write-only binding to the contract + IERC20PermitFilterer // Log filterer for contract events +} + +// IERC20PermitCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20PermitCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20PermitTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20PermitFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20PermitSession struct { + Contract *IERC20Permit // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20PermitCallerSession struct { + Contract *IERC20PermitCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20PermitTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20PermitTransactorSession struct { + Contract *IERC20PermitTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20PermitRaw struct { + Contract *IERC20Permit // Generic contract binding to access the raw methods on +} + +// IERC20PermitCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20PermitCallerRaw struct { + Contract *IERC20PermitCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20PermitTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20PermitTransactorRaw struct { + Contract *IERC20PermitTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Permit creates a new instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20Permit(address common.Address, backend bind.ContractBackend) (*IERC20Permit, error) { + contract, err := bindIERC20Permit(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Permit{IERC20PermitCaller: IERC20PermitCaller{contract: contract}, IERC20PermitTransactor: IERC20PermitTransactor{contract: contract}, IERC20PermitFilterer: IERC20PermitFilterer{contract: contract}}, nil +} + +// NewIERC20PermitCaller creates a new read-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitCaller(address common.Address, caller bind.ContractCaller) (*IERC20PermitCaller, error) { + contract, err := bindIERC20Permit(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20PermitCaller{contract: contract}, nil +} + +// NewIERC20PermitTransactor creates a new write-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20PermitTransactor, error) { + contract, err := bindIERC20Permit(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20PermitTransactor{contract: contract}, nil +} + +// NewIERC20PermitFilterer creates a new log filterer instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20PermitFilterer, error) { + contract, err := bindIERC20Permit(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20PermitFilterer{contract: contract}, nil +} + +// bindIERC20Permit binds a generic wrapper to an already deployed contract. +func bindIERC20Permit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20PermitMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.IERC20PermitCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// ITeleporterMessengerMetaData contains all meta data concerning the ITeleporterMessenger contract. +var ITeleporterMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ITeleporterMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use ITeleporterMessengerMetaData.ABI instead. +var ITeleporterMessengerABI = ITeleporterMessengerMetaData.ABI + +// ITeleporterMessenger is an auto generated Go binding around an Ethereum contract. +type ITeleporterMessenger struct { + ITeleporterMessengerCaller // Read-only binding to the contract + ITeleporterMessengerTransactor // Write-only binding to the contract + ITeleporterMessengerFilterer // Log filterer for contract events +} + +// ITeleporterMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITeleporterMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITeleporterMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITeleporterMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITeleporterMessengerSession struct { + Contract *ITeleporterMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITeleporterMessengerCallerSession struct { + Contract *ITeleporterMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITeleporterMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITeleporterMessengerTransactorSession struct { + Contract *ITeleporterMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITeleporterMessengerRaw struct { + Contract *ITeleporterMessenger // Generic contract binding to access the raw methods on +} + +// ITeleporterMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITeleporterMessengerCallerRaw struct { + Contract *ITeleporterMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// ITeleporterMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITeleporterMessengerTransactorRaw struct { + Contract *ITeleporterMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITeleporterMessenger creates a new instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessenger(address common.Address, backend bind.ContractBackend) (*ITeleporterMessenger, error) { + contract, err := bindITeleporterMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITeleporterMessenger{ITeleporterMessengerCaller: ITeleporterMessengerCaller{contract: contract}, ITeleporterMessengerTransactor: ITeleporterMessengerTransactor{contract: contract}, ITeleporterMessengerFilterer: ITeleporterMessengerFilterer{contract: contract}}, nil +} + +// NewITeleporterMessengerCaller creates a new read-only instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterMessengerCaller, error) { + contract, err := bindITeleporterMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITeleporterMessengerCaller{contract: contract}, nil +} + +// NewITeleporterMessengerTransactor creates a new write-only instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterMessengerTransactor, error) { + contract, err := bindITeleporterMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITeleporterMessengerTransactor{contract: contract}, nil +} + +// NewITeleporterMessengerFilterer creates a new log filterer instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterMessengerFilterer, error) { + contract, err := bindITeleporterMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITeleporterMessengerFilterer{contract: contract}, nil +} + +// bindITeleporterMessenger binds a generic wrapper to an already deployed contract. +func bindITeleporterMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITeleporterMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterMessenger.Contract.ITeleporterMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterMessenger *ITeleporterMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.contract.Transact(opts, method, params...) +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) CheckRelayerRewardAmount(opts *bind.CallOpts, relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "checkRelayerRewardAmount", relayer, feeTokenAddress) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetFeeInfo(opts *bind.CallOpts, messageID [32]byte) (common.Address, *big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getFeeInfo", messageID) + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { + return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { + return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetMessageHash(opts *bind.CallOpts, messageID [32]byte) ([32]byte, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getMessageHash", messageID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetNextMessageID(opts *bind.CallOpts, destinationBlockchainID [32]byte) ([32]byte, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getNextMessageID", destinationBlockchainID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", sourceBlockchainID, index) + + if err != nil { + return *new(TeleporterMessageReceipt), err + } + + out0 := *abi.ConvertType(out[0], new(TeleporterMessageReceipt)).(*TeleporterMessageReceipt) + + return out0, err + +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, sourceBlockchainID [32]byte) (*big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", sourceBlockchainID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetRelayerRewardAddress(opts *bind.CallOpts, messageID [32]byte) (common.Address, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getRelayerRewardAddress", messageID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { + return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { + return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) MessageReceived(opts *bind.CallOpts, messageID [32]byte) (bool, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "messageReceived", messageID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerSession) MessageReceived(messageID [32]byte) (bool, error) { + return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) MessageReceived(messageID [32]byte) (bool, error) { + return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) AddFeeAmount(opts *bind.TransactOpts, messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "addFeeAmount", messageID, feeTokenAddress, additionalFeeAmount) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) ReceiveCrossChainMessage(opts *bind.TransactOpts, messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "receiveCrossChainMessage", messageIndex, relayerRewardAddress) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RedeemRelayerRewards(opts *bind.TransactOpts, feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "redeemRelayerRewards", feeTokenAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "retryMessageExecution", sourceBlockchainID, message) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetrySendCrossChainMessage(opts *bind.TransactOpts, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "retrySendCrossChainMessage", message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendCrossChainMessage(opts *bind.TransactOpts, messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "sendCrossChainMessage", messageInput) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// ITeleporterMessengerAddFeeAmountIterator is returned from FilterAddFeeAmount and is used to iterate over the raw logs and unpacked data for AddFeeAmount events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerAddFeeAmountIterator struct { + Event *ITeleporterMessengerAddFeeAmount // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerAddFeeAmountIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerAddFeeAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerAddFeeAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerAddFeeAmountIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerAddFeeAmountIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerAddFeeAmount represents a AddFeeAmount event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerAddFeeAmount struct { + MessageID [32]byte + UpdatedFeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddFeeAmount is a free log retrieval operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterAddFeeAmount(opts *bind.FilterOpts, messageID [][32]byte) (*ITeleporterMessengerAddFeeAmountIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "AddFeeAmount", messageIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerAddFeeAmountIterator{contract: _ITeleporterMessenger.contract, event: "AddFeeAmount", logs: logs, sub: sub}, nil +} + +// WatchAddFeeAmount is a free log subscription operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchAddFeeAmount(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerAddFeeAmount, messageID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "AddFeeAmount", messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerAddFeeAmount) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddFeeAmount is a log parse operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseAddFeeAmount(log types.Log) (*ITeleporterMessengerAddFeeAmount, error) { + event := new(ITeleporterMessengerAddFeeAmount) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerBlockchainIDInitializedIterator is returned from FilterBlockchainIDInitialized and is used to iterate over the raw logs and unpacked data for BlockchainIDInitialized events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerBlockchainIDInitializedIterator struct { + Event *ITeleporterMessengerBlockchainIDInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerBlockchainIDInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerBlockchainIDInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerBlockchainIDInitialized represents a BlockchainIDInitialized event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerBlockchainIDInitialized struct { + BlockchainID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockchainIDInitialized is a free log retrieval operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterBlockchainIDInitialized(opts *bind.FilterOpts, blockchainID [][32]byte) (*ITeleporterMessengerBlockchainIDInitializedIterator, error) { + + var blockchainIDRule []interface{} + for _, blockchainIDItem := range blockchainID { + blockchainIDRule = append(blockchainIDRule, blockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "BlockchainIDInitialized", blockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerBlockchainIDInitializedIterator{contract: _ITeleporterMessenger.contract, event: "BlockchainIDInitialized", logs: logs, sub: sub}, nil +} + +// WatchBlockchainIDInitialized is a free log subscription operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchBlockchainIDInitialized(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerBlockchainIDInitialized, blockchainID [][32]byte) (event.Subscription, error) { + + var blockchainIDRule []interface{} + for _, blockchainIDItem := range blockchainID { + blockchainIDRule = append(blockchainIDRule, blockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "BlockchainIDInitialized", blockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerBlockchainIDInitialized) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockchainIDInitialized is a log parse operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseBlockchainIDInitialized(log types.Log) (*ITeleporterMessengerBlockchainIDInitialized, error) { + event := new(ITeleporterMessengerBlockchainIDInitialized) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerMessageExecutedIterator is returned from FilterMessageExecuted and is used to iterate over the raw logs and unpacked data for MessageExecuted events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutedIterator struct { + Event *ITeleporterMessengerMessageExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerMessageExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerMessageExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerMessageExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerMessageExecuted represents a MessageExecuted event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecuted struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMessageExecuted is a free log retrieval operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerMessageExecutedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecuted", logs: logs, sub: sub}, nil +} + +// WatchMessageExecuted is a free log subscription operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecuted, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerMessageExecuted) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMessageExecuted is a log parse operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecuted(log types.Log) (*ITeleporterMessengerMessageExecuted, error) { + event := new(ITeleporterMessengerMessageExecuted) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerMessageExecutionFailedIterator is returned from FilterMessageExecutionFailed and is used to iterate over the raw logs and unpacked data for MessageExecutionFailed events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutionFailedIterator struct { + Event *ITeleporterMessengerMessageExecutionFailed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecutionFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecutionFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerMessageExecutionFailed represents a MessageExecutionFailed event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutionFailed struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Message TeleporterMessage + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMessageExecutionFailed is a free log retrieval operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutionFailedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerMessageExecutionFailedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecutionFailed", logs: logs, sub: sub}, nil +} + +// WatchMessageExecutionFailed is a free log subscription operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecutionFailed, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerMessageExecutionFailed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMessageExecutionFailed is a log parse operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecutionFailed(log types.Log) (*ITeleporterMessengerMessageExecutionFailed, error) { + event := new(ITeleporterMessengerMessageExecutionFailed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerReceiptReceivedIterator is returned from FilterReceiptReceived and is used to iterate over the raw logs and unpacked data for ReceiptReceived events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiptReceivedIterator struct { + Event *ITeleporterMessengerReceiptReceived // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerReceiptReceivedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiptReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiptReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerReceiptReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerReceiptReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerReceiptReceived represents a ReceiptReceived event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiptReceived struct { + MessageID [32]byte + DestinationBlockchainID [32]byte + RelayerRewardAddress common.Address + FeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceiptReceived is a free log retrieval operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiptReceived(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (*ITeleporterMessengerReceiptReceivedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + var relayerRewardAddressRule []interface{} + for _, relayerRewardAddressItem := range relayerRewardAddress { + relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerReceiptReceivedIterator{contract: _ITeleporterMessenger.contract, event: "ReceiptReceived", logs: logs, sub: sub}, nil +} + +// WatchReceiptReceived is a free log subscription operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiptReceived(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiptReceived, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + var relayerRewardAddressRule []interface{} + for _, relayerRewardAddressItem := range relayerRewardAddress { + relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerReceiptReceived) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceiptReceived is a log parse operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiptReceived(log types.Log) (*ITeleporterMessengerReceiptReceived, error) { + event := new(ITeleporterMessengerReceiptReceived) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerReceiveCrossChainMessageIterator is returned from FilterReceiveCrossChainMessage and is used to iterate over the raw logs and unpacked data for ReceiveCrossChainMessage events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiveCrossChainMessageIterator struct { + Event *ITeleporterMessengerReceiveCrossChainMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerReceiveCrossChainMessage represents a ReceiveCrossChainMessage event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiveCrossChainMessage struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Deliverer common.Address + RewardRedeemer common.Address + Message TeleporterMessage + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceiveCrossChainMessage is a free log retrieval operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (*ITeleporterMessengerReceiveCrossChainMessageIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + var delivererRule []interface{} + for _, delivererItem := range deliverer { + delivererRule = append(delivererRule, delivererItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerReceiveCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "ReceiveCrossChainMessage", logs: logs, sub: sub}, nil +} + +// WatchReceiveCrossChainMessage is a free log subscription operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + var delivererRule []interface{} + for _, delivererItem := range deliverer { + delivererRule = append(delivererRule, delivererItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerReceiveCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceiveCrossChainMessage is a log parse operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiveCrossChainMessage(log types.Log) (*ITeleporterMessengerReceiveCrossChainMessage, error) { + event := new(ITeleporterMessengerReceiveCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerRelayerRewardsRedeemedIterator is returned from FilterRelayerRewardsRedeemed and is used to iterate over the raw logs and unpacked data for RelayerRewardsRedeemed events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerRelayerRewardsRedeemedIterator struct { + Event *ITeleporterMessengerRelayerRewardsRedeemed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerRelayerRewardsRedeemed represents a RelayerRewardsRedeemed event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerRelayerRewardsRedeemed struct { + Redeemer common.Address + Asset common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRelayerRewardsRedeemed is a free log retrieval operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterRelayerRewardsRedeemed(opts *bind.FilterOpts, redeemer []common.Address, asset []common.Address) (*ITeleporterMessengerRelayerRewardsRedeemedIterator, error) { + + var redeemerRule []interface{} + for _, redeemerItem := range redeemer { + redeemerRule = append(redeemerRule, redeemerItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerRelayerRewardsRedeemedIterator{contract: _ITeleporterMessenger.contract, event: "RelayerRewardsRedeemed", logs: logs, sub: sub}, nil +} + +// WatchRelayerRewardsRedeemed is a free log subscription operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchRelayerRewardsRedeemed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerRelayerRewardsRedeemed, redeemer []common.Address, asset []common.Address) (event.Subscription, error) { + + var redeemerRule []interface{} + for _, redeemerItem := range redeemer { + redeemerRule = append(redeemerRule, redeemerItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRelayerRewardsRedeemed is a log parse operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseRelayerRewardsRedeemed(log types.Log) (*ITeleporterMessengerRelayerRewardsRedeemed, error) { + event := new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerSendCrossChainMessageIterator is returned from FilterSendCrossChainMessage and is used to iterate over the raw logs and unpacked data for SendCrossChainMessage events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerSendCrossChainMessageIterator struct { + Event *ITeleporterMessengerSendCrossChainMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerSendCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerSendCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerSendCrossChainMessage represents a SendCrossChainMessage event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerSendCrossChainMessage struct { + MessageID [32]byte + DestinationBlockchainID [32]byte + Message TeleporterMessage + FeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendCrossChainMessage is a free log retrieval operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterSendCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte) (*ITeleporterMessengerSendCrossChainMessageIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerSendCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "SendCrossChainMessage", logs: logs, sub: sub}, nil +} + +// WatchSendCrossChainMessage is a free log subscription operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchSendCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerSendCrossChainMessage, messageID [][32]byte, destinationBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerSendCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendCrossChainMessage is a log parse operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseSendCrossChainMessage(log types.Log) (*ITeleporterMessengerSendCrossChainMessage, error) { + event := new(ITeleporterMessengerSendCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterReceiverMetaData contains all meta data concerning the ITeleporterReceiver contract. +var ITeleporterReceiverMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ITeleporterReceiverABI is the input ABI used to generate the binding from. +// Deprecated: Use ITeleporterReceiverMetaData.ABI instead. +var ITeleporterReceiverABI = ITeleporterReceiverMetaData.ABI + +// ITeleporterReceiver is an auto generated Go binding around an Ethereum contract. +type ITeleporterReceiver struct { + ITeleporterReceiverCaller // Read-only binding to the contract + ITeleporterReceiverTransactor // Write-only binding to the contract + ITeleporterReceiverFilterer // Log filterer for contract events +} + +// ITeleporterReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITeleporterReceiverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITeleporterReceiverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITeleporterReceiverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterReceiverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITeleporterReceiverSession struct { + Contract *ITeleporterReceiver // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITeleporterReceiverCallerSession struct { + Contract *ITeleporterReceiverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITeleporterReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITeleporterReceiverTransactorSession struct { + Contract *ITeleporterReceiverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITeleporterReceiverRaw struct { + Contract *ITeleporterReceiver // Generic contract binding to access the raw methods on +} + +// ITeleporterReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITeleporterReceiverCallerRaw struct { + Contract *ITeleporterReceiverCaller // Generic read-only contract binding to access the raw methods on +} + +// ITeleporterReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITeleporterReceiverTransactorRaw struct { + Contract *ITeleporterReceiverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITeleporterReceiver creates a new instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiver(address common.Address, backend bind.ContractBackend) (*ITeleporterReceiver, error) { + contract, err := bindITeleporterReceiver(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITeleporterReceiver{ITeleporterReceiverCaller: ITeleporterReceiverCaller{contract: contract}, ITeleporterReceiverTransactor: ITeleporterReceiverTransactor{contract: contract}, ITeleporterReceiverFilterer: ITeleporterReceiverFilterer{contract: contract}}, nil +} + +// NewITeleporterReceiverCaller creates a new read-only instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiverCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterReceiverCaller, error) { + contract, err := bindITeleporterReceiver(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITeleporterReceiverCaller{contract: contract}, nil +} + +// NewITeleporterReceiverTransactor creates a new write-only instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterReceiverTransactor, error) { + contract, err := bindITeleporterReceiver(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITeleporterReceiverTransactor{contract: contract}, nil +} + +// NewITeleporterReceiverFilterer creates a new log filterer instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterReceiverFilterer, error) { + contract, err := bindITeleporterReceiver(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITeleporterReceiverFilterer{contract: contract}, nil +} + +// bindITeleporterReceiver binds a generic wrapper to an already deployed contract. +func bindITeleporterReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITeleporterReceiverMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterReceiver *ITeleporterReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterReceiver.Contract.ITeleporterReceiverCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterReceiver *ITeleporterReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterReceiver.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.contract.Transact(opts, method, params...) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ITeleporterReceiver *ITeleporterReceiverTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ITeleporterReceiver.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ITeleporterReceiver *ITeleporterReceiverSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ITeleporterReceiver *ITeleporterReceiverTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. +var IWarpMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWarpMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use IWarpMessengerMetaData.ABI instead. +var IWarpMessengerABI = IWarpMessengerMetaData.ABI + +// IWarpMessenger is an auto generated Go binding around an Ethereum contract. +type IWarpMessenger struct { + IWarpMessengerCaller // Read-only binding to the contract + IWarpMessengerTransactor // Write-only binding to the contract + IWarpMessengerFilterer // Log filterer for contract events +} + +// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWarpMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWarpMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWarpMessengerSession struct { + Contract *IWarpMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWarpMessengerCallerSession struct { + Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWarpMessengerTransactorSession struct { + Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWarpMessengerRaw struct { + Contract *IWarpMessenger // Generic contract binding to access the raw methods on +} + +// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWarpMessengerCallerRaw struct { + Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactorRaw struct { + Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { + contract, err := bindIWarpMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil +} + +// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { + contract, err := bindIWarpMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerCaller{contract: contract}, nil +} + +// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { + contract, err := bindIWarpMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerTransactor{contract: contract}, nil +} + +// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { + contract, err := bindIWarpMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWarpMessengerFilterer{contract: contract}, nil +} + +// bindIWarpMessenger binds a generic wrapper to an already deployed contract. +func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWarpMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) + + outstruct := new(struct { + WarpBlockHash WarpBlockHash + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) + + outstruct := new(struct { + Message WarpMessage + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessageIterator struct { + Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWarpMessengerSendWarpMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWarpMessengerSendWarpMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessage struct { + Sender common.Address + MessageID [32]byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil +} + +// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// MathMetaData contains all meta data concerning the Math contract. +var MathMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202433a4c39c4dc65cac0fab3f881599c1a71b0a81ec62308d2f93478cc9530ed064736f6c63430008190033", +} + +// MathABI is the input ABI used to generate the binding from. +// Deprecated: Use MathMetaData.ABI instead. +var MathABI = MathMetaData.ABI + +// MathBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MathMetaData.Bin instead. +var MathBin = MathMetaData.Bin + +// DeployMath deploys a new Ethereum contract, binding an instance of Math to it. +func DeployMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Math, error) { + parsed, err := MathMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MathBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil +} + +// Math is an auto generated Go binding around an Ethereum contract. +type Math struct { + MathCaller // Read-only binding to the contract + MathTransactor // Write-only binding to the contract + MathFilterer // Log filterer for contract events +} + +// MathCaller is an auto generated read-only Go binding around an Ethereum contract. +type MathCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathTransactor is an auto generated write-only Go binding around an Ethereum contract. +type MathTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MathFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MathSession struct { + Contract *Math // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MathCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MathCallerSession struct { + Contract *MathCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MathTransactorSession struct { + Contract *MathTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MathRaw is an auto generated low-level Go binding around an Ethereum contract. +type MathRaw struct { + Contract *Math // Generic contract binding to access the raw methods on +} + +// MathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MathCallerRaw struct { + Contract *MathCaller // Generic read-only contract binding to access the raw methods on +} + +// MathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MathTransactorRaw struct { + Contract *MathTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewMath creates a new instance of Math, bound to a specific deployed contract. +func NewMath(address common.Address, backend bind.ContractBackend) (*Math, error) { + contract, err := bindMath(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil +} + +// NewMathCaller creates a new read-only instance of Math, bound to a specific deployed contract. +func NewMathCaller(address common.Address, caller bind.ContractCaller) (*MathCaller, error) { + contract, err := bindMath(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MathCaller{contract: contract}, nil +} + +// NewMathTransactor creates a new write-only instance of Math, bound to a specific deployed contract. +func NewMathTransactor(address common.Address, transactor bind.ContractTransactor) (*MathTransactor, error) { + contract, err := bindMath(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MathTransactor{contract: contract}, nil +} + +// NewMathFilterer creates a new log filterer instance of Math, bound to a specific deployed contract. +func NewMathFilterer(address common.Address, filterer bind.ContractFilterer) (*MathFilterer, error) { + contract, err := bindMath(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MathFilterer{contract: contract}, nil +} + +// bindMath binds a generic wrapper to an already deployed contract. +func bindMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MathMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Math *MathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Math.Contract.MathCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Math *MathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Math.Contract.MathTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Math *MathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Math.Contract.MathTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Math *MathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Math.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Math *MathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Math.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Math.Contract.contract.Transact(opts, method, params...) +} + +// ReceiptQueueMetaData contains all meta data concerning the ReceiptQueue contract. +var ReceiptQueueMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208feb01a13d0de37a4f2a654e428239eab0a8daf36be21b5086d1815cfb82f8ac64736f6c63430008190033", +} + +// ReceiptQueueABI is the input ABI used to generate the binding from. +// Deprecated: Use ReceiptQueueMetaData.ABI instead. +var ReceiptQueueABI = ReceiptQueueMetaData.ABI + +// ReceiptQueueBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ReceiptQueueMetaData.Bin instead. +var ReceiptQueueBin = ReceiptQueueMetaData.Bin + +// DeployReceiptQueue deploys a new Ethereum contract, binding an instance of ReceiptQueue to it. +func DeployReceiptQueue(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ReceiptQueue, error) { + parsed, err := ReceiptQueueMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ReceiptQueueBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ReceiptQueue{ReceiptQueueCaller: ReceiptQueueCaller{contract: contract}, ReceiptQueueTransactor: ReceiptQueueTransactor{contract: contract}, ReceiptQueueFilterer: ReceiptQueueFilterer{contract: contract}}, nil +} + +// ReceiptQueue is an auto generated Go binding around an Ethereum contract. +type ReceiptQueue struct { + ReceiptQueueCaller // Read-only binding to the contract + ReceiptQueueTransactor // Write-only binding to the contract + ReceiptQueueFilterer // Log filterer for contract events +} + +// ReceiptQueueCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReceiptQueueCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReceiptQueueTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReceiptQueueTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReceiptQueueFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReceiptQueueFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReceiptQueueSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReceiptQueueSession struct { + Contract *ReceiptQueue // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReceiptQueueCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReceiptQueueCallerSession struct { + Contract *ReceiptQueueCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReceiptQueueTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReceiptQueueTransactorSession struct { + Contract *ReceiptQueueTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReceiptQueueRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReceiptQueueRaw struct { + Contract *ReceiptQueue // Generic contract binding to access the raw methods on +} + +// ReceiptQueueCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReceiptQueueCallerRaw struct { + Contract *ReceiptQueueCaller // Generic read-only contract binding to access the raw methods on +} + +// ReceiptQueueTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReceiptQueueTransactorRaw struct { + Contract *ReceiptQueueTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReceiptQueue creates a new instance of ReceiptQueue, bound to a specific deployed contract. +func NewReceiptQueue(address common.Address, backend bind.ContractBackend) (*ReceiptQueue, error) { + contract, err := bindReceiptQueue(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReceiptQueue{ReceiptQueueCaller: ReceiptQueueCaller{contract: contract}, ReceiptQueueTransactor: ReceiptQueueTransactor{contract: contract}, ReceiptQueueFilterer: ReceiptQueueFilterer{contract: contract}}, nil +} + +// NewReceiptQueueCaller creates a new read-only instance of ReceiptQueue, bound to a specific deployed contract. +func NewReceiptQueueCaller(address common.Address, caller bind.ContractCaller) (*ReceiptQueueCaller, error) { + contract, err := bindReceiptQueue(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReceiptQueueCaller{contract: contract}, nil +} + +// NewReceiptQueueTransactor creates a new write-only instance of ReceiptQueue, bound to a specific deployed contract. +func NewReceiptQueueTransactor(address common.Address, transactor bind.ContractTransactor) (*ReceiptQueueTransactor, error) { + contract, err := bindReceiptQueue(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReceiptQueueTransactor{contract: contract}, nil +} + +// NewReceiptQueueFilterer creates a new log filterer instance of ReceiptQueue, bound to a specific deployed contract. +func NewReceiptQueueFilterer(address common.Address, filterer bind.ContractFilterer) (*ReceiptQueueFilterer, error) { + contract, err := bindReceiptQueue(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReceiptQueueFilterer{contract: contract}, nil +} + +// bindReceiptQueue binds a generic wrapper to an already deployed contract. +func bindReceiptQueue(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReceiptQueueMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReceiptQueue *ReceiptQueueRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReceiptQueue.Contract.ReceiptQueueCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReceiptQueue *ReceiptQueueRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReceiptQueue.Contract.ReceiptQueueTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReceiptQueue *ReceiptQueueRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReceiptQueue.Contract.ReceiptQueueTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReceiptQueue *ReceiptQueueCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReceiptQueue.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReceiptQueue *ReceiptQueueTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReceiptQueue.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReceiptQueue *ReceiptQueueTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReceiptQueue.Contract.contract.Transact(opts, method, params...) +} + +// ReentrancyGuardsMetaData contains all meta data concerning the ReentrancyGuards contract. +var ReentrancyGuardsMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ReentrancyGuardsABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardsMetaData.ABI instead. +var ReentrancyGuardsABI = ReentrancyGuardsMetaData.ABI + +// ReentrancyGuards is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuards struct { + ReentrancyGuardsCaller // Read-only binding to the contract + ReentrancyGuardsTransactor // Write-only binding to the contract + ReentrancyGuardsFilterer // Log filterer for contract events +} + +// ReentrancyGuardsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardsSession struct { + Contract *ReentrancyGuards // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardsCallerSession struct { + Contract *ReentrancyGuardsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardsTransactorSession struct { + Contract *ReentrancyGuardsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardsRaw struct { + Contract *ReentrancyGuards // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardsCallerRaw struct { + Contract *ReentrancyGuardsCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardsTransactorRaw struct { + Contract *ReentrancyGuardsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuards creates a new instance of ReentrancyGuards, bound to a specific deployed contract. +func NewReentrancyGuards(address common.Address, backend bind.ContractBackend) (*ReentrancyGuards, error) { + contract, err := bindReentrancyGuards(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuards{ReentrancyGuardsCaller: ReentrancyGuardsCaller{contract: contract}, ReentrancyGuardsTransactor: ReentrancyGuardsTransactor{contract: contract}, ReentrancyGuardsFilterer: ReentrancyGuardsFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardsCaller creates a new read-only instance of ReentrancyGuards, bound to a specific deployed contract. +func NewReentrancyGuardsCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardsCaller, error) { + contract, err := bindReentrancyGuards(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardsCaller{contract: contract}, nil +} + +// NewReentrancyGuardsTransactor creates a new write-only instance of ReentrancyGuards, bound to a specific deployed contract. +func NewReentrancyGuardsTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardsTransactor, error) { + contract, err := bindReentrancyGuards(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardsTransactor{contract: contract}, nil +} + +// NewReentrancyGuardsFilterer creates a new log filterer instance of ReentrancyGuards, bound to a specific deployed contract. +func NewReentrancyGuardsFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardsFilterer, error) { + contract, err := bindReentrancyGuards(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardsFilterer{contract: contract}, nil +} + +// bindReentrancyGuards binds a generic wrapper to an already deployed contract. +func bindReentrancyGuards(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuards *ReentrancyGuardsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuards.Contract.ReentrancyGuardsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuards *ReentrancyGuardsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuards.Contract.ReentrancyGuardsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuards *ReentrancyGuardsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuards.Contract.ReentrancyGuardsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuards *ReentrancyGuardsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuards.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuards *ReentrancyGuardsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuards.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuards *ReentrancyGuardsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuards.Contract.contract.Transact(opts, method, params...) +} + +// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. +var SafeERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e48ef8e82df1e4ab3740b521e288cd30c92658d43bcfb55e7af86b1ffa4abbe764736f6c63430008190033", +} + +// SafeERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20MetaData.ABI instead. +var SafeERC20ABI = SafeERC20MetaData.ABI + +// SafeERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20MetaData.Bin instead. +var SafeERC20Bin = SafeERC20MetaData.Bin + +// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. +func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// SafeERC20 is an auto generated Go binding around an Ethereum contract. +type SafeERC20 struct { + SafeERC20Caller // Read-only binding to the contract + SafeERC20Transactor // Write-only binding to the contract + SafeERC20Filterer // Log filterer for contract events +} + +// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20Session struct { + Contract *SafeERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20CallerSession struct { + Contract *SafeERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransactorSession struct { + Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20Raw struct { + Contract *SafeERC20 // Generic contract binding to access the raw methods on +} + +// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20CallerRaw struct { + Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransactorRaw struct { + Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { + contract, err := bindSafeERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { + contract, err := bindSafeERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20Caller{contract: contract}, nil +} + +// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { + contract, err := bindSafeERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20Transactor{contract: contract}, nil +} + +// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { + contract, err := bindSafeERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20Filterer{contract: contract}, nil +} + +// bindSafeERC20 binds a generic wrapper to an already deployed contract. +func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transact(opts, method, params...) +} + +// SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. +var SafeERC20TransferFromMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dea7663bfe09d842906ec54ac6ab1cd0020f81907f7f5a8537ec9ddc8aa8260864736f6c63430008190033", +} + +// SafeERC20TransferFromABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20TransferFromMetaData.ABI instead. +var SafeERC20TransferFromABI = SafeERC20TransferFromMetaData.ABI + +// SafeERC20TransferFromBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20TransferFromMetaData.Bin instead. +var SafeERC20TransferFromBin = SafeERC20TransferFromMetaData.Bin + +// DeploySafeERC20TransferFrom deploys a new Ethereum contract, binding an instance of SafeERC20TransferFrom to it. +func DeploySafeERC20TransferFrom(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20TransferFrom, error) { + parsed, err := SafeERC20TransferFromMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20TransferFromBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil +} + +// SafeERC20TransferFrom is an auto generated Go binding around an Ethereum contract. +type SafeERC20TransferFrom struct { + SafeERC20TransferFromCaller // Read-only binding to the contract + SafeERC20TransferFromTransactor // Write-only binding to the contract + SafeERC20TransferFromFilterer // Log filterer for contract events +} + +// SafeERC20TransferFromCaller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20TransferFromCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20TransferFromTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20TransferFromFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20TransferFromSession struct { + Contract *SafeERC20TransferFrom // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20TransferFromCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20TransferFromCallerSession struct { + Contract *SafeERC20TransferFromCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransferFromTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransferFromTransactorSession struct { + Contract *SafeERC20TransferFromTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20TransferFromRaw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20TransferFromRaw struct { + Contract *SafeERC20TransferFrom // Generic contract binding to access the raw methods on +} + +// SafeERC20TransferFromCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20TransferFromCallerRaw struct { + Contract *SafeERC20TransferFromCaller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransferFromTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransferFromTransactorRaw struct { + Contract *SafeERC20TransferFromTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20TransferFrom creates a new instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFrom(address common.Address, backend bind.ContractBackend) (*SafeERC20TransferFrom, error) { + contract, err := bindSafeERC20TransferFrom(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil +} + +// NewSafeERC20TransferFromCaller creates a new read-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromCaller(address common.Address, caller bind.ContractCaller) (*SafeERC20TransferFromCaller, error) { + contract, err := bindSafeERC20TransferFrom(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromCaller{contract: contract}, nil +} + +// NewSafeERC20TransferFromTransactor creates a new write-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20TransferFromTransactor, error) { + contract, err := bindSafeERC20TransferFrom(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromTransactor{contract: contract}, nil +} + +// NewSafeERC20TransferFromFilterer creates a new log filterer instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20TransferFromFilterer, error) { + contract, err := bindSafeERC20TransferFrom(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromFilterer{contract: contract}, nil +} + +// bindSafeERC20TransferFrom binds a generic wrapper to an already deployed contract. +func bindSafeERC20TransferFrom(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20TransferFromMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20TransferFrom *SafeERC20TransferFromCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20TransferFrom.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.contract.Transact(opts, method, params...) +} + // TeleporterMessengerMetaData contains all meta data concerning the TeleporterMessenger contract. var TeleporterMessengerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addFeeAmount\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"additionalFeeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blockchainID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateMessageID\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkRelayerRewardAmount\",\"inputs\":[{\"name\":\"relayer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"feeAsset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getFeeInfo\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMessageHash\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNextMessageID\",\"inputs\":[{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReceiptAtIndex\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTeleporterMessageReceipt\",\"components\":[{\"name\":\"receivedMessageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReceiptQueueSize\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRelayerRewardAddress\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initializeBlockchainID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"messageNonce\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"messageReceived\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiptQueues\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"first\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"last\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveCrossChainMessage\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receivedFailedMessageHashes\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redeemRelayerRewards\",\"inputs\":[{\"name\":\"feeAsset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"retryMessageExecution\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structTeleporterMessage\",\"components\":[{\"name\":\"messageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"originSenderAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"receipts\",\"type\":\"tuple[]\",\"internalType\":\"structTeleporterMessageReceipt[]\",\"components\":[{\"name\":\"receivedMessageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"retrySendCrossChainMessage\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structTeleporterMessage\",\"components\":[{\"name\":\"messageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"originSenderAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"receipts\",\"type\":\"tuple[]\",\"internalType\":\"structTeleporterMessageReceipt[]\",\"components\":[{\"name\":\"receivedMessageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendCrossChainMessage\",\"inputs\":[{\"name\":\"messageInput\",\"type\":\"tuple\",\"internalType\":\"structTeleporterMessageInput\",\"components\":[{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"feeInfo\",\"type\":\"tuple\",\"internalType\":\"structTeleporterFeeInfo\",\"components\":[{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendSpecifiedReceipts\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIDs\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"feeInfo\",\"type\":\"tuple\",\"internalType\":\"structTeleporterFeeInfo\",\"components\":[{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sentMessageInfo\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"feeInfo\",\"type\":\"tuple\",\"internalType\":\"structTeleporterFeeInfo\",\"components\":[{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AddFeeAmount\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"updatedFeeInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"components\":[{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockchainIDInitialized\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageExecuted\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageExecutionFailed\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"components\":[{\"name\":\"messageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"originSenderAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"receipts\",\"type\":\"tuple[]\",\"internalType\":\"structTeleporterMessageReceipt[]\",\"components\":[{\"name\":\"receivedMessageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceiptReceived\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"feeInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"components\":[{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceiveCrossChainMessage\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deliverer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"rewardRedeemer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"components\":[{\"name\":\"messageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"originSenderAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"receipts\",\"type\":\"tuple[]\",\"internalType\":\"structTeleporterMessageReceipt[]\",\"components\":[{\"name\":\"receivedMessageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RelayerRewardsRedeemed\",\"inputs\":[{\"name\":\"redeemer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SendCrossChainMessage\",\"inputs\":[{\"name\":\"messageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"components\":[{\"name\":\"messageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"originSenderAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"receipts\",\"type\":\"tuple[]\",\"internalType\":\"structTeleporterMessageReceipt[]\",\"components\":[{\"name\":\"receivedMessageNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"relayerRewardAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"feeInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"components\":[{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x6080604052348015600e575f80fd5b5060015f81905580556130be806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610326578063e69d606a14610339578063e6e67bd5146103a0578063ebc3b1ba146103db578063ecc70428146103fe578063fc2d619714610407575f80fd5b8063a88981811461029e578063a9a85614146102b1578063b771b3bc146102c4578063c473eef8146102d2578063ccb5f8091461030a578063d127dc9b1461031d575f80fd5b8063399b77da11610110578063399b77da1461020757806362448850146102265780638245a1b014610239578063860a3b061461024c578063892bf4121461026b5780638ac0fd041461028b575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b61015461041a565b6040519081526020015b60405180910390f35b61017a6101753660046120f2565b6104e8565b005b61015461018a36600461210d565b6105db565b6101d961019d36600461210d565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e92919061213c565b6101fa6101f536600461210d565b6105f7565b60405161015e9190612150565b61015461021536600461210d565b5f9081526005602052604090205490565b610154610234366004612164565b61067e565b61017a6102473660046121b1565b6106d7565b61015461025a36600461210d565b60066020525f908152604090205481565b61027e6102793660046121e2565b61087a565b60405161015e9190612202565b61017a610299366004612222565b6108ab565b6101546102ac366004612257565b610adc565b6101546102bf3660046122c7565b610b1e565b6101fa6005600160991b0181565b6101546102e0366004612358565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a61031836600461238f565b610db0565b61015460025481565b61015461033436600461210d565b6111d2565b61038161034736600461210d565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103c66103ae36600461210d565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103ee6103e936600461210d565b611219565b604051901515815260200161015e565b61015460035481565b61017a6104153660046123b3565b61122e565b6002545f90806104e3576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610467573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048b91906123f6565b9050806104b35760405162461bcd60e51b81526004016104aa9061240d565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105695760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104aa565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105d76001600160a01b0383163383611483565b5050565b5f8181526004602052604081206105f1906114e7565b92915050565b5f818152600760205260408120546106635760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104aa565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106a05760405162461bcd60e51b81526004016104aa90612454565b60025f556106cd6106b08361268b565b83355f9081526004602052604090206106c8906114f9565b6115f3565b60015f5592915050565b60015f54146106f85760405162461bcd60e51b81526004016104aa90612454565b60025f81815590546107109060408401358435610adc565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107775760405162461bcd60e51b81526004016104aa9061272a565b5f8360405160200161078991906129a9565b60408051601f19818403018152919052825181516020830120919250146107c25760405162461bcd60e51b81526004016104aa906129bb565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df88685602001516040516107fd929190612a04565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061082f908490600401612a72565b6020604051808303815f875af115801561084b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086f91906123f6565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108a49083611826565b9392505050565b60015f54146108cc5760405162461bcd60e51b81526004016104aa90612454565b60025f5560018054146108f15760405162461bcd60e51b81526004016104aa90612a84565b60026001558061095b5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104aa565b6001600160a01b0382166109815760405162461bcd60e51b81526004016104aa90612ac9565b5f838152600560205260409020546109ab5760405162461bcd60e51b81526004016104aa9061272a565b5f838152600560205260409020600101546001600160a01b03838116911614610a365760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527620617373657420636f6e7472616374206164647265737360481b60648201526084016104aa565b5f610a4183836118e7565b5f85815260056020526040812060020180549293508392909190610a66908490612b31565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ac7916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b405760405162461bcd60e51b81526004016104aa90612454565b60025f818155905490866001600160401b03811115610b6157610b61612497565b604051908082528060200260200182016040528015610ba557816020015b604080518082019091525f8082526020820152815260200190600190039081610b7f5790505b509050865f5b81811015610d1d575f8a8a83818110610bc657610bc6612b44565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c425760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104aa565b610c4d8d8783610adc565b8214610cc15760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104aa565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d0457610d04612b44565b6020026020010181905250505050806001019050610bab565b506040805160c0810182528b81525f6020820152610d9e918101610d46368b90038b018b612b58565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093855250506040805192835260208084019091529092015250836115f3565b60015f559a9950505050505050505050565b6001805414610dd15760405162461bcd60e51b81526004016104aa90612a84565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e1f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e469190810190612bce565b9150915080610ea95760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104aa565b60208201516001600160a01b03163014610f205760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104aa565b5f8260400151806020019051810190610f399190612d62565b90505f610f4461041a565b905080826040015114610fb35760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104aa565b835182515f91610fc4918490610adc565b5f81815260076020526040902054909150156110385760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104aa565b611046338460a00151611a51565b6110a45760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104aa565b6110b181845f0151611abd565b6001600160a01b038616156110e7575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561112a5761112284885f01518760c00151848151811061111557611115612b44565b6020026020010151611b2d565b6001016110ef565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061116391611c51565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111a3929190612f68565b60405180910390a460e084015151156111c4576111c482875f015186611cab565b505060018055505050505050565b6002545f90806111f45760405162461bcd60e51b81526004016104aa9061240d565b5f60035460016112049190612b31565b9050611211828583610adc565b949350505050565b5f8181526007602052604081205415156105f1565b600180541461124f5760405162461bcd60e51b81526004016104aa90612a84565b60026001819055545f906112669084908435610adc565b5f81815260066020526040902054909150806112945760405162461bcd60e51b81526004016104aa9061272a565b80836040516020016112a691906129a9565b60405160208183030381529060405280519060200120146112d95760405162461bcd60e51b81526004016104aa906129bb565b5f6112ea60808501606086016120f2565b6001600160a01b03163b1161135e5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104aa565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113ad9187019087016120f2565b6113ba60e0870187612f8b565b6040516024016113cd9493929190612fcd565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61141461140d60808701606088016120f2565b5a84611dda565b9050806114775760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104aa565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114e291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611df1565b505050565b805460018201545f916105f191612ff7565b60605f61150f600561150a856114e7565b611e49565b9050805f0361155b57604080515f8082526020820190925290611553565b604080518082019091525f808252602082015281526020019060019003908161152d5790505b509392505050565b5f816001600160401b0381111561157457611574612497565b6040519080825280602002602001820160405280156115b857816020015b604080518082019091525f80825260208201528152602001906001900390816115925790505b5090505f5b82811015611553576115ce85611e5e565b8282815181106115e0576115e0612b44565b60209081029190910101526001016115bd565b5f806115fd61041a565b90505f60035f815461160e9061300a565b91905081905590505f61162583875f015184610adc565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f8160405160200161169b9190613022565b60405160208183030381529060405290505f808960400151602001511115611702576040890151516001600160a01b03166116e85760405162461bcd60e51b81526004016104aa90612ac9565b604089015180516020909101516116ff91906118e7565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117a59088908690613034565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117d7908690600401612a72565b6020604051808303815f875af11580156117f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181791906123f6565b50939998505050505050505050565b604080518082019091525f8082526020820152611842836114e7565b821061189a5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104aa565b826002015f83855f01546118ae9190612b31565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b5f80836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016119159190612150565b602060405180830381865afa158015611930573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195491906123f6565b905061196b6001600160a01b038516333086611f24565b6040516370a0823160e01b81525f906001600160a01b038616906370a0823190611999903090600401612150565b602060405180830381865afa1580156119b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119d891906123f6565b9050818111611a3e5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104aa565b611a488282612ff7565b95945050505050565b5f81515f03611a62575060016105f1565b81515f5b81811015611ab357846001600160a01b0316848281518110611a8a57611a8a612b44565b60200260200101516001600160a01b031603611aab576001925050506105f1565b600101611a66565b505f949350505050565b805f03611b1c5760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104aa565b5f9182526007602052604090912055565b5f611b3c8484845f0151610adc565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b92575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611bf8908490612b31565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c429190613046565b60405180910390a45050505050565b600182018054829160028501915f9182611c6a8361300a565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d0d5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104aa565b80606001516001600160a01b03163b5f03611d2d576114e2838383611f63565b602081015160e08201516040515f92611d4a928692602401613054565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d8e919084611dda565b905080611da757611da0858585611f63565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611e056001600160a01b03841683611fd7565b905080515f14158015611e29575080806020019051810190611e27919061307d565b155b156114e25782604051635274afe760e01b81526004016104aa9190612150565b5f818310611e5757816108a4565b5090919050565b604080518082019091525f808252602082015281546001830154819003611ec35760405162461bcd60e51b81526020600482015260196024820152785265636569707451756575653a20656d70747920717565756560381b60448201526064016104aa565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f1a908390612b31565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611f5d9186918216906323b872dd906084016114b0565b50505050565b80604051602001611f749190613022565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fca908590613022565b60405180910390a3505050565b60606108a483835f845f80856001600160a01b03168486604051611ffb9190613096565b5f6040518083038185875af1925050503d805f8114612035576040519150601f19603f3d011682016040523d82523d5f602084013e61203a565b606091505b509150915061204a868383612054565b9695505050505050565b60608261206957612064826120a7565b6108a4565b815115801561208057506001600160a01b0384163b155b156120a05783604051639996b31560e01b81526004016104aa9190612150565b50806108a4565b8051156120b75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146120d0575f80fd5b80356104e3816120d3565b5f60208284031215612102575f80fd5b81356108a4816120d3565b5f6020828403121561211d575f80fd5b5035919050565b80516001600160a01b03168252602090810151910152565b828152606081016108a46020830184612124565b6001600160a01b0391909116815260200190565b5f60208284031215612174575f80fd5b81356001600160401b03811115612189575f80fd5b820160e081850312156108a4575f80fd5b5f61010082840312156121ab575f80fd5b50919050565b5f602082840312156121c1575f80fd5b81356001600160401b038111156121d6575f80fd5b6112118482850161219a565b5f80604083850312156121f3575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105f1565b5f805f60608486031215612234575f80fd5b833592506020840135612246816120d3565b929592945050506040919091013590565b5f805f60608486031215612269575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612290575f80fd5b5081356001600160401b038111156122a6575f80fd5b6020830191508360208260051b85010111156122c0575f80fd5b9250929050565b5f805f805f8086880360a08112156122dd575f80fd5b8735965060208801356001600160401b03808211156122fa575f80fd5b6123068b838c01612280565b90985096508691506040603f198401121561231f575f80fd5b60408a01955060808a0135925080831115612338575f80fd5b505061234689828a01612280565b979a9699509497509295939492505050565b5f8060408385031215612369575f80fd5b8235612374816120d3565b91506020830135612384816120d3565b809150509250929050565b5f80604083850312156123a0575f80fd5b823563ffffffff81168114612374575f80fd5b5f80604083850312156123c4575f80fd5b8235915060208301356001600160401b038111156123e0575f80fd5b6123ec8582860161219a565b9150509250929050565b5f60208284031215612406575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124cd576124cd612497565b60405290565b60405160c081016001600160401b03811182821017156124cd576124cd612497565b60405161010081016001600160401b03811182821017156124cd576124cd612497565b604051601f8201601f191681016001600160401b038111828210171561254057612540612497565b604052919050565b5f60408284031215612558575f80fd5b6125606124ab565b9050813561256d816120d3565b808252506020820135602082015292915050565b5f6001600160401b0382111561259957612599612497565b5060051b60200190565b5f82601f8301126125b2575f80fd5b813560206125c76125c283612581565b612518565b8083825260208201915060208460051b8701019350868411156125e8575f80fd5b602086015b8481101561260d578035612600816120d3565b83529183019183016125ed565b509695505050505050565b5f6001600160401b0382111561263057612630612497565b50601f01601f191660200190565b5f82601f83011261264d575f80fd5b813561265b6125c282612618565b81815284602083860101111561266f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e0823603121561269b575f80fd5b6126a36124d3565b823581526126b3602084016120e7565b60208201526126c53660408501612548565b60408201526080830135606082015260a08301356001600160401b03808211156126ed575f80fd5b6126f9368387016125a3565b608084015260c0850135915080821115612711575f80fd5b5061271e3682860161263e565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e19843603018112612785575f80fd5b83016020810192503590506001600160401b038111156127a3575f80fd5b8060051b36038213156122c0575f80fd5b8183525f60208085019450825f5b858110156127f05781356127d5816120d3565b6001600160a01b0316875295820195908201906001016127c2565b509495945050505050565b5f808335601e19843603018112612810575f80fd5b83016020810192503590506001600160401b0381111561282e575f80fd5b8060061b36038213156122c0575f80fd5b8183525f60208085019450825f5b858110156127f0578135875282820135612866816120d3565b6001600160a01b031687840152604096870196919091019060010161284d565b5f808335601e1984360301811261289b575f80fd5b83016020810192503590506001600160401b038111156128b9575f80fd5b8036038213156122c0575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f610100823584526020830135612905816120d3565b6001600160a01b0316602085015260408381013590850152612929606084016120e7565b6001600160a01b031660608501526080838101359085015261294e60a0840184612770565b8260a087015261296183870182846127b4565b9250505061297260c08401846127fb565b85830360c087015261298583828461283f565b9250505061299660e0840184612886565b85830360e087015261204a8382846128c7565b602081525f6108a460208301846128ef565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a1660608301856128ef565b90506108a46020830184612124565b5f5b83811015612a3f578181015183820152602001612a27565b50505f910152565b5f8151808452612a5e816020860160208601612a25565b601f01601f19169290920160200192915050565b602081525f6108a46020830184612a47565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105f1576105f1612b1d565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612b68575f80fd5b6108a48383612548565b80516104e3816120d3565b5f82601f830112612b8c575f80fd5b8151612b9a6125c282612618565b818152846020838601011115612bae575f80fd5b611211826020830160208701612a25565b805180151581146104e3575f80fd5b5f8060408385031215612bdf575f80fd5b82516001600160401b0380821115612bf5575f80fd5b9084019060608287031215612c08575f80fd5b604051606081018181108382111715612c2357612c23612497565b604052825181526020830151612c38816120d3565b6020820152604083015182811115612c4e575f80fd5b612c5a88828601612b7d565b6040830152509350612c7191505060208401612bbf565b90509250929050565b5f82601f830112612c89575f80fd5b81516020612c996125c283612581565b8083825260208201915060208460051b870101935086841115612cba575f80fd5b602086015b8481101561260d578051612cd2816120d3565b8352918301918301612cbf565b5f82601f830112612cee575f80fd5b81516020612cfe6125c283612581565b82815260069290921b84018101918181019086841115612d1c575f80fd5b8286015b8481101561260d5760408189031215612d37575f80fd5b612d3f6124ab565b8151815284820151612d50816120d3565b81860152835291830191604001612d20565b5f60208284031215612d72575f80fd5b81516001600160401b0380821115612d88575f80fd5b908301906101008286031215612d9c575f80fd5b612da46124f5565b82518152612db460208401612b72565b602082015260408301516040820152612dcf60608401612b72565b60608201526080830151608082015260a083015182811115612def575f80fd5b612dfb87828601612c7a565b60a08301525060c083015182811115612e12575f80fd5b612e1e87828601612cdf565b60c08301525060e083015182811115612e35575f80fd5b612e4187828601612b7d565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b838110156127f05781516001600160a01b031687529582019590820190600101612e63565b5f815180845260208085019450602084015f5b838110156127f057612ec1878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612e9b565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f1260608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f3482860182612e50565b91505060c083015184820360c0860152612f4e8282612e88565b91505060e083015184820360e0860152611a488282612a47565b6001600160a01b03831681526040602082018190525f9061121190830184612ed4565b5f808335601e19843603018112612fa0575f80fd5b8301803591506001600160401b03821115612fb9575f80fd5b6020019150368190038213156122c0575f80fd5b8481526001600160a01b03841660208201526060604082018190525f9061204a90830184866128c7565b818103818111156105f1576105f1612b1d565b5f6001820161301b5761301b612b1d565b5060010190565b602081525f6108a46020830184612ed4565b606081525f612a166060830185612ed4565b604081016105f18284612124565b8381526001600160a01b03831660208201526060604082018190525f90611a4890830184612a47565b5f6020828403121561308d575f80fd5b6108a482612bbf565b5f82516130a7818460208701612a25565b919091019291505056fea164736f6c6343000819000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x6080604052348015600e575f80fd5b5060015f81905580556130f9806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612111565b6104f3565b005b61015461018a36600461212c565b6105e6565b6101d961019d36600461212c565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e929190612143565b6101fa6101f536600461212c565b610602565b6040516001600160a01b03909116815260200161015e565b61015461022036600461212c565b5f9081526005602052604090205490565b61015461023f36600461216a565b610689565b61017a6102523660046121b7565b6106e2565b61015461026536600461212c565b60066020525f908152604090205481565b6102896102843660046121e8565b610885565b60405161015e9190612208565b61017a6102a4366004612228565b6108b6565b6101546102b736600461225d565b610aed565b6101546102ca3660046122cd565b610b2f565b6101fa6005600160991b0181565b6101546102eb36600461235e565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a610323366004612395565b610dc1565b61015460025481565b61015461033f36600461212c565b6111e3565b61038c61035236600461212c565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b936600461212c565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f436600461212c565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046123b9565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049691906123fc565b9050806104be5760405162461bcd60e51b81526004016104b590612413565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b59061245a565b60025f556106d86106bb83612691565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b59061245a565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612730565b5f8360405160200161079491906129af565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906129c1565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612a0a565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a908490600401612a6c565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a91906123fc565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b59061245a565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b590612a7e565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612ac3565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612730565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612b2b565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b59061245a565b60025f818155905490866001600160401b03811115610b7257610b7261249d565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612b3e565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612b3e565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612b52565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b590612a7e565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612bd3565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612d67565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611a5a565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611ac6565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612b3e565b6020026020010151611b36565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611c5a565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612f6d565b60405180910390a460e084015151156111d5576111d582875f015186611cb4565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b590612413565b5f60035460016112159190612b2b565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b590612a7e565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612730565b80836040516020016112b791906129af565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906129c1565b5f6112fb6080850160608601612111565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612111565b6113cb60e0870187612f90565b6040516024016113de9493929190612fd2565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612111565b5a84611de3565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611dfa565b505050565b805460018201545f916105fc91612ffc565b60605f611520600561151b856114f8565b611e5b565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b038111156115855761158561249d565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611e70565b8282815181106115f1576115f1612b3e565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f9061300f565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac9190613027565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612ac3565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b69088908690613039565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e8908690600401612a6c565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182891906123fc565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612b2b565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196291906123fc565b90506119796001600160a01b038516333086611f3a565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e191906123fc565b9050818111611a475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611a518282612ffc565b95945050505050565b5f81515f03611a6b575060016105fc565b81515f5b81811015611abc57846001600160a01b0316848281518110611a9357611a93612b3e565b60200260200101516001600160a01b031603611ab4576001925050506105fc565b600101611a6f565b505f949350505050565b805f03611b255760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f611b458484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b9b575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c01908490612b2b565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c4b919061304b565b60405180910390a45050505050565b600182018054829160028501915f9182611c738361300f565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d165760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611d36576114f3838383611f79565b602081015160e08201516040515f92611d5392869260240161306b565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d97919084611de3565b905080611db057611da9858585611f79565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611e0e6001600160a01b03841683611fed565b905080515f14158015611e32575080806020019051810190611e309190613094565b155b156114f357604051635274afe760e01b81526001600160a01b03841660048201526024016104b5565b5f818310611e6957816108af565b5090919050565b604080518082019091525f808252602082015281546001830154819003611ed95760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f30908390612b2b565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611f739186918216906323b872dd906084016114c1565b50505050565b80604051602001611f8a9190613027565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fe0908590613027565b60405180910390a3505050565b60606108af83835f845f80856001600160a01b0316848660405161201191906130ad565b5f6040518083038185875af1925050503d805f811461204b576040519150601f19603f3d011682016040523d82523d5f602084013e612050565b606091505b509150915061206086838361206a565b9695505050505050565b60608261207f5761207a826120c6565b6108af565b815115801561209657506001600160a01b0384163b155b156120bf57604051639996b31560e01b81526001600160a01b03851660048201526024016104b5565b50806108af565b8051156120d65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146120ef575f80fd5b80356104ee816120f2565b5f60208284031215612121575f80fd5b81356108af816120f2565b5f6020828403121561213c575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f6020828403121561217a575f80fd5b81356001600160401b0381111561218f575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156121b1575f80fd5b50919050565b5f602082840312156121c7575f80fd5b81356001600160401b038111156121dc575f80fd5b611222848285016121a0565b5f80604083850312156121f9575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f6060848603121561223a575f80fd5b83359250602084013561224c816120f2565b929592945050506040919091013590565b5f805f6060848603121561226f575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612296575f80fd5b5081356001600160401b038111156122ac575f80fd5b6020830191508360208260051b85010111156122c6575f80fd5b9250929050565b5f805f805f8086880360a08112156122e3575f80fd5b8735965060208801356001600160401b0380821115612300575f80fd5b61230c8b838c01612286565b90985096508691506040603f1984011215612325575f80fd5b60408a01955060808a013592508083111561233e575f80fd5b505061234c89828a01612286565b979a9699509497509295939492505050565b5f806040838503121561236f575f80fd5b823561237a816120f2565b9150602083013561238a816120f2565b809150509250929050565b5f80604083850312156123a6575f80fd5b823563ffffffff8116811461237a575f80fd5b5f80604083850312156123ca575f80fd5b8235915060208301356001600160401b038111156123e6575f80fd5b6123f2858286016121a0565b9150509250929050565b5f6020828403121561240c575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124d3576124d361249d565b60405290565b60405160c081016001600160401b03811182821017156124d3576124d361249d565b60405161010081016001600160401b03811182821017156124d3576124d361249d565b604051601f8201601f191681016001600160401b03811182821017156125465761254661249d565b604052919050565b5f6040828403121561255e575f80fd5b6125666124b1565b90508135612573816120f2565b808252506020820135602082015292915050565b5f6001600160401b0382111561259f5761259f61249d565b5060051b60200190565b5f82601f8301126125b8575f80fd5b813560206125cd6125c883612587565b61251e565b8083825260208201915060208460051b8701019350868411156125ee575f80fd5b602086015b84811015612613578035612606816120f2565b83529183019183016125f3565b509695505050505050565b5f6001600160401b038211156126365761263661249d565b50601f01601f191660200190565b5f82601f830112612653575f80fd5b81356126616125c88261261e565b818152846020838601011115612675575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156126a1575f80fd5b6126a96124d9565b823581526126b960208401612106565b60208201526126cb366040850161254e565b60408201526080830135606082015260a08301356001600160401b03808211156126f3575f80fd5b6126ff368387016125a9565b608084015260c0850135915080821115612717575f80fd5b5061272436828601612644565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e1984360301811261278b575f80fd5b83016020810192503590506001600160401b038111156127a9575f80fd5b8060051b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f65781356127db816120f2565b6001600160a01b0316875295820195908201906001016127c8565b509495945050505050565b5f808335601e19843603018112612816575f80fd5b83016020810192503590506001600160401b03811115612834575f80fd5b8060061b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f657813587528282013561286c816120f2565b6001600160a01b0316878401526040968701969190910190600101612853565b5f808335601e198436030181126128a1575f80fd5b83016020810192503590506001600160401b038111156128bf575f80fd5b8036038213156122c6575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561290b816120f2565b6001600160a01b031660208501526040838101359085015261292f60608401612106565b6001600160a01b031660608501526080838101359085015261295460a0840184612776565b8260a087015261296783870182846127ba565b9250505061297860c0840184612801565b85830360c087015261298b838284612845565b9250505061299c60e084018461288c565b85830360e08701526120608382846128cd565b602081525f6108af60208301846128f5565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a1c60608301856128f5565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108af6020830184612a3e565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612b17565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612b62575f80fd5b6108af838361254e565b80516104ee816120f2565b5f82601f830112612b86575f80fd5b8151612b946125c88261261e565b818152846020838601011115612ba8575f80fd5b8160208501602083015e5f918101602001919091529392505050565b805180151581146104ee575f80fd5b5f8060408385031215612be4575f80fd5b82516001600160401b0380821115612bfa575f80fd5b9084019060608287031215612c0d575f80fd5b604051606081018181108382111715612c2857612c2861249d565b604052825181526020830151612c3d816120f2565b6020820152604083015182811115612c53575f80fd5b612c5f88828601612b77565b6040830152509350612c7691505060208401612bc4565b90509250929050565b5f82601f830112612c8e575f80fd5b81516020612c9e6125c883612587565b8083825260208201915060208460051b870101935086841115612cbf575f80fd5b602086015b84811015612613578051612cd7816120f2565b8352918301918301612cc4565b5f82601f830112612cf3575f80fd5b81516020612d036125c883612587565b82815260069290921b84018101918181019086841115612d21575f80fd5b8286015b848110156126135760408189031215612d3c575f80fd5b612d446124b1565b8151815284820151612d55816120f2565b81860152835291830191604001612d25565b5f60208284031215612d77575f80fd5b81516001600160401b0380821115612d8d575f80fd5b908301906101008286031215612da1575f80fd5b612da96124fb565b82518152612db960208401612b6c565b602082015260408301516040820152612dd460608401612b6c565b60608201526080830151608082015260a083015182811115612df4575f80fd5b612e0087828601612c7f565b60a08301525060c083015182811115612e17575f80fd5b612e2387828601612ce4565b60c08301525060e083015182811115612e3a575f80fd5b612e4687828601612b77565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b838110156127f65781516001600160a01b031687529582019590820190600101612e68565b5f815180845260208085019450602084015f5b838110156127f657612ec6878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612ea0565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f1760608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f3982860182612e55565b91505060c083015184820360c0860152612f538282612e8d565b91505060e083015184820360e0860152611a518282612a3e565b6001600160a01b03831681526040602082018190525f9061122290830184612ed9565b5f808335601e19843603018112612fa5575f80fd5b8301803591506001600160401b03821115612fbe575f80fd5b6020019150368190038213156122c6575f80fd5b8481526001600160a01b03841660208201526060604082018190525f9061206090830184866128cd565b818103818111156105fc576105fc612b17565b5f6001820161302057613020612b17565b5060010190565b602081525f6108af6020830184612ed9565b606081525f612a1c6060830185612ed9565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90611a5190830184612a3e565b5f602082840312156130a4575f80fd5b6108af82612bc4565b5f82518060208501845e5f92019182525091905056fea26469706673582212205dd414c48950976b8c40890278d346a96a8197094acded159d6c4a9e25d8041d64736f6c63430008190033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go index 6171b011a..3b56a4b25 100644 --- a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go @@ -35,10 +35,2283 @@ type ProtocolRegistryEntry struct { ProtocolAddress common.Address } +// TeleporterFeeInfo is an auto generated low-level Go binding around an user-defined struct. +type TeleporterFeeInfo struct { + FeeTokenAddress common.Address + Amount *big.Int +} + +// TeleporterMessage is an auto generated low-level Go binding around an user-defined struct. +type TeleporterMessage struct { + MessageNonce *big.Int + OriginSenderAddress common.Address + DestinationBlockchainID [32]byte + DestinationAddress common.Address + RequiredGasLimit *big.Int + AllowedRelayerAddresses []common.Address + Receipts []TeleporterMessageReceipt + Message []byte +} + +// TeleporterMessageInput is an auto generated low-level Go binding around an user-defined struct. +type TeleporterMessageInput struct { + DestinationBlockchainID [32]byte + DestinationAddress common.Address + FeeInfo TeleporterFeeInfo + RequiredGasLimit *big.Int + AllowedRelayerAddresses []common.Address + Message []byte +} + +// TeleporterMessageReceipt is an auto generated low-level Go binding around an user-defined struct. +type TeleporterMessageReceipt struct { + ReceivedMessageNonce *big.Int + RelayerRewardAddress common.Address +} + +// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. +type WarpBlockHash struct { + SourceChainID [32]byte + BlockHash [32]byte +} + +// WarpMessage is an auto generated low-level Go binding around an user-defined struct. +type WarpMessage struct { + SourceChainID [32]byte + OriginSenderAddress common.Address + Payload []byte +} + +// ITeleporterMessengerMetaData contains all meta data concerning the ITeleporterMessenger contract. +var ITeleporterMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ITeleporterMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use ITeleporterMessengerMetaData.ABI instead. +var ITeleporterMessengerABI = ITeleporterMessengerMetaData.ABI + +// ITeleporterMessenger is an auto generated Go binding around an Ethereum contract. +type ITeleporterMessenger struct { + ITeleporterMessengerCaller // Read-only binding to the contract + ITeleporterMessengerTransactor // Write-only binding to the contract + ITeleporterMessengerFilterer // Log filterer for contract events +} + +// ITeleporterMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITeleporterMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITeleporterMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITeleporterMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITeleporterMessengerSession struct { + Contract *ITeleporterMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITeleporterMessengerCallerSession struct { + Contract *ITeleporterMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITeleporterMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITeleporterMessengerTransactorSession struct { + Contract *ITeleporterMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITeleporterMessengerRaw struct { + Contract *ITeleporterMessenger // Generic contract binding to access the raw methods on +} + +// ITeleporterMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITeleporterMessengerCallerRaw struct { + Contract *ITeleporterMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// ITeleporterMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITeleporterMessengerTransactorRaw struct { + Contract *ITeleporterMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITeleporterMessenger creates a new instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessenger(address common.Address, backend bind.ContractBackend) (*ITeleporterMessenger, error) { + contract, err := bindITeleporterMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITeleporterMessenger{ITeleporterMessengerCaller: ITeleporterMessengerCaller{contract: contract}, ITeleporterMessengerTransactor: ITeleporterMessengerTransactor{contract: contract}, ITeleporterMessengerFilterer: ITeleporterMessengerFilterer{contract: contract}}, nil +} + +// NewITeleporterMessengerCaller creates a new read-only instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterMessengerCaller, error) { + contract, err := bindITeleporterMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITeleporterMessengerCaller{contract: contract}, nil +} + +// NewITeleporterMessengerTransactor creates a new write-only instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterMessengerTransactor, error) { + contract, err := bindITeleporterMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITeleporterMessengerTransactor{contract: contract}, nil +} + +// NewITeleporterMessengerFilterer creates a new log filterer instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterMessengerFilterer, error) { + contract, err := bindITeleporterMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITeleporterMessengerFilterer{contract: contract}, nil +} + +// bindITeleporterMessenger binds a generic wrapper to an already deployed contract. +func bindITeleporterMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITeleporterMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterMessenger.Contract.ITeleporterMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterMessenger *ITeleporterMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.contract.Transact(opts, method, params...) +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) CheckRelayerRewardAmount(opts *bind.CallOpts, relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "checkRelayerRewardAmount", relayer, feeTokenAddress) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetFeeInfo(opts *bind.CallOpts, messageID [32]byte) (common.Address, *big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getFeeInfo", messageID) + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { + return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { + return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetMessageHash(opts *bind.CallOpts, messageID [32]byte) ([32]byte, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getMessageHash", messageID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetNextMessageID(opts *bind.CallOpts, destinationBlockchainID [32]byte) ([32]byte, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getNextMessageID", destinationBlockchainID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", sourceBlockchainID, index) + + if err != nil { + return *new(TeleporterMessageReceipt), err + } + + out0 := *abi.ConvertType(out[0], new(TeleporterMessageReceipt)).(*TeleporterMessageReceipt) + + return out0, err + +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, sourceBlockchainID [32]byte) (*big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", sourceBlockchainID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetRelayerRewardAddress(opts *bind.CallOpts, messageID [32]byte) (common.Address, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getRelayerRewardAddress", messageID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { + return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { + return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) MessageReceived(opts *bind.CallOpts, messageID [32]byte) (bool, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "messageReceived", messageID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerSession) MessageReceived(messageID [32]byte) (bool, error) { + return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) MessageReceived(messageID [32]byte) (bool, error) { + return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) AddFeeAmount(opts *bind.TransactOpts, messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "addFeeAmount", messageID, feeTokenAddress, additionalFeeAmount) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) ReceiveCrossChainMessage(opts *bind.TransactOpts, messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "receiveCrossChainMessage", messageIndex, relayerRewardAddress) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RedeemRelayerRewards(opts *bind.TransactOpts, feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "redeemRelayerRewards", feeTokenAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "retryMessageExecution", sourceBlockchainID, message) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetrySendCrossChainMessage(opts *bind.TransactOpts, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "retrySendCrossChainMessage", message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendCrossChainMessage(opts *bind.TransactOpts, messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "sendCrossChainMessage", messageInput) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// ITeleporterMessengerAddFeeAmountIterator is returned from FilterAddFeeAmount and is used to iterate over the raw logs and unpacked data for AddFeeAmount events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerAddFeeAmountIterator struct { + Event *ITeleporterMessengerAddFeeAmount // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerAddFeeAmountIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerAddFeeAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerAddFeeAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerAddFeeAmountIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerAddFeeAmountIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerAddFeeAmount represents a AddFeeAmount event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerAddFeeAmount struct { + MessageID [32]byte + UpdatedFeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddFeeAmount is a free log retrieval operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterAddFeeAmount(opts *bind.FilterOpts, messageID [][32]byte) (*ITeleporterMessengerAddFeeAmountIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "AddFeeAmount", messageIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerAddFeeAmountIterator{contract: _ITeleporterMessenger.contract, event: "AddFeeAmount", logs: logs, sub: sub}, nil +} + +// WatchAddFeeAmount is a free log subscription operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchAddFeeAmount(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerAddFeeAmount, messageID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "AddFeeAmount", messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerAddFeeAmount) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddFeeAmount is a log parse operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseAddFeeAmount(log types.Log) (*ITeleporterMessengerAddFeeAmount, error) { + event := new(ITeleporterMessengerAddFeeAmount) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerBlockchainIDInitializedIterator is returned from FilterBlockchainIDInitialized and is used to iterate over the raw logs and unpacked data for BlockchainIDInitialized events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerBlockchainIDInitializedIterator struct { + Event *ITeleporterMessengerBlockchainIDInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerBlockchainIDInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerBlockchainIDInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerBlockchainIDInitialized represents a BlockchainIDInitialized event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerBlockchainIDInitialized struct { + BlockchainID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockchainIDInitialized is a free log retrieval operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterBlockchainIDInitialized(opts *bind.FilterOpts, blockchainID [][32]byte) (*ITeleporterMessengerBlockchainIDInitializedIterator, error) { + + var blockchainIDRule []interface{} + for _, blockchainIDItem := range blockchainID { + blockchainIDRule = append(blockchainIDRule, blockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "BlockchainIDInitialized", blockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerBlockchainIDInitializedIterator{contract: _ITeleporterMessenger.contract, event: "BlockchainIDInitialized", logs: logs, sub: sub}, nil +} + +// WatchBlockchainIDInitialized is a free log subscription operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchBlockchainIDInitialized(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerBlockchainIDInitialized, blockchainID [][32]byte) (event.Subscription, error) { + + var blockchainIDRule []interface{} + for _, blockchainIDItem := range blockchainID { + blockchainIDRule = append(blockchainIDRule, blockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "BlockchainIDInitialized", blockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerBlockchainIDInitialized) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockchainIDInitialized is a log parse operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseBlockchainIDInitialized(log types.Log) (*ITeleporterMessengerBlockchainIDInitialized, error) { + event := new(ITeleporterMessengerBlockchainIDInitialized) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerMessageExecutedIterator is returned from FilterMessageExecuted and is used to iterate over the raw logs and unpacked data for MessageExecuted events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutedIterator struct { + Event *ITeleporterMessengerMessageExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerMessageExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerMessageExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerMessageExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerMessageExecuted represents a MessageExecuted event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecuted struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMessageExecuted is a free log retrieval operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerMessageExecutedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecuted", logs: logs, sub: sub}, nil +} + +// WatchMessageExecuted is a free log subscription operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecuted, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerMessageExecuted) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMessageExecuted is a log parse operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecuted(log types.Log) (*ITeleporterMessengerMessageExecuted, error) { + event := new(ITeleporterMessengerMessageExecuted) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerMessageExecutionFailedIterator is returned from FilterMessageExecutionFailed and is used to iterate over the raw logs and unpacked data for MessageExecutionFailed events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutionFailedIterator struct { + Event *ITeleporterMessengerMessageExecutionFailed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecutionFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecutionFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerMessageExecutionFailed represents a MessageExecutionFailed event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutionFailed struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Message TeleporterMessage + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMessageExecutionFailed is a free log retrieval operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutionFailedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerMessageExecutionFailedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecutionFailed", logs: logs, sub: sub}, nil +} + +// WatchMessageExecutionFailed is a free log subscription operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecutionFailed, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerMessageExecutionFailed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMessageExecutionFailed is a log parse operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecutionFailed(log types.Log) (*ITeleporterMessengerMessageExecutionFailed, error) { + event := new(ITeleporterMessengerMessageExecutionFailed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerReceiptReceivedIterator is returned from FilterReceiptReceived and is used to iterate over the raw logs and unpacked data for ReceiptReceived events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiptReceivedIterator struct { + Event *ITeleporterMessengerReceiptReceived // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerReceiptReceivedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiptReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiptReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerReceiptReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerReceiptReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerReceiptReceived represents a ReceiptReceived event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiptReceived struct { + MessageID [32]byte + DestinationBlockchainID [32]byte + RelayerRewardAddress common.Address + FeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceiptReceived is a free log retrieval operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiptReceived(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (*ITeleporterMessengerReceiptReceivedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + var relayerRewardAddressRule []interface{} + for _, relayerRewardAddressItem := range relayerRewardAddress { + relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerReceiptReceivedIterator{contract: _ITeleporterMessenger.contract, event: "ReceiptReceived", logs: logs, sub: sub}, nil +} + +// WatchReceiptReceived is a free log subscription operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiptReceived(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiptReceived, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + var relayerRewardAddressRule []interface{} + for _, relayerRewardAddressItem := range relayerRewardAddress { + relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerReceiptReceived) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceiptReceived is a log parse operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiptReceived(log types.Log) (*ITeleporterMessengerReceiptReceived, error) { + event := new(ITeleporterMessengerReceiptReceived) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerReceiveCrossChainMessageIterator is returned from FilterReceiveCrossChainMessage and is used to iterate over the raw logs and unpacked data for ReceiveCrossChainMessage events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiveCrossChainMessageIterator struct { + Event *ITeleporterMessengerReceiveCrossChainMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerReceiveCrossChainMessage represents a ReceiveCrossChainMessage event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiveCrossChainMessage struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Deliverer common.Address + RewardRedeemer common.Address + Message TeleporterMessage + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceiveCrossChainMessage is a free log retrieval operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (*ITeleporterMessengerReceiveCrossChainMessageIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + var delivererRule []interface{} + for _, delivererItem := range deliverer { + delivererRule = append(delivererRule, delivererItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerReceiveCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "ReceiveCrossChainMessage", logs: logs, sub: sub}, nil +} + +// WatchReceiveCrossChainMessage is a free log subscription operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + var delivererRule []interface{} + for _, delivererItem := range deliverer { + delivererRule = append(delivererRule, delivererItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerReceiveCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceiveCrossChainMessage is a log parse operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiveCrossChainMessage(log types.Log) (*ITeleporterMessengerReceiveCrossChainMessage, error) { + event := new(ITeleporterMessengerReceiveCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerRelayerRewardsRedeemedIterator is returned from FilterRelayerRewardsRedeemed and is used to iterate over the raw logs and unpacked data for RelayerRewardsRedeemed events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerRelayerRewardsRedeemedIterator struct { + Event *ITeleporterMessengerRelayerRewardsRedeemed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerRelayerRewardsRedeemed represents a RelayerRewardsRedeemed event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerRelayerRewardsRedeemed struct { + Redeemer common.Address + Asset common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRelayerRewardsRedeemed is a free log retrieval operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterRelayerRewardsRedeemed(opts *bind.FilterOpts, redeemer []common.Address, asset []common.Address) (*ITeleporterMessengerRelayerRewardsRedeemedIterator, error) { + + var redeemerRule []interface{} + for _, redeemerItem := range redeemer { + redeemerRule = append(redeemerRule, redeemerItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerRelayerRewardsRedeemedIterator{contract: _ITeleporterMessenger.contract, event: "RelayerRewardsRedeemed", logs: logs, sub: sub}, nil +} + +// WatchRelayerRewardsRedeemed is a free log subscription operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchRelayerRewardsRedeemed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerRelayerRewardsRedeemed, redeemer []common.Address, asset []common.Address) (event.Subscription, error) { + + var redeemerRule []interface{} + for _, redeemerItem := range redeemer { + redeemerRule = append(redeemerRule, redeemerItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRelayerRewardsRedeemed is a log parse operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseRelayerRewardsRedeemed(log types.Log) (*ITeleporterMessengerRelayerRewardsRedeemed, error) { + event := new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerSendCrossChainMessageIterator is returned from FilterSendCrossChainMessage and is used to iterate over the raw logs and unpacked data for SendCrossChainMessage events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerSendCrossChainMessageIterator struct { + Event *ITeleporterMessengerSendCrossChainMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerSendCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerSendCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerSendCrossChainMessage represents a SendCrossChainMessage event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerSendCrossChainMessage struct { + MessageID [32]byte + DestinationBlockchainID [32]byte + Message TeleporterMessage + FeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendCrossChainMessage is a free log retrieval operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterSendCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte) (*ITeleporterMessengerSendCrossChainMessageIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerSendCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "SendCrossChainMessage", logs: logs, sub: sub}, nil +} + +// WatchSendCrossChainMessage is a free log subscription operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchSendCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerSendCrossChainMessage, messageID [][32]byte, destinationBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerSendCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendCrossChainMessage is a log parse operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseSendCrossChainMessage(log types.Log) (*ITeleporterMessengerSendCrossChainMessage, error) { + event := new(ITeleporterMessengerSendCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. +var IWarpMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWarpMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use IWarpMessengerMetaData.ABI instead. +var IWarpMessengerABI = IWarpMessengerMetaData.ABI + +// IWarpMessenger is an auto generated Go binding around an Ethereum contract. +type IWarpMessenger struct { + IWarpMessengerCaller // Read-only binding to the contract + IWarpMessengerTransactor // Write-only binding to the contract + IWarpMessengerFilterer // Log filterer for contract events +} + +// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWarpMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWarpMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWarpMessengerSession struct { + Contract *IWarpMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWarpMessengerCallerSession struct { + Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWarpMessengerTransactorSession struct { + Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWarpMessengerRaw struct { + Contract *IWarpMessenger // Generic contract binding to access the raw methods on +} + +// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWarpMessengerCallerRaw struct { + Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactorRaw struct { + Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { + contract, err := bindIWarpMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil +} + +// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { + contract, err := bindIWarpMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerCaller{contract: contract}, nil +} + +// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { + contract, err := bindIWarpMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerTransactor{contract: contract}, nil +} + +// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { + contract, err := bindIWarpMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWarpMessengerFilterer{contract: contract}, nil +} + +// bindIWarpMessenger binds a generic wrapper to an already deployed contract. +func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWarpMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) + + outstruct := new(struct { + WarpBlockHash WarpBlockHash + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) + + outstruct := new(struct { + Message WarpMessage + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessageIterator struct { + Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWarpMessengerSendWarpMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWarpMessengerSendWarpMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessage struct { + Sender common.Address + MessageID [32]byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil +} + +// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. var TeleporterRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"initialEntries\",\"type\":\"tuple[]\",\"internalType\":\"structProtocolRegistryEntry[]\",\"components\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"protocolAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAX_VERSION_INCREMENT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addProtocolVersion\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blockchainID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAddressFromVersion\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestTeleporter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractITeleporterMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTeleporterFromVersion\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractITeleporterMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVersionFromAddress\",\"inputs\":[{\"name\":\"protocolAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestVersion\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AddProtocolVersion\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"protocolAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"LatestVersionUpdated\",\"inputs\":[{\"name\":\"oldVersion\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"newVersion\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60a060405234801561000f575f80fd5b50604051610f8c380380610f8c83398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610a6161052b5f395f818161014301526102580152610a615ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d136600461074a565b61016d565b6100e96100e4366004610761565b61017d565b005b6100a66100f936600461074a565b6103ec565b61011161010c3660046107a2565b61047e565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610524565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061083f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061093e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610534565b5050505050565b5f815f0361040c5760405162461bcd60e51b815260040161024b906109b7565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104a55760405162461bcd60e51b815260040161024b906109ec565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61052f5f546103ec565b905090565b80515f036105545760405162461bcd60e51b815260040161024b906109b7565b80515f908152600160205260409020546001600160a01b0316156105cd5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166105f75760405162461bcd60e51b815260040161024b906109ec565b5f546106056101f482610a35565b8251111561066c5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156106d35781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107465781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f6020828403121561075a575f80fd5b5035919050565b5f60208284031215610771575f80fd5b813563ffffffff81168114610784575f80fd5b9392505050565b6001600160a01b038116811461079f575f80fd5b50565b5f602082840312156107b2575f80fd5b81356107848161078b565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156107f4576107f46107bd565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610823576108236107bd565b604052919050565b8051801515811461083a575f80fd5b919050565b5f8060408385031215610850575f80fd5b825167ffffffffffffffff80821115610867575f80fd5b908401906060828703121561087a575f80fd5b6108826107d1565b825181526020808401516108958161078b565b828201526040840151838111156108aa575f80fd5b80850194505087601f8501126108be575f80fd5b8351838111156108d0576108d06107bd565b6108e2601f8201601f191683016107fa565b935080845288828287010111156108f7575f80fd5b5f5b818110156109145785810183015185820184015282016108f9565b505f8282860101525082604083015281955061093181880161082b565b9450505050509250929050565b5f808284036060811215610950575f80fd5b604081121561095d575f80fd5b506040516040810181811067ffffffffffffffff82111715610981576109816107bd565b6040528351815260208401516109968161078b565b602082015260408401519092506109ac8161078b565b809150509250929050565b6020808252818101527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604082015260600190565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea164736f6c6343000819000a", + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a060405234801561000f575f80fd5b50604051610fca380380610fca83398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610a9f61052b5f395f818161014301526102580152610a9f5ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f8083604001518060200190518101906103679190610988565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a01565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a01565b5f546106656101f482610a4a565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b808286018386015e5f8282860101525082604083015281955061097b81880161088b565b9450505050509250929050565b5f80828403606081121561099a575f80fd5b60408112156109a7575f80fd5b506040516040810181811067ffffffffffffffff821117156109cb576109cb61081d565b6040528351815260208401516109e0816107eb565b602082015260408401519092506109f6816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220fe036b8dd4c0898f583fa51960ec46bcf6307508fd784944cdf1ccf51969ca8564736f6c63430008190033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go index 9c7aca910..327807001 100644 --- a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go +++ b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go @@ -29,10 +29,8006 @@ var ( _ = abi.ConvertType ) +// ProtocolRegistryEntry is an auto generated low-level Go binding around an user-defined struct. +type ProtocolRegistryEntry struct { + Version *big.Int + ProtocolAddress common.Address +} + +// TeleporterFeeInfo is an auto generated low-level Go binding around an user-defined struct. +type TeleporterFeeInfo struct { + FeeTokenAddress common.Address + Amount *big.Int +} + +// TeleporterMessage is an auto generated low-level Go binding around an user-defined struct. +type TeleporterMessage struct { + MessageNonce *big.Int + OriginSenderAddress common.Address + DestinationBlockchainID [32]byte + DestinationAddress common.Address + RequiredGasLimit *big.Int + AllowedRelayerAddresses []common.Address + Receipts []TeleporterMessageReceipt + Message []byte +} + +// TeleporterMessageInput is an auto generated low-level Go binding around an user-defined struct. +type TeleporterMessageInput struct { + DestinationBlockchainID [32]byte + DestinationAddress common.Address + FeeInfo TeleporterFeeInfo + RequiredGasLimit *big.Int + AllowedRelayerAddresses []common.Address + Message []byte +} + +// TeleporterMessageReceipt is an auto generated low-level Go binding around an user-defined struct. +type TeleporterMessageReceipt struct { + ReceivedMessageNonce *big.Int + RelayerRewardAddress common.Address +} + +// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. +type WarpBlockHash struct { + SourceChainID [32]byte + BlockHash [32]byte +} + +// WarpMessage is an auto generated low-level Go binding around an user-defined struct. +type WarpMessage struct { + SourceChainID [32]byte + OriginSenderAddress common.Address + Payload []byte +} + +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", +} + +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events +} + +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on +} + +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +} + +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AddressCaller{contract: contract}, nil +} + +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AddressTransactor{contract: contract}, nil +} + +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AddressFilterer{contract: contract}, nil +} + +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) +} + +// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. +var ContextUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// ContextUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextUpgradeableMetaData.ABI instead. +var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI + +// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. +type ContextUpgradeable struct { + ContextUpgradeableCaller // Read-only binding to the contract + ContextUpgradeableTransactor // Write-only binding to the contract + ContextUpgradeableFilterer // Log filterer for contract events +} + +// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextUpgradeableSession struct { + Contract *ContextUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextUpgradeableCallerSession struct { + Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextUpgradeableTransactorSession struct { + Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextUpgradeableRaw struct { + Contract *ContextUpgradeable // Generic contract binding to access the raw methods on +} + +// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextUpgradeableCallerRaw struct { + Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactorRaw struct { + Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { + contract, err := bindContextUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil +} + +// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { + contract, err := bindContextUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableCaller{contract: contract}, nil +} + +// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { + contract, err := bindContextUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableTransactor{contract: contract}, nil +} + +// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { + contract, err := bindContextUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContextUpgradeableFilterer{contract: contract}, nil +} + +// bindContextUpgradeable binds a generic wrapper to an already deployed contract. +func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. +type ContextUpgradeableInitializedIterator struct { + Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContextUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContextUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContextUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. +type ContextUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { + + logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20PermitMetaData contains all meta data concerning the IERC20Permit contract. +var IERC20PermitMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20PermitABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20PermitMetaData.ABI instead. +var IERC20PermitABI = IERC20PermitMetaData.ABI + +// IERC20Permit is an auto generated Go binding around an Ethereum contract. +type IERC20Permit struct { + IERC20PermitCaller // Read-only binding to the contract + IERC20PermitTransactor // Write-only binding to the contract + IERC20PermitFilterer // Log filterer for contract events +} + +// IERC20PermitCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20PermitCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20PermitTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20PermitFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20PermitSession struct { + Contract *IERC20Permit // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20PermitCallerSession struct { + Contract *IERC20PermitCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20PermitTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20PermitTransactorSession struct { + Contract *IERC20PermitTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20PermitRaw struct { + Contract *IERC20Permit // Generic contract binding to access the raw methods on +} + +// IERC20PermitCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20PermitCallerRaw struct { + Contract *IERC20PermitCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20PermitTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20PermitTransactorRaw struct { + Contract *IERC20PermitTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Permit creates a new instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20Permit(address common.Address, backend bind.ContractBackend) (*IERC20Permit, error) { + contract, err := bindIERC20Permit(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Permit{IERC20PermitCaller: IERC20PermitCaller{contract: contract}, IERC20PermitTransactor: IERC20PermitTransactor{contract: contract}, IERC20PermitFilterer: IERC20PermitFilterer{contract: contract}}, nil +} + +// NewIERC20PermitCaller creates a new read-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitCaller(address common.Address, caller bind.ContractCaller) (*IERC20PermitCaller, error) { + contract, err := bindIERC20Permit(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20PermitCaller{contract: contract}, nil +} + +// NewIERC20PermitTransactor creates a new write-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20PermitTransactor, error) { + contract, err := bindIERC20Permit(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20PermitTransactor{contract: contract}, nil +} + +// NewIERC20PermitFilterer creates a new log filterer instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20PermitFilterer, error) { + contract, err := bindIERC20Permit(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20PermitFilterer{contract: contract}, nil +} + +// bindIERC20Permit binds a generic wrapper to an already deployed contract. +func bindIERC20Permit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20PermitMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.IERC20PermitCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// ITeleporterMessengerMetaData contains all meta data concerning the ITeleporterMessenger contract. +var ITeleporterMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ITeleporterMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use ITeleporterMessengerMetaData.ABI instead. +var ITeleporterMessengerABI = ITeleporterMessengerMetaData.ABI + +// ITeleporterMessenger is an auto generated Go binding around an Ethereum contract. +type ITeleporterMessenger struct { + ITeleporterMessengerCaller // Read-only binding to the contract + ITeleporterMessengerTransactor // Write-only binding to the contract + ITeleporterMessengerFilterer // Log filterer for contract events +} + +// ITeleporterMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITeleporterMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITeleporterMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITeleporterMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITeleporterMessengerSession struct { + Contract *ITeleporterMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITeleporterMessengerCallerSession struct { + Contract *ITeleporterMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITeleporterMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITeleporterMessengerTransactorSession struct { + Contract *ITeleporterMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITeleporterMessengerRaw struct { + Contract *ITeleporterMessenger // Generic contract binding to access the raw methods on +} + +// ITeleporterMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITeleporterMessengerCallerRaw struct { + Contract *ITeleporterMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// ITeleporterMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITeleporterMessengerTransactorRaw struct { + Contract *ITeleporterMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITeleporterMessenger creates a new instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessenger(address common.Address, backend bind.ContractBackend) (*ITeleporterMessenger, error) { + contract, err := bindITeleporterMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITeleporterMessenger{ITeleporterMessengerCaller: ITeleporterMessengerCaller{contract: contract}, ITeleporterMessengerTransactor: ITeleporterMessengerTransactor{contract: contract}, ITeleporterMessengerFilterer: ITeleporterMessengerFilterer{contract: contract}}, nil +} + +// NewITeleporterMessengerCaller creates a new read-only instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterMessengerCaller, error) { + contract, err := bindITeleporterMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITeleporterMessengerCaller{contract: contract}, nil +} + +// NewITeleporterMessengerTransactor creates a new write-only instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterMessengerTransactor, error) { + contract, err := bindITeleporterMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITeleporterMessengerTransactor{contract: contract}, nil +} + +// NewITeleporterMessengerFilterer creates a new log filterer instance of ITeleporterMessenger, bound to a specific deployed contract. +func NewITeleporterMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterMessengerFilterer, error) { + contract, err := bindITeleporterMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITeleporterMessengerFilterer{contract: contract}, nil +} + +// bindITeleporterMessenger binds a generic wrapper to an already deployed contract. +func bindITeleporterMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITeleporterMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterMessenger.Contract.ITeleporterMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterMessenger *ITeleporterMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.contract.Transact(opts, method, params...) +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) CheckRelayerRewardAmount(opts *bind.CallOpts, relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "checkRelayerRewardAmount", relayer, feeTokenAddress) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) +} + +// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. +// +// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { + return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetFeeInfo(opts *bind.CallOpts, messageID [32]byte) (common.Address, *big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getFeeInfo", messageID) + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { + return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. +// +// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { + return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetMessageHash(opts *bind.CallOpts, messageID [32]byte) ([32]byte, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getMessageHash", messageID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. +// +// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetNextMessageID(opts *bind.CallOpts, destinationBlockchainID [32]byte) ([32]byte, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getNextMessageID", destinationBlockchainID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) +} + +// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. +// +// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { + return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", sourceBlockchainID, index) + + if err != nil { + return *new(TeleporterMessageReceipt), err + } + + out0 := *abi.ConvertType(out[0], new(TeleporterMessageReceipt)).(*TeleporterMessageReceipt) + + return out0, err + +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) +} + +// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. +// +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, sourceBlockchainID [32]byte) (*big.Int, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", sourceBlockchainID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) +} + +// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. +// +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetRelayerRewardAddress(opts *bind.CallOpts, messageID [32]byte) (common.Address, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "getRelayerRewardAddress", messageID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { + return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) +} + +// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. +// +// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { + return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerCaller) MessageReceived(opts *bind.CallOpts, messageID [32]byte) (bool, error) { + var out []interface{} + err := _ITeleporterMessenger.contract.Call(opts, &out, "messageReceived", messageID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerSession) MessageReceived(messageID [32]byte) (bool, error) { + return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) +} + +// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. +// +// Solidity: function messageReceived(bytes32 messageID) view returns(bool) +func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) MessageReceived(messageID [32]byte) (bool, error) { + return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) AddFeeAmount(opts *bind.TransactOpts, messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "addFeeAmount", messageID, feeTokenAddress, additionalFeeAmount) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) +} + +// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. +// +// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) ReceiveCrossChainMessage(opts *bind.TransactOpts, messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "receiveCrossChainMessage", messageIndex, relayerRewardAddress) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) +} + +// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. +// +// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RedeemRelayerRewards(opts *bind.TransactOpts, feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "redeemRelayerRewards", feeTokenAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) +} + +// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. +// +// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "retryMessageExecution", sourceBlockchainID, message) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) +} + +// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. +// +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetrySendCrossChainMessage(opts *bind.TransactOpts, message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "retrySendCrossChainMessage", message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) +} + +// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. +// +// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendCrossChainMessage(opts *bind.TransactOpts, messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "sendCrossChainMessage", messageInput) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) +} + +// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. +// +// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. +// +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +} + +// ITeleporterMessengerAddFeeAmountIterator is returned from FilterAddFeeAmount and is used to iterate over the raw logs and unpacked data for AddFeeAmount events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerAddFeeAmountIterator struct { + Event *ITeleporterMessengerAddFeeAmount // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerAddFeeAmountIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerAddFeeAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerAddFeeAmount) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerAddFeeAmountIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerAddFeeAmountIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerAddFeeAmount represents a AddFeeAmount event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerAddFeeAmount struct { + MessageID [32]byte + UpdatedFeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddFeeAmount is a free log retrieval operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterAddFeeAmount(opts *bind.FilterOpts, messageID [][32]byte) (*ITeleporterMessengerAddFeeAmountIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "AddFeeAmount", messageIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerAddFeeAmountIterator{contract: _ITeleporterMessenger.contract, event: "AddFeeAmount", logs: logs, sub: sub}, nil +} + +// WatchAddFeeAmount is a free log subscription operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchAddFeeAmount(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerAddFeeAmount, messageID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "AddFeeAmount", messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerAddFeeAmount) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddFeeAmount is a log parse operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. +// +// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseAddFeeAmount(log types.Log) (*ITeleporterMessengerAddFeeAmount, error) { + event := new(ITeleporterMessengerAddFeeAmount) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerBlockchainIDInitializedIterator is returned from FilterBlockchainIDInitialized and is used to iterate over the raw logs and unpacked data for BlockchainIDInitialized events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerBlockchainIDInitializedIterator struct { + Event *ITeleporterMessengerBlockchainIDInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerBlockchainIDInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerBlockchainIDInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerBlockchainIDInitialized represents a BlockchainIDInitialized event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerBlockchainIDInitialized struct { + BlockchainID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockchainIDInitialized is a free log retrieval operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterBlockchainIDInitialized(opts *bind.FilterOpts, blockchainID [][32]byte) (*ITeleporterMessengerBlockchainIDInitializedIterator, error) { + + var blockchainIDRule []interface{} + for _, blockchainIDItem := range blockchainID { + blockchainIDRule = append(blockchainIDRule, blockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "BlockchainIDInitialized", blockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerBlockchainIDInitializedIterator{contract: _ITeleporterMessenger.contract, event: "BlockchainIDInitialized", logs: logs, sub: sub}, nil +} + +// WatchBlockchainIDInitialized is a free log subscription operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchBlockchainIDInitialized(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerBlockchainIDInitialized, blockchainID [][32]byte) (event.Subscription, error) { + + var blockchainIDRule []interface{} + for _, blockchainIDItem := range blockchainID { + blockchainIDRule = append(blockchainIDRule, blockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "BlockchainIDInitialized", blockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerBlockchainIDInitialized) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockchainIDInitialized is a log parse operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. +// +// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseBlockchainIDInitialized(log types.Log) (*ITeleporterMessengerBlockchainIDInitialized, error) { + event := new(ITeleporterMessengerBlockchainIDInitialized) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerMessageExecutedIterator is returned from FilterMessageExecuted and is used to iterate over the raw logs and unpacked data for MessageExecuted events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutedIterator struct { + Event *ITeleporterMessengerMessageExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerMessageExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerMessageExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerMessageExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerMessageExecuted represents a MessageExecuted event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecuted struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMessageExecuted is a free log retrieval operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerMessageExecutedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecuted", logs: logs, sub: sub}, nil +} + +// WatchMessageExecuted is a free log subscription operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecuted, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerMessageExecuted) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMessageExecuted is a log parse operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. +// +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecuted(log types.Log) (*ITeleporterMessengerMessageExecuted, error) { + event := new(ITeleporterMessengerMessageExecuted) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerMessageExecutionFailedIterator is returned from FilterMessageExecutionFailed and is used to iterate over the raw logs and unpacked data for MessageExecutionFailed events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutionFailedIterator struct { + Event *ITeleporterMessengerMessageExecutionFailed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecutionFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerMessageExecutionFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerMessageExecutionFailedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerMessageExecutionFailed represents a MessageExecutionFailed event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerMessageExecutionFailed struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Message TeleporterMessage + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMessageExecutionFailed is a free log retrieval operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutionFailedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerMessageExecutionFailedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecutionFailed", logs: logs, sub: sub}, nil +} + +// WatchMessageExecutionFailed is a free log subscription operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecutionFailed, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerMessageExecutionFailed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMessageExecutionFailed is a log parse operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. +// +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecutionFailed(log types.Log) (*ITeleporterMessengerMessageExecutionFailed, error) { + event := new(ITeleporterMessengerMessageExecutionFailed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerReceiptReceivedIterator is returned from FilterReceiptReceived and is used to iterate over the raw logs and unpacked data for ReceiptReceived events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiptReceivedIterator struct { + Event *ITeleporterMessengerReceiptReceived // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerReceiptReceivedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiptReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiptReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerReceiptReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerReceiptReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerReceiptReceived represents a ReceiptReceived event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiptReceived struct { + MessageID [32]byte + DestinationBlockchainID [32]byte + RelayerRewardAddress common.Address + FeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceiptReceived is a free log retrieval operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiptReceived(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (*ITeleporterMessengerReceiptReceivedIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + var relayerRewardAddressRule []interface{} + for _, relayerRewardAddressItem := range relayerRewardAddress { + relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerReceiptReceivedIterator{contract: _ITeleporterMessenger.contract, event: "ReceiptReceived", logs: logs, sub: sub}, nil +} + +// WatchReceiptReceived is a free log subscription operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiptReceived(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiptReceived, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + var relayerRewardAddressRule []interface{} + for _, relayerRewardAddressItem := range relayerRewardAddress { + relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerReceiptReceived) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceiptReceived is a log parse operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. +// +// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiptReceived(log types.Log) (*ITeleporterMessengerReceiptReceived, error) { + event := new(ITeleporterMessengerReceiptReceived) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerReceiveCrossChainMessageIterator is returned from FilterReceiveCrossChainMessage and is used to iterate over the raw logs and unpacked data for ReceiveCrossChainMessage events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiveCrossChainMessageIterator struct { + Event *ITeleporterMessengerReceiveCrossChainMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerReceiveCrossChainMessage represents a ReceiveCrossChainMessage event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerReceiveCrossChainMessage struct { + MessageID [32]byte + SourceBlockchainID [32]byte + Deliverer common.Address + RewardRedeemer common.Address + Message TeleporterMessage + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceiveCrossChainMessage is a free log retrieval operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (*ITeleporterMessengerReceiveCrossChainMessageIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + var delivererRule []interface{} + for _, delivererItem := range deliverer { + delivererRule = append(delivererRule, delivererItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerReceiveCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "ReceiveCrossChainMessage", logs: logs, sub: sub}, nil +} + +// WatchReceiveCrossChainMessage is a free log subscription operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) + } + var delivererRule []interface{} + for _, delivererItem := range deliverer { + delivererRule = append(delivererRule, delivererItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerReceiveCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceiveCrossChainMessage is a log parse operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. +// +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiveCrossChainMessage(log types.Log) (*ITeleporterMessengerReceiveCrossChainMessage, error) { + event := new(ITeleporterMessengerReceiveCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerRelayerRewardsRedeemedIterator is returned from FilterRelayerRewardsRedeemed and is used to iterate over the raw logs and unpacked data for RelayerRewardsRedeemed events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerRelayerRewardsRedeemedIterator struct { + Event *ITeleporterMessengerRelayerRewardsRedeemed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerRelayerRewardsRedeemed represents a RelayerRewardsRedeemed event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerRelayerRewardsRedeemed struct { + Redeemer common.Address + Asset common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRelayerRewardsRedeemed is a free log retrieval operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterRelayerRewardsRedeemed(opts *bind.FilterOpts, redeemer []common.Address, asset []common.Address) (*ITeleporterMessengerRelayerRewardsRedeemedIterator, error) { + + var redeemerRule []interface{} + for _, redeemerItem := range redeemer { + redeemerRule = append(redeemerRule, redeemerItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerRelayerRewardsRedeemedIterator{contract: _ITeleporterMessenger.contract, event: "RelayerRewardsRedeemed", logs: logs, sub: sub}, nil +} + +// WatchRelayerRewardsRedeemed is a free log subscription operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchRelayerRewardsRedeemed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerRelayerRewardsRedeemed, redeemer []common.Address, asset []common.Address) (event.Subscription, error) { + + var redeemerRule []interface{} + for _, redeemerItem := range redeemer { + redeemerRule = append(redeemerRule, redeemerItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRelayerRewardsRedeemed is a log parse operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. +// +// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseRelayerRewardsRedeemed(log types.Log) (*ITeleporterMessengerRelayerRewardsRedeemed, error) { + event := new(ITeleporterMessengerRelayerRewardsRedeemed) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterMessengerSendCrossChainMessageIterator is returned from FilterSendCrossChainMessage and is used to iterate over the raw logs and unpacked data for SendCrossChainMessage events raised by the ITeleporterMessenger contract. +type ITeleporterMessengerSendCrossChainMessageIterator struct { + Event *ITeleporterMessengerSendCrossChainMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerSendCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITeleporterMessengerSendCrossChainMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITeleporterMessengerSendCrossChainMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITeleporterMessengerSendCrossChainMessage represents a SendCrossChainMessage event raised by the ITeleporterMessenger contract. +type ITeleporterMessengerSendCrossChainMessage struct { + MessageID [32]byte + DestinationBlockchainID [32]byte + Message TeleporterMessage + FeeInfo TeleporterFeeInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendCrossChainMessage is a free log retrieval operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterSendCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte) (*ITeleporterMessengerSendCrossChainMessageIterator, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) + if err != nil { + return nil, err + } + return &ITeleporterMessengerSendCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "SendCrossChainMessage", logs: logs, sub: sub}, nil +} + +// WatchSendCrossChainMessage is a free log subscription operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchSendCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerSendCrossChainMessage, messageID [][32]byte, destinationBlockchainID [][32]byte) (event.Subscription, error) { + + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + var destinationBlockchainIDRule []interface{} + for _, destinationBlockchainIDItem := range destinationBlockchainID { + destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) + } + + logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITeleporterMessengerSendCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendCrossChainMessage is a log parse operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. +// +// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) +func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseSendCrossChainMessage(log types.Log) (*ITeleporterMessengerSendCrossChainMessage, error) { + event := new(ITeleporterMessengerSendCrossChainMessage) + if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITeleporterReceiverMetaData contains all meta data concerning the ITeleporterReceiver contract. +var ITeleporterReceiverMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ITeleporterReceiverABI is the input ABI used to generate the binding from. +// Deprecated: Use ITeleporterReceiverMetaData.ABI instead. +var ITeleporterReceiverABI = ITeleporterReceiverMetaData.ABI + +// ITeleporterReceiver is an auto generated Go binding around an Ethereum contract. +type ITeleporterReceiver struct { + ITeleporterReceiverCaller // Read-only binding to the contract + ITeleporterReceiverTransactor // Write-only binding to the contract + ITeleporterReceiverFilterer // Log filterer for contract events +} + +// ITeleporterReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITeleporterReceiverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITeleporterReceiverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITeleporterReceiverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITeleporterReceiverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITeleporterReceiverSession struct { + Contract *ITeleporterReceiver // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITeleporterReceiverCallerSession struct { + Contract *ITeleporterReceiverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITeleporterReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITeleporterReceiverTransactorSession struct { + Contract *ITeleporterReceiverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITeleporterReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITeleporterReceiverRaw struct { + Contract *ITeleporterReceiver // Generic contract binding to access the raw methods on +} + +// ITeleporterReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITeleporterReceiverCallerRaw struct { + Contract *ITeleporterReceiverCaller // Generic read-only contract binding to access the raw methods on +} + +// ITeleporterReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITeleporterReceiverTransactorRaw struct { + Contract *ITeleporterReceiverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITeleporterReceiver creates a new instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiver(address common.Address, backend bind.ContractBackend) (*ITeleporterReceiver, error) { + contract, err := bindITeleporterReceiver(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITeleporterReceiver{ITeleporterReceiverCaller: ITeleporterReceiverCaller{contract: contract}, ITeleporterReceiverTransactor: ITeleporterReceiverTransactor{contract: contract}, ITeleporterReceiverFilterer: ITeleporterReceiverFilterer{contract: contract}}, nil +} + +// NewITeleporterReceiverCaller creates a new read-only instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiverCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterReceiverCaller, error) { + contract, err := bindITeleporterReceiver(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITeleporterReceiverCaller{contract: contract}, nil +} + +// NewITeleporterReceiverTransactor creates a new write-only instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterReceiverTransactor, error) { + contract, err := bindITeleporterReceiver(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITeleporterReceiverTransactor{contract: contract}, nil +} + +// NewITeleporterReceiverFilterer creates a new log filterer instance of ITeleporterReceiver, bound to a specific deployed contract. +func NewITeleporterReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterReceiverFilterer, error) { + contract, err := bindITeleporterReceiver(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITeleporterReceiverFilterer{contract: contract}, nil +} + +// bindITeleporterReceiver binds a generic wrapper to an already deployed contract. +func bindITeleporterReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITeleporterReceiverMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterReceiver *ITeleporterReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterReceiver.Contract.ITeleporterReceiverCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITeleporterReceiver *ITeleporterReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITeleporterReceiver.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.contract.Transact(opts, method, params...) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ITeleporterReceiver *ITeleporterReceiverTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ITeleporterReceiver.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ITeleporterReceiver *ITeleporterReceiverSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ITeleporterReceiver *ITeleporterReceiverTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. +var IWarpMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWarpMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use IWarpMessengerMetaData.ABI instead. +var IWarpMessengerABI = IWarpMessengerMetaData.ABI + +// IWarpMessenger is an auto generated Go binding around an Ethereum contract. +type IWarpMessenger struct { + IWarpMessengerCaller // Read-only binding to the contract + IWarpMessengerTransactor // Write-only binding to the contract + IWarpMessengerFilterer // Log filterer for contract events +} + +// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWarpMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWarpMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWarpMessengerSession struct { + Contract *IWarpMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWarpMessengerCallerSession struct { + Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWarpMessengerTransactorSession struct { + Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWarpMessengerRaw struct { + Contract *IWarpMessenger // Generic contract binding to access the raw methods on +} + +// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWarpMessengerCallerRaw struct { + Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactorRaw struct { + Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { + contract, err := bindIWarpMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil +} + +// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { + contract, err := bindIWarpMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerCaller{contract: contract}, nil +} + +// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { + contract, err := bindIWarpMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerTransactor{contract: contract}, nil +} + +// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { + contract, err := bindIWarpMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWarpMessengerFilterer{contract: contract}, nil +} + +// bindIWarpMessenger binds a generic wrapper to an already deployed contract. +func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWarpMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) + + outstruct := new(struct { + WarpBlockHash WarpBlockHash + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) + + outstruct := new(struct { + Message WarpMessage + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessageIterator struct { + Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWarpMessengerSendWarpMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWarpMessengerSendWarpMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessage struct { + Sender common.Address + MessageID [32]byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil +} + +// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// InitializableMetaData contains all meta data concerning the Initializable contract. +var InitializableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// InitializableABI is the input ABI used to generate the binding from. +// Deprecated: Use InitializableMetaData.ABI instead. +var InitializableABI = InitializableMetaData.ABI + +// Initializable is an auto generated Go binding around an Ethereum contract. +type Initializable struct { + InitializableCaller // Read-only binding to the contract + InitializableTransactor // Write-only binding to the contract + InitializableFilterer // Log filterer for contract events +} + +// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. +type InitializableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type InitializableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type InitializableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type InitializableSession struct { + Contract *Initializable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type InitializableCallerSession struct { + Contract *InitializableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type InitializableTransactorSession struct { + Contract *InitializableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. +type InitializableRaw struct { + Contract *Initializable // Generic contract binding to access the raw methods on +} + +// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type InitializableCallerRaw struct { + Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on +} + +// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type InitializableTransactorRaw struct { + Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. +func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { + contract, err := bindInitializable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil +} + +// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { + contract, err := bindInitializable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &InitializableCaller{contract: contract}, nil +} + +// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { + contract, err := bindInitializable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &InitializableTransactor{contract: contract}, nil +} + +// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. +func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { + contract, err := bindInitializable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &InitializableFilterer{contract: contract}, nil +} + +// bindInitializable binds a generic wrapper to an already deployed contract. +func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := InitializableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transact(opts, method, params...) +} + +// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. +type InitializableInitializedIterator struct { + Event *InitializableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *InitializableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *InitializableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *InitializableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// InitializableInitialized represents a Initialized event raised by the Initializable contract. +type InitializableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { + + logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { + + logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OwnableUpgradeableMetaData contains all meta data concerning the OwnableUpgradeable contract. +var OwnableUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// OwnableUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableUpgradeableMetaData.ABI instead. +var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI + +// OwnableUpgradeable is an auto generated Go binding around an Ethereum contract. +type OwnableUpgradeable struct { + OwnableUpgradeableCaller // Read-only binding to the contract + OwnableUpgradeableTransactor // Write-only binding to the contract + OwnableUpgradeableFilterer // Log filterer for contract events +} + +// OwnableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableUpgradeableSession struct { + Contract *OwnableUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableUpgradeableCallerSession struct { + Contract *OwnableUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableUpgradeableTransactorSession struct { + Contract *OwnableUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableUpgradeableRaw struct { + Contract *OwnableUpgradeable // Generic contract binding to access the raw methods on +} + +// OwnableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableUpgradeableCallerRaw struct { + Contract *OwnableUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableUpgradeableTransactorRaw struct { + Contract *OwnableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnableUpgradeable creates a new instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeable(address common.Address, backend bind.ContractBackend) (*OwnableUpgradeable, error) { + contract, err := bindOwnableUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &OwnableUpgradeable{OwnableUpgradeableCaller: OwnableUpgradeableCaller{contract: contract}, OwnableUpgradeableTransactor: OwnableUpgradeableTransactor{contract: contract}, OwnableUpgradeableFilterer: OwnableUpgradeableFilterer{contract: contract}}, nil +} + +// NewOwnableUpgradeableCaller creates a new read-only instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*OwnableUpgradeableCaller, error) { + contract, err := bindOwnableUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableUpgradeableCaller{contract: contract}, nil +} + +// NewOwnableUpgradeableTransactor creates a new write-only instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableUpgradeableTransactor, error) { + contract, err := bindOwnableUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableUpgradeableTransactor{contract: contract}, nil +} + +// NewOwnableUpgradeableFilterer creates a new log filterer instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableUpgradeableFilterer, error) { + contract, err := bindOwnableUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableUpgradeableFilterer{contract: contract}, nil +} + +// bindOwnableUpgradeable binds a generic wrapper to an already deployed contract. +func bindOwnableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OwnableUpgradeable.Contract.OwnableUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OwnableUpgradeable *OwnableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OwnableUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableSession) Owner() (common.Address, error) { + return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableCallerSession) Owner() (common.Address, error) { + return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) +} + +// OwnableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OwnableUpgradeable contract. +type OwnableUpgradeableInitializedIterator struct { + Event *OwnableUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableUpgradeableInitialized represents a Initialized event raised by the OwnableUpgradeable contract. +type OwnableUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { + + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &OwnableUpgradeableInitializedIterator{contract: _OwnableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableUpgradeableInitialized) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log types.Log) (*OwnableUpgradeableInitialized, error) { + event := new(OwnableUpgradeableInitialized) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OwnableUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OwnableUpgradeable contract. +type OwnableUpgradeableOwnershipTransferredIterator struct { + Event *OwnableUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the OwnableUpgradeable contract. +type OwnableUpgradeableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OwnableUpgradeableOwnershipTransferredIterator{contract: _OwnableUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableUpgradeableOwnershipTransferred) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableUpgradeableOwnershipTransferred, error) { + event := new(OwnableUpgradeableOwnershipTransferred) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. +var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. +var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI + +// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeable struct { + ReentrancyGuardUpgradeableCaller // Read-only binding to the contract + ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract + ReentrancyGuardUpgradeableFilterer // Log filterer for contract events +} + +// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardUpgradeableSession struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardUpgradeableCallerSession struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardUpgradeableTransactorSession struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableRaw struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCallerRaw struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactorRaw struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { + contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { + contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil +} + +// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. +func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitializedIterator struct { + Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReentrancyGuardUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReentrancyGuardUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. +var SafeERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e48ef8e82df1e4ab3740b521e288cd30c92658d43bcfb55e7af86b1ffa4abbe764736f6c63430008190033", +} + +// SafeERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20MetaData.ABI instead. +var SafeERC20ABI = SafeERC20MetaData.ABI + +// SafeERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20MetaData.Bin instead. +var SafeERC20Bin = SafeERC20MetaData.Bin + +// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. +func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// SafeERC20 is an auto generated Go binding around an Ethereum contract. +type SafeERC20 struct { + SafeERC20Caller // Read-only binding to the contract + SafeERC20Transactor // Write-only binding to the contract + SafeERC20Filterer // Log filterer for contract events +} + +// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20Session struct { + Contract *SafeERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20CallerSession struct { + Contract *SafeERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransactorSession struct { + Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20Raw struct { + Contract *SafeERC20 // Generic contract binding to access the raw methods on +} + +// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20CallerRaw struct { + Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransactorRaw struct { + Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { + contract, err := bindSafeERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { + contract, err := bindSafeERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20Caller{contract: contract}, nil +} + +// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { + contract, err := bindSafeERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20Transactor{contract: contract}, nil +} + +// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { + contract, err := bindSafeERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20Filterer{contract: contract}, nil +} + +// bindSafeERC20 binds a generic wrapper to an already deployed contract. +func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transact(opts, method, params...) +} + +// SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. +var SafeERC20TransferFromMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dea7663bfe09d842906ec54ac6ab1cd0020f81907f7f5a8537ec9ddc8aa8260864736f6c63430008190033", +} + +// SafeERC20TransferFromABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20TransferFromMetaData.ABI instead. +var SafeERC20TransferFromABI = SafeERC20TransferFromMetaData.ABI + +// SafeERC20TransferFromBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20TransferFromMetaData.Bin instead. +var SafeERC20TransferFromBin = SafeERC20TransferFromMetaData.Bin + +// DeploySafeERC20TransferFrom deploys a new Ethereum contract, binding an instance of SafeERC20TransferFrom to it. +func DeploySafeERC20TransferFrom(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20TransferFrom, error) { + parsed, err := SafeERC20TransferFromMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20TransferFromBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil +} + +// SafeERC20TransferFrom is an auto generated Go binding around an Ethereum contract. +type SafeERC20TransferFrom struct { + SafeERC20TransferFromCaller // Read-only binding to the contract + SafeERC20TransferFromTransactor // Write-only binding to the contract + SafeERC20TransferFromFilterer // Log filterer for contract events +} + +// SafeERC20TransferFromCaller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20TransferFromCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20TransferFromTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20TransferFromFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20TransferFromSession struct { + Contract *SafeERC20TransferFrom // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20TransferFromCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20TransferFromCallerSession struct { + Contract *SafeERC20TransferFromCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransferFromTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransferFromTransactorSession struct { + Contract *SafeERC20TransferFromTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20TransferFromRaw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20TransferFromRaw struct { + Contract *SafeERC20TransferFrom // Generic contract binding to access the raw methods on +} + +// SafeERC20TransferFromCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20TransferFromCallerRaw struct { + Contract *SafeERC20TransferFromCaller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransferFromTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransferFromTransactorRaw struct { + Contract *SafeERC20TransferFromTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20TransferFrom creates a new instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFrom(address common.Address, backend bind.ContractBackend) (*SafeERC20TransferFrom, error) { + contract, err := bindSafeERC20TransferFrom(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil +} + +// NewSafeERC20TransferFromCaller creates a new read-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromCaller(address common.Address, caller bind.ContractCaller) (*SafeERC20TransferFromCaller, error) { + contract, err := bindSafeERC20TransferFrom(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromCaller{contract: contract}, nil +} + +// NewSafeERC20TransferFromTransactor creates a new write-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20TransferFromTransactor, error) { + contract, err := bindSafeERC20TransferFrom(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromTransactor{contract: contract}, nil +} + +// NewSafeERC20TransferFromFilterer creates a new log filterer instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20TransferFromFilterer, error) { + contract, err := bindSafeERC20TransferFrom(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromFilterer{contract: contract}, nil +} + +// bindSafeERC20TransferFrom binds a generic wrapper to an already deployed contract. +func bindSafeERC20TransferFrom(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20TransferFromMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20TransferFrom *SafeERC20TransferFromCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20TransferFrom.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.contract.Transact(opts, method, params...) +} + +// TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. +var TeleporterRegistryMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a060405234801561000f575f80fd5b50604051610fca380380610fca83398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610a9f61052b5f395f818161014301526102580152610a9f5ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f8083604001518060200190518101906103679190610988565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a01565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a01565b5f546106656101f482610a4a565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b808286018386015e5f8282860101525082604083015281955061097b81880161088b565b9450505050509250929050565b5f80828403606081121561099a575f80fd5b60408112156109a7575f80fd5b506040516040810181811067ffffffffffffffff821117156109cb576109cb61081d565b6040528351815260208401516109e0816107eb565b602082015260408401519092506109f6816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220fe036b8dd4c0898f583fa51960ec46bcf6307508fd784944cdf1ccf51969ca8564736f6c63430008190033", +} + +// TeleporterRegistryABI is the input ABI used to generate the binding from. +// Deprecated: Use TeleporterRegistryMetaData.ABI instead. +var TeleporterRegistryABI = TeleporterRegistryMetaData.ABI + +// TeleporterRegistryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use TeleporterRegistryMetaData.Bin instead. +var TeleporterRegistryBin = TeleporterRegistryMetaData.Bin + +// DeployTeleporterRegistry deploys a new Ethereum contract, binding an instance of TeleporterRegistry to it. +func DeployTeleporterRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, initialEntries []ProtocolRegistryEntry) (common.Address, *types.Transaction, *TeleporterRegistry, error) { + parsed, err := TeleporterRegistryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TeleporterRegistryBin), backend, initialEntries) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &TeleporterRegistry{TeleporterRegistryCaller: TeleporterRegistryCaller{contract: contract}, TeleporterRegistryTransactor: TeleporterRegistryTransactor{contract: contract}, TeleporterRegistryFilterer: TeleporterRegistryFilterer{contract: contract}}, nil +} + +// TeleporterRegistry is an auto generated Go binding around an Ethereum contract. +type TeleporterRegistry struct { + TeleporterRegistryCaller // Read-only binding to the contract + TeleporterRegistryTransactor // Write-only binding to the contract + TeleporterRegistryFilterer // Log filterer for contract events +} + +// TeleporterRegistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type TeleporterRegistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TeleporterRegistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TeleporterRegistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TeleporterRegistrySession struct { + Contract *TeleporterRegistry // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TeleporterRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TeleporterRegistryCallerSession struct { + Contract *TeleporterRegistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TeleporterRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TeleporterRegistryTransactorSession struct { + Contract *TeleporterRegistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TeleporterRegistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type TeleporterRegistryRaw struct { + Contract *TeleporterRegistry // Generic contract binding to access the raw methods on +} + +// TeleporterRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TeleporterRegistryCallerRaw struct { + Contract *TeleporterRegistryCaller // Generic read-only contract binding to access the raw methods on +} + +// TeleporterRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TeleporterRegistryTransactorRaw struct { + Contract *TeleporterRegistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTeleporterRegistry creates a new instance of TeleporterRegistry, bound to a specific deployed contract. +func NewTeleporterRegistry(address common.Address, backend bind.ContractBackend) (*TeleporterRegistry, error) { + contract, err := bindTeleporterRegistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TeleporterRegistry{TeleporterRegistryCaller: TeleporterRegistryCaller{contract: contract}, TeleporterRegistryTransactor: TeleporterRegistryTransactor{contract: contract}, TeleporterRegistryFilterer: TeleporterRegistryFilterer{contract: contract}}, nil +} + +// NewTeleporterRegistryCaller creates a new read-only instance of TeleporterRegistry, bound to a specific deployed contract. +func NewTeleporterRegistryCaller(address common.Address, caller bind.ContractCaller) (*TeleporterRegistryCaller, error) { + contract, err := bindTeleporterRegistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TeleporterRegistryCaller{contract: contract}, nil +} + +// NewTeleporterRegistryTransactor creates a new write-only instance of TeleporterRegistry, bound to a specific deployed contract. +func NewTeleporterRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*TeleporterRegistryTransactor, error) { + contract, err := bindTeleporterRegistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TeleporterRegistryTransactor{contract: contract}, nil +} + +// NewTeleporterRegistryFilterer creates a new log filterer instance of TeleporterRegistry, bound to a specific deployed contract. +func NewTeleporterRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*TeleporterRegistryFilterer, error) { + contract, err := bindTeleporterRegistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TeleporterRegistryFilterer{contract: contract}, nil +} + +// bindTeleporterRegistry binds a generic wrapper to an already deployed contract. +func bindTeleporterRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TeleporterRegistryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TeleporterRegistry *TeleporterRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TeleporterRegistry.Contract.TeleporterRegistryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TeleporterRegistry *TeleporterRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TeleporterRegistry.Contract.TeleporterRegistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TeleporterRegistry *TeleporterRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TeleporterRegistry.Contract.TeleporterRegistryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TeleporterRegistry *TeleporterRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TeleporterRegistry.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TeleporterRegistry *TeleporterRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TeleporterRegistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TeleporterRegistry *TeleporterRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TeleporterRegistry.Contract.contract.Transact(opts, method, params...) +} + +// MAXVERSIONINCREMENT is a free data retrieval call binding the contract method 0xac473ac3. +// +// Solidity: function MAX_VERSION_INCREMENT() view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistryCaller) MAXVERSIONINCREMENT(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "MAX_VERSION_INCREMENT") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXVERSIONINCREMENT is a free data retrieval call binding the contract method 0xac473ac3. +// +// Solidity: function MAX_VERSION_INCREMENT() view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistrySession) MAXVERSIONINCREMENT() (*big.Int, error) { + return _TeleporterRegistry.Contract.MAXVERSIONINCREMENT(&_TeleporterRegistry.CallOpts) +} + +// MAXVERSIONINCREMENT is a free data retrieval call binding the contract method 0xac473ac3. +// +// Solidity: function MAX_VERSION_INCREMENT() view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) MAXVERSIONINCREMENT() (*big.Int, error) { + return _TeleporterRegistry.Contract.MAXVERSIONINCREMENT(&_TeleporterRegistry.CallOpts) +} + +// VALIDATORSSOURCEADDRESS is a free data retrieval call binding the contract method 0x0731775d. +// +// Solidity: function VALIDATORS_SOURCE_ADDRESS() view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCaller) VALIDATORSSOURCEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "VALIDATORS_SOURCE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VALIDATORSSOURCEADDRESS is a free data retrieval call binding the contract method 0x0731775d. +// +// Solidity: function VALIDATORS_SOURCE_ADDRESS() view returns(address) +func (_TeleporterRegistry *TeleporterRegistrySession) VALIDATORSSOURCEADDRESS() (common.Address, error) { + return _TeleporterRegistry.Contract.VALIDATORSSOURCEADDRESS(&_TeleporterRegistry.CallOpts) +} + +// VALIDATORSSOURCEADDRESS is a free data retrieval call binding the contract method 0x0731775d. +// +// Solidity: function VALIDATORS_SOURCE_ADDRESS() view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) VALIDATORSSOURCEADDRESS() (common.Address, error) { + return _TeleporterRegistry.Contract.VALIDATORSSOURCEADDRESS(&_TeleporterRegistry.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_TeleporterRegistry *TeleporterRegistrySession) WARPMESSENGER() (common.Address, error) { + return _TeleporterRegistry.Contract.WARPMESSENGER(&_TeleporterRegistry.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) WARPMESSENGER() (common.Address, error) { + return _TeleporterRegistry.Contract.WARPMESSENGER(&_TeleporterRegistry.CallOpts) +} + +// BlockchainID is a free data retrieval call binding the contract method 0xd127dc9b. +// +// Solidity: function blockchainID() view returns(bytes32) +func (_TeleporterRegistry *TeleporterRegistryCaller) BlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "blockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// BlockchainID is a free data retrieval call binding the contract method 0xd127dc9b. +// +// Solidity: function blockchainID() view returns(bytes32) +func (_TeleporterRegistry *TeleporterRegistrySession) BlockchainID() ([32]byte, error) { + return _TeleporterRegistry.Contract.BlockchainID(&_TeleporterRegistry.CallOpts) +} + +// BlockchainID is a free data retrieval call binding the contract method 0xd127dc9b. +// +// Solidity: function blockchainID() view returns(bytes32) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) BlockchainID() ([32]byte, error) { + return _TeleporterRegistry.Contract.BlockchainID(&_TeleporterRegistry.CallOpts) +} + +// GetAddressFromVersion is a free data retrieval call binding the contract method 0x46f9ef49. +// +// Solidity: function getAddressFromVersion(uint256 version) view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCaller) GetAddressFromVersion(opts *bind.CallOpts, version *big.Int) (common.Address, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "getAddressFromVersion", version) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetAddressFromVersion is a free data retrieval call binding the contract method 0x46f9ef49. +// +// Solidity: function getAddressFromVersion(uint256 version) view returns(address) +func (_TeleporterRegistry *TeleporterRegistrySession) GetAddressFromVersion(version *big.Int) (common.Address, error) { + return _TeleporterRegistry.Contract.GetAddressFromVersion(&_TeleporterRegistry.CallOpts, version) +} + +// GetAddressFromVersion is a free data retrieval call binding the contract method 0x46f9ef49. +// +// Solidity: function getAddressFromVersion(uint256 version) view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetAddressFromVersion(version *big.Int) (common.Address, error) { + return _TeleporterRegistry.Contract.GetAddressFromVersion(&_TeleporterRegistry.CallOpts, version) +} + +// GetLatestTeleporter is a free data retrieval call binding the contract method 0xd820e64f. +// +// Solidity: function getLatestTeleporter() view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCaller) GetLatestTeleporter(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "getLatestTeleporter") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetLatestTeleporter is a free data retrieval call binding the contract method 0xd820e64f. +// +// Solidity: function getLatestTeleporter() view returns(address) +func (_TeleporterRegistry *TeleporterRegistrySession) GetLatestTeleporter() (common.Address, error) { + return _TeleporterRegistry.Contract.GetLatestTeleporter(&_TeleporterRegistry.CallOpts) +} + +// GetLatestTeleporter is a free data retrieval call binding the contract method 0xd820e64f. +// +// Solidity: function getLatestTeleporter() view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetLatestTeleporter() (common.Address, error) { + return _TeleporterRegistry.Contract.GetLatestTeleporter(&_TeleporterRegistry.CallOpts) +} + +// GetTeleporterFromVersion is a free data retrieval call binding the contract method 0x215abce9. +// +// Solidity: function getTeleporterFromVersion(uint256 version) view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCaller) GetTeleporterFromVersion(opts *bind.CallOpts, version *big.Int) (common.Address, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "getTeleporterFromVersion", version) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetTeleporterFromVersion is a free data retrieval call binding the contract method 0x215abce9. +// +// Solidity: function getTeleporterFromVersion(uint256 version) view returns(address) +func (_TeleporterRegistry *TeleporterRegistrySession) GetTeleporterFromVersion(version *big.Int) (common.Address, error) { + return _TeleporterRegistry.Contract.GetTeleporterFromVersion(&_TeleporterRegistry.CallOpts, version) +} + +// GetTeleporterFromVersion is a free data retrieval call binding the contract method 0x215abce9. +// +// Solidity: function getTeleporterFromVersion(uint256 version) view returns(address) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetTeleporterFromVersion(version *big.Int) (common.Address, error) { + return _TeleporterRegistry.Contract.GetTeleporterFromVersion(&_TeleporterRegistry.CallOpts, version) +} + +// GetVersionFromAddress is a free data retrieval call binding the contract method 0x4c1f08ce. +// +// Solidity: function getVersionFromAddress(address protocolAddress) view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistryCaller) GetVersionFromAddress(opts *bind.CallOpts, protocolAddress common.Address) (*big.Int, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "getVersionFromAddress", protocolAddress) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetVersionFromAddress is a free data retrieval call binding the contract method 0x4c1f08ce. +// +// Solidity: function getVersionFromAddress(address protocolAddress) view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistrySession) GetVersionFromAddress(protocolAddress common.Address) (*big.Int, error) { + return _TeleporterRegistry.Contract.GetVersionFromAddress(&_TeleporterRegistry.CallOpts, protocolAddress) +} + +// GetVersionFromAddress is a free data retrieval call binding the contract method 0x4c1f08ce. +// +// Solidity: function getVersionFromAddress(address protocolAddress) view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetVersionFromAddress(protocolAddress common.Address) (*big.Int, error) { + return _TeleporterRegistry.Contract.GetVersionFromAddress(&_TeleporterRegistry.CallOpts, protocolAddress) +} + +// LatestVersion is a free data retrieval call binding the contract method 0xc07f47d4. +// +// Solidity: function latestVersion() view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistryCaller) LatestVersion(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TeleporterRegistry.contract.Call(opts, &out, "latestVersion") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// LatestVersion is a free data retrieval call binding the contract method 0xc07f47d4. +// +// Solidity: function latestVersion() view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistrySession) LatestVersion() (*big.Int, error) { + return _TeleporterRegistry.Contract.LatestVersion(&_TeleporterRegistry.CallOpts) +} + +// LatestVersion is a free data retrieval call binding the contract method 0xc07f47d4. +// +// Solidity: function latestVersion() view returns(uint256) +func (_TeleporterRegistry *TeleporterRegistryCallerSession) LatestVersion() (*big.Int, error) { + return _TeleporterRegistry.Contract.LatestVersion(&_TeleporterRegistry.CallOpts) +} + +// AddProtocolVersion is a paid mutator transaction binding the contract method 0x41f34ed9. +// +// Solidity: function addProtocolVersion(uint32 messageIndex) returns() +func (_TeleporterRegistry *TeleporterRegistryTransactor) AddProtocolVersion(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _TeleporterRegistry.contract.Transact(opts, "addProtocolVersion", messageIndex) +} + +// AddProtocolVersion is a paid mutator transaction binding the contract method 0x41f34ed9. +// +// Solidity: function addProtocolVersion(uint32 messageIndex) returns() +func (_TeleporterRegistry *TeleporterRegistrySession) AddProtocolVersion(messageIndex uint32) (*types.Transaction, error) { + return _TeleporterRegistry.Contract.AddProtocolVersion(&_TeleporterRegistry.TransactOpts, messageIndex) +} + +// AddProtocolVersion is a paid mutator transaction binding the contract method 0x41f34ed9. +// +// Solidity: function addProtocolVersion(uint32 messageIndex) returns() +func (_TeleporterRegistry *TeleporterRegistryTransactorSession) AddProtocolVersion(messageIndex uint32) (*types.Transaction, error) { + return _TeleporterRegistry.Contract.AddProtocolVersion(&_TeleporterRegistry.TransactOpts, messageIndex) +} + +// TeleporterRegistryAddProtocolVersionIterator is returned from FilterAddProtocolVersion and is used to iterate over the raw logs and unpacked data for AddProtocolVersion events raised by the TeleporterRegistry contract. +type TeleporterRegistryAddProtocolVersionIterator struct { + Event *TeleporterRegistryAddProtocolVersion // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryAddProtocolVersionIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAddProtocolVersion) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAddProtocolVersion) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryAddProtocolVersionIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryAddProtocolVersionIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryAddProtocolVersion represents a AddProtocolVersion event raised by the TeleporterRegistry contract. +type TeleporterRegistryAddProtocolVersion struct { + Version *big.Int + ProtocolAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddProtocolVersion is a free log retrieval operation binding the contract event 0xa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a. +// +// Solidity: event AddProtocolVersion(uint256 indexed version, address indexed protocolAddress) +func (_TeleporterRegistry *TeleporterRegistryFilterer) FilterAddProtocolVersion(opts *bind.FilterOpts, version []*big.Int, protocolAddress []common.Address) (*TeleporterRegistryAddProtocolVersionIterator, error) { + + var versionRule []interface{} + for _, versionItem := range version { + versionRule = append(versionRule, versionItem) + } + var protocolAddressRule []interface{} + for _, protocolAddressItem := range protocolAddress { + protocolAddressRule = append(protocolAddressRule, protocolAddressItem) + } + + logs, sub, err := _TeleporterRegistry.contract.FilterLogs(opts, "AddProtocolVersion", versionRule, protocolAddressRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryAddProtocolVersionIterator{contract: _TeleporterRegistry.contract, event: "AddProtocolVersion", logs: logs, sub: sub}, nil +} + +// WatchAddProtocolVersion is a free log subscription operation binding the contract event 0xa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a. +// +// Solidity: event AddProtocolVersion(uint256 indexed version, address indexed protocolAddress) +func (_TeleporterRegistry *TeleporterRegistryFilterer) WatchAddProtocolVersion(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAddProtocolVersion, version []*big.Int, protocolAddress []common.Address) (event.Subscription, error) { + + var versionRule []interface{} + for _, versionItem := range version { + versionRule = append(versionRule, versionItem) + } + var protocolAddressRule []interface{} + for _, protocolAddressItem := range protocolAddress { + protocolAddressRule = append(protocolAddressRule, protocolAddressItem) + } + + logs, sub, err := _TeleporterRegistry.contract.WatchLogs(opts, "AddProtocolVersion", versionRule, protocolAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryAddProtocolVersion) + if err := _TeleporterRegistry.contract.UnpackLog(event, "AddProtocolVersion", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddProtocolVersion is a log parse operation binding the contract event 0xa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a. +// +// Solidity: event AddProtocolVersion(uint256 indexed version, address indexed protocolAddress) +func (_TeleporterRegistry *TeleporterRegistryFilterer) ParseAddProtocolVersion(log types.Log) (*TeleporterRegistryAddProtocolVersion, error) { + event := new(TeleporterRegistryAddProtocolVersion) + if err := _TeleporterRegistry.contract.UnpackLog(event, "AddProtocolVersion", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryLatestVersionUpdatedIterator is returned from FilterLatestVersionUpdated and is used to iterate over the raw logs and unpacked data for LatestVersionUpdated events raised by the TeleporterRegistry contract. +type TeleporterRegistryLatestVersionUpdatedIterator struct { + Event *TeleporterRegistryLatestVersionUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryLatestVersionUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryLatestVersionUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryLatestVersionUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryLatestVersionUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryLatestVersionUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryLatestVersionUpdated represents a LatestVersionUpdated event raised by the TeleporterRegistry contract. +type TeleporterRegistryLatestVersionUpdated struct { + OldVersion *big.Int + NewVersion *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLatestVersionUpdated is a free log retrieval operation binding the contract event 0x30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b0. +// +// Solidity: event LatestVersionUpdated(uint256 indexed oldVersion, uint256 indexed newVersion) +func (_TeleporterRegistry *TeleporterRegistryFilterer) FilterLatestVersionUpdated(opts *bind.FilterOpts, oldVersion []*big.Int, newVersion []*big.Int) (*TeleporterRegistryLatestVersionUpdatedIterator, error) { + + var oldVersionRule []interface{} + for _, oldVersionItem := range oldVersion { + oldVersionRule = append(oldVersionRule, oldVersionItem) + } + var newVersionRule []interface{} + for _, newVersionItem := range newVersion { + newVersionRule = append(newVersionRule, newVersionItem) + } + + logs, sub, err := _TeleporterRegistry.contract.FilterLogs(opts, "LatestVersionUpdated", oldVersionRule, newVersionRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryLatestVersionUpdatedIterator{contract: _TeleporterRegistry.contract, event: "LatestVersionUpdated", logs: logs, sub: sub}, nil +} + +// WatchLatestVersionUpdated is a free log subscription operation binding the contract event 0x30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b0. +// +// Solidity: event LatestVersionUpdated(uint256 indexed oldVersion, uint256 indexed newVersion) +func (_TeleporterRegistry *TeleporterRegistryFilterer) WatchLatestVersionUpdated(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryLatestVersionUpdated, oldVersion []*big.Int, newVersion []*big.Int) (event.Subscription, error) { + + var oldVersionRule []interface{} + for _, oldVersionItem := range oldVersion { + oldVersionRule = append(oldVersionRule, oldVersionItem) + } + var newVersionRule []interface{} + for _, newVersionItem := range newVersion { + newVersionRule = append(newVersionRule, newVersionItem) + } + + logs, sub, err := _TeleporterRegistry.contract.WatchLogs(opts, "LatestVersionUpdated", oldVersionRule, newVersionRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryLatestVersionUpdated) + if err := _TeleporterRegistry.contract.UnpackLog(event, "LatestVersionUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLatestVersionUpdated is a log parse operation binding the contract event 0x30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b0. +// +// Solidity: event LatestVersionUpdated(uint256 indexed oldVersion, uint256 indexed newVersion) +func (_TeleporterRegistry *TeleporterRegistryFilterer) ParseLatestVersionUpdated(log types.Log) (*TeleporterRegistryLatestVersionUpdated, error) { + event := new(TeleporterRegistryLatestVersionUpdated) + if err := _TeleporterRegistry.contract.UnpackLog(event, "LatestVersionUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryAppUpgradeableMetaData contains all meta data concerning the TeleporterRegistryAppUpgradeable contract. +var TeleporterRegistryAppUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// TeleporterRegistryAppUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use TeleporterRegistryAppUpgradeableMetaData.ABI instead. +var TeleporterRegistryAppUpgradeableABI = TeleporterRegistryAppUpgradeableMetaData.ABI + +// TeleporterRegistryAppUpgradeable is an auto generated Go binding around an Ethereum contract. +type TeleporterRegistryAppUpgradeable struct { + TeleporterRegistryAppUpgradeableCaller // Read-only binding to the contract + TeleporterRegistryAppUpgradeableTransactor // Write-only binding to the contract + TeleporterRegistryAppUpgradeableFilterer // Log filterer for contract events +} + +// TeleporterRegistryAppUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type TeleporterRegistryAppUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryAppUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TeleporterRegistryAppUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryAppUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TeleporterRegistryAppUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryAppUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TeleporterRegistryAppUpgradeableSession struct { + Contract *TeleporterRegistryAppUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TeleporterRegistryAppUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TeleporterRegistryAppUpgradeableCallerSession struct { + Contract *TeleporterRegistryAppUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TeleporterRegistryAppUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TeleporterRegistryAppUpgradeableTransactorSession struct { + Contract *TeleporterRegistryAppUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TeleporterRegistryAppUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type TeleporterRegistryAppUpgradeableRaw struct { + Contract *TeleporterRegistryAppUpgradeable // Generic contract binding to access the raw methods on +} + +// TeleporterRegistryAppUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TeleporterRegistryAppUpgradeableCallerRaw struct { + Contract *TeleporterRegistryAppUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// TeleporterRegistryAppUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TeleporterRegistryAppUpgradeableTransactorRaw struct { + Contract *TeleporterRegistryAppUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTeleporterRegistryAppUpgradeable creates a new instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryAppUpgradeable(address common.Address, backend bind.ContractBackend) (*TeleporterRegistryAppUpgradeable, error) { + contract, err := bindTeleporterRegistryAppUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeable{TeleporterRegistryAppUpgradeableCaller: TeleporterRegistryAppUpgradeableCaller{contract: contract}, TeleporterRegistryAppUpgradeableTransactor: TeleporterRegistryAppUpgradeableTransactor{contract: contract}, TeleporterRegistryAppUpgradeableFilterer: TeleporterRegistryAppUpgradeableFilterer{contract: contract}}, nil +} + +// NewTeleporterRegistryAppUpgradeableCaller creates a new read-only instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryAppUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*TeleporterRegistryAppUpgradeableCaller, error) { + contract, err := bindTeleporterRegistryAppUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeableCaller{contract: contract}, nil +} + +// NewTeleporterRegistryAppUpgradeableTransactor creates a new write-only instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryAppUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*TeleporterRegistryAppUpgradeableTransactor, error) { + contract, err := bindTeleporterRegistryAppUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeableTransactor{contract: contract}, nil +} + +// NewTeleporterRegistryAppUpgradeableFilterer creates a new log filterer instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryAppUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*TeleporterRegistryAppUpgradeableFilterer, error) { + contract, err := bindTeleporterRegistryAppUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeableFilterer{contract: contract}, nil +} + +// bindTeleporterRegistryAppUpgradeable binds a generic wrapper to an already deployed contract. +func bindTeleporterRegistryAppUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TeleporterRegistryAppUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TeleporterRegistryAppUpgradeable.Contract.TeleporterRegistryAppUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.TeleporterRegistryAppUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.TeleporterRegistryAppUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TeleporterRegistryAppUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. +// +// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCaller) TELEPORTERREGISTRYAPPSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TeleporterRegistryAppUpgradeable.contract.Call(opts, &out, "TELEPORTER_REGISTRY_APP_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. +// +// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { + return _TeleporterRegistryAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryAppUpgradeable.CallOpts) +} + +// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. +// +// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { + return _TeleporterRegistryAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryAppUpgradeable.CallOpts) +} + +// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. +// +// Solidity: function getMinTeleporterVersion() view returns(uint256) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCaller) GetMinTeleporterVersion(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TeleporterRegistryAppUpgradeable.contract.Call(opts, &out, "getMinTeleporterVersion") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. +// +// Solidity: function getMinTeleporterVersion() view returns(uint256) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) GetMinTeleporterVersion() (*big.Int, error) { + return _TeleporterRegistryAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.CallOpts) +} + +// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. +// +// Solidity: function getMinTeleporterVersion() view returns(uint256) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerSession) GetMinTeleporterVersion() (*big.Int, error) { + return _TeleporterRegistryAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.CallOpts) +} + +// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. +// +// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCaller) IsTeleporterAddressPaused(opts *bind.CallOpts, teleporterAddress common.Address) (bool, error) { + var out []interface{} + err := _TeleporterRegistryAppUpgradeable.contract.Call(opts, &out, "isTeleporterAddressPaused", teleporterAddress) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. +// +// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { + return _TeleporterRegistryAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryAppUpgradeable.CallOpts, teleporterAddress) +} + +// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. +// +// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { + return _TeleporterRegistryAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryAppUpgradeable.CallOpts, teleporterAddress) +} + +// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. +// +// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) PauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "pauseTeleporterAddress", teleporterAddress) +} + +// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. +// +// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) +} + +// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. +// +// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. +// +// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) UnpauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "unpauseTeleporterAddress", teleporterAddress) +} + +// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. +// +// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) +} + +// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. +// +// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) +} + +// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. +// +// Solidity: function updateMinTeleporterVersion(uint256 version) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) UpdateMinTeleporterVersion(opts *bind.TransactOpts, version *big.Int) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "updateMinTeleporterVersion", version) +} + +// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. +// +// Solidity: function updateMinTeleporterVersion(uint256 version) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.TransactOpts, version) +} + +// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. +// +// Solidity: function updateMinTeleporterVersion(uint256 version) returns() +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { + return _TeleporterRegistryAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.TransactOpts, version) +} + +// TeleporterRegistryAppUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableInitializedIterator struct { + Event *TeleporterRegistryAppUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryAppUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryAppUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryAppUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryAppUpgradeableInitialized represents a Initialized event raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*TeleporterRegistryAppUpgradeableInitializedIterator, error) { + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeableInitializedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryAppUpgradeableInitialized) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseInitialized(log types.Log) (*TeleporterRegistryAppUpgradeableInitialized, error) { + event := new(TeleporterRegistryAppUpgradeableInitialized) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator is returned from FilterMinTeleporterVersionUpdated and is used to iterate over the raw logs and unpacked data for MinTeleporterVersionUpdated events raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator struct { + Event *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated represents a MinTeleporterVersionUpdated event raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated struct { + OldMinTeleporterVersion *big.Int + NewMinTeleporterVersion *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinTeleporterVersionUpdated is a free log retrieval operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. +// +// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterMinTeleporterVersionUpdated(opts *bind.FilterOpts, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (*TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator, error) { + + var oldMinTeleporterVersionRule []interface{} + for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { + oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) + } + var newMinTeleporterVersionRule []interface{} + for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { + newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) + } + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "MinTeleporterVersionUpdated", logs: logs, sub: sub}, nil +} + +// WatchMinTeleporterVersionUpdated is a free log subscription operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. +// +// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchMinTeleporterVersionUpdated(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (event.Subscription, error) { + + var oldMinTeleporterVersionRule []interface{} + for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { + oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) + } + var newMinTeleporterVersionRule []interface{} + for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { + newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) + } + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinTeleporterVersionUpdated is a log parse operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. +// +// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseMinTeleporterVersionUpdated(log types.Log) (*TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated, error) { + event := new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator is returned from FilterTeleporterAddressPaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressPaused events raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator struct { + Event *TeleporterRegistryAppUpgradeableTeleporterAddressPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryAppUpgradeableTeleporterAddressPaused represents a TeleporterAddressPaused event raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableTeleporterAddressPaused struct { + TeleporterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTeleporterAddressPaused is a free log retrieval operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. +// +// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterTeleporterAddressPaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "TeleporterAddressPaused", logs: logs, sub: sub}, nil +} + +// WatchTeleporterAddressPaused is a free log subscription operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. +// +// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchTeleporterAddressPaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableTeleporterAddressPaused, teleporterAddress []common.Address) (event.Subscription, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTeleporterAddressPaused is a log parse operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. +// +// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseTeleporterAddressPaused(log types.Log) (*TeleporterRegistryAppUpgradeableTeleporterAddressPaused, error) { + event := new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator is returned from FilterTeleporterAddressUnpaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressUnpaused events raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator struct { + Event *TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused represents a TeleporterAddressUnpaused event raised by the TeleporterRegistryAppUpgradeable contract. +type TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused struct { + TeleporterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTeleporterAddressUnpaused is a free log retrieval operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. +// +// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterTeleporterAddressUnpaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "TeleporterAddressUnpaused", logs: logs, sub: sub}, nil +} + +// WatchTeleporterAddressUnpaused is a free log subscription operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. +// +// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchTeleporterAddressUnpaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused, teleporterAddress []common.Address) (event.Subscription, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTeleporterAddressUnpaused is a log parse operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. +// +// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) +func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseTeleporterAddressUnpaused(log types.Log) (*TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused, error) { + event := new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) + if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryOwnableAppUpgradeableMetaData contains all meta data concerning the TeleporterRegistryOwnableAppUpgradeable contract. +var TeleporterRegistryOwnableAppUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// TeleporterRegistryOwnableAppUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use TeleporterRegistryOwnableAppUpgradeableMetaData.ABI instead. +var TeleporterRegistryOwnableAppUpgradeableABI = TeleporterRegistryOwnableAppUpgradeableMetaData.ABI + +// TeleporterRegistryOwnableAppUpgradeable is an auto generated Go binding around an Ethereum contract. +type TeleporterRegistryOwnableAppUpgradeable struct { + TeleporterRegistryOwnableAppUpgradeableCaller // Read-only binding to the contract + TeleporterRegistryOwnableAppUpgradeableTransactor // Write-only binding to the contract + TeleporterRegistryOwnableAppUpgradeableFilterer // Log filterer for contract events +} + +// TeleporterRegistryOwnableAppUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type TeleporterRegistryOwnableAppUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryOwnableAppUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TeleporterRegistryOwnableAppUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryOwnableAppUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TeleporterRegistryOwnableAppUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TeleporterRegistryOwnableAppUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TeleporterRegistryOwnableAppUpgradeableSession struct { + Contract *TeleporterRegistryOwnableAppUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TeleporterRegistryOwnableAppUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TeleporterRegistryOwnableAppUpgradeableCallerSession struct { + Contract *TeleporterRegistryOwnableAppUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TeleporterRegistryOwnableAppUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TeleporterRegistryOwnableAppUpgradeableTransactorSession struct { + Contract *TeleporterRegistryOwnableAppUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TeleporterRegistryOwnableAppUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type TeleporterRegistryOwnableAppUpgradeableRaw struct { + Contract *TeleporterRegistryOwnableAppUpgradeable // Generic contract binding to access the raw methods on +} + +// TeleporterRegistryOwnableAppUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TeleporterRegistryOwnableAppUpgradeableCallerRaw struct { + Contract *TeleporterRegistryOwnableAppUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// TeleporterRegistryOwnableAppUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TeleporterRegistryOwnableAppUpgradeableTransactorRaw struct { + Contract *TeleporterRegistryOwnableAppUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTeleporterRegistryOwnableAppUpgradeable creates a new instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryOwnableAppUpgradeable(address common.Address, backend bind.ContractBackend) (*TeleporterRegistryOwnableAppUpgradeable, error) { + contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeable{TeleporterRegistryOwnableAppUpgradeableCaller: TeleporterRegistryOwnableAppUpgradeableCaller{contract: contract}, TeleporterRegistryOwnableAppUpgradeableTransactor: TeleporterRegistryOwnableAppUpgradeableTransactor{contract: contract}, TeleporterRegistryOwnableAppUpgradeableFilterer: TeleporterRegistryOwnableAppUpgradeableFilterer{contract: contract}}, nil +} + +// NewTeleporterRegistryOwnableAppUpgradeableCaller creates a new read-only instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryOwnableAppUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*TeleporterRegistryOwnableAppUpgradeableCaller, error) { + contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableCaller{contract: contract}, nil +} + +// NewTeleporterRegistryOwnableAppUpgradeableTransactor creates a new write-only instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryOwnableAppUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*TeleporterRegistryOwnableAppUpgradeableTransactor, error) { + contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableTransactor{contract: contract}, nil +} + +// NewTeleporterRegistryOwnableAppUpgradeableFilterer creates a new log filterer instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. +func NewTeleporterRegistryOwnableAppUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*TeleporterRegistryOwnableAppUpgradeableFilterer, error) { + contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableFilterer{contract: contract}, nil +} + +// bindTeleporterRegistryOwnableAppUpgradeable binds a generic wrapper to an already deployed contract. +func bindTeleporterRegistryOwnableAppUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TeleporterRegistryOwnableAppUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.TeleporterRegistryOwnableAppUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.TeleporterRegistryOwnableAppUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.TeleporterRegistryOwnableAppUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. +// +// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) TELEPORTERREGISTRYAPPSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "TELEPORTER_REGISTRY_APP_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. +// +// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) +} + +// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. +// +// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) +} + +// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. +// +// Solidity: function getMinTeleporterVersion() view returns(uint256) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) GetMinTeleporterVersion(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "getMinTeleporterVersion") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. +// +// Solidity: function getMinTeleporterVersion() view returns(uint256) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) GetMinTeleporterVersion() (*big.Int, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) +} + +// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. +// +// Solidity: function getMinTeleporterVersion() view returns(uint256) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) GetMinTeleporterVersion() (*big.Int, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) +} + +// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. +// +// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) IsTeleporterAddressPaused(opts *bind.CallOpts, teleporterAddress common.Address) (bool, error) { + var out []interface{} + err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "isTeleporterAddressPaused", teleporterAddress) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. +// +// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts, teleporterAddress) +} + +// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. +// +// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts, teleporterAddress) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) Owner() (common.Address, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.Owner(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) Owner() (common.Address, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.Owner(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) +} + +// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. +// +// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) PauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "pauseTeleporterAddress", teleporterAddress) +} + +// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. +// +// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) +} + +// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. +// +// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. +// +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.RenounceOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.RenounceOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.TransferOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.TransferOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, newOwner) +} + +// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. +// +// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) UnpauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "unpauseTeleporterAddress", teleporterAddress) +} + +// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. +// +// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) +} + +// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. +// +// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) +} + +// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. +// +// Solidity: function updateMinTeleporterVersion(uint256 version) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) UpdateMinTeleporterVersion(opts *bind.TransactOpts, version *big.Int) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "updateMinTeleporterVersion", version) +} + +// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. +// +// Solidity: function updateMinTeleporterVersion(uint256 version) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, version) +} + +// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. +// +// Solidity: function updateMinTeleporterVersion(uint256 version) returns() +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { + return _TeleporterRegistryOwnableAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, version) +} + +// TeleporterRegistryOwnableAppUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableInitializedIterator struct { + Event *TeleporterRegistryOwnableAppUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryOwnableAppUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryOwnableAppUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryOwnableAppUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryOwnableAppUpgradeableInitialized represents a Initialized event raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*TeleporterRegistryOwnableAppUpgradeableInitializedIterator, error) { + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableInitializedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryOwnableAppUpgradeableInitialized) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseInitialized(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableInitialized, error) { + event := new(TeleporterRegistryOwnableAppUpgradeableInitialized) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator is returned from FilterMinTeleporterVersionUpdated and is used to iterate over the raw logs and unpacked data for MinTeleporterVersionUpdated events raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator struct { + Event *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated represents a MinTeleporterVersionUpdated event raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated struct { + OldMinTeleporterVersion *big.Int + NewMinTeleporterVersion *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinTeleporterVersionUpdated is a free log retrieval operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. +// +// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterMinTeleporterVersionUpdated(opts *bind.FilterOpts, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (*TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator, error) { + + var oldMinTeleporterVersionRule []interface{} + for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { + oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) + } + var newMinTeleporterVersionRule []interface{} + for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { + newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "MinTeleporterVersionUpdated", logs: logs, sub: sub}, nil +} + +// WatchMinTeleporterVersionUpdated is a free log subscription operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. +// +// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchMinTeleporterVersionUpdated(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (event.Subscription, error) { + + var oldMinTeleporterVersionRule []interface{} + for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { + oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) + } + var newMinTeleporterVersionRule []interface{} + for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { + newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinTeleporterVersionUpdated is a log parse operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. +// +// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseMinTeleporterVersionUpdated(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated, error) { + event := new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator struct { + Event *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred, error) { + event := new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator is returned from FilterTeleporterAddressPaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressPaused events raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator struct { + Event *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused represents a TeleporterAddressPaused event raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused struct { + TeleporterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTeleporterAddressPaused is a free log retrieval operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. +// +// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterTeleporterAddressPaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "TeleporterAddressPaused", logs: logs, sub: sub}, nil +} + +// WatchTeleporterAddressPaused is a free log subscription operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. +// +// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchTeleporterAddressPaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused, teleporterAddress []common.Address) (event.Subscription, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTeleporterAddressPaused is a log parse operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. +// +// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseTeleporterAddressPaused(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused, error) { + event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator is returned from FilterTeleporterAddressUnpaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressUnpaused events raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator struct { + Event *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused represents a TeleporterAddressUnpaused event raised by the TeleporterRegistryOwnableAppUpgradeable contract. +type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused struct { + TeleporterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTeleporterAddressUnpaused is a free log retrieval operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. +// +// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterTeleporterAddressUnpaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return &TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "TeleporterAddressUnpaused", logs: logs, sub: sub}, nil +} + +// WatchTeleporterAddressUnpaused is a free log subscription operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. +// +// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchTeleporterAddressUnpaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused, teleporterAddress []common.Address) (event.Subscription, error) { + + var teleporterAddressRule []interface{} + for _, teleporterAddressItem := range teleporterAddress { + teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) + } + + logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTeleporterAddressUnpaused is a log parse operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. +// +// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) +func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseTeleporterAddressUnpaused(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused, error) { + event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) + if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // TestMessengerMetaData contains all meta data concerning the TestMessenger contract. var TestMessengerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"teleporterRegistryAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"teleporterManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"minTeleporterVersion\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentMessage\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTeleporterVersion\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isTeleporterAddressPaused\",\"inputs\":[{\"name\":\"teleporterAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauseTeleporterAddress\",\"inputs\":[{\"name\":\"teleporterAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveTeleporterMessage\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"originSenderAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendMessage\",\"inputs\":[{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"feeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpauseTeleporterAddress\",\"inputs\":[{\"name\":\"teleporterAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateMinTeleporterVersion\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinTeleporterVersionUpdated\",\"inputs\":[{\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceiveMessage\",\"inputs\":[{\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"originSenderAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SendMessage\",\"inputs\":[{\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"destinationAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"feeTokenAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"feeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"requiredGasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TeleporterAddressPaused\",\"inputs\":[{\"name\":\"teleporterAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TeleporterAddressUnpaused\",\"inputs\":[{\"name\":\"teleporterAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051611fca380380611fca83398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611faa833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611faa83398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b61191f8061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e578063973142971461014b578063b33fead41461016e578063c868efaa1461018f578063d2cc7a70146101a2578063f2fde38b146101aa578063f63d09d7146101bd575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610116575b5f80fd5b6100c86100c33660046112f5565b6101d0565b005b6100c86100d83660046112f5565b6102cf565b6100c86100eb366004611310565b6103bb565b6100c86103cf565b6101006103e2565b60405161010d9190611327565b60405180910390f35b61013d7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0081565b60405190815260200161010d565b61015e6101593660046112f5565b610410565b604051901515815260200161010d565b61018161017c366004611310565b61042d565b60405161010d929190611388565b6100c861019d3660046113f8565b6104ff565b61013d6106b9565b6100c86101b83660046112f5565b6106cd565b61013d6101cb366004611450565b610707565b5f6101d9610850565b90506101e3610874565b6001600160a01b0382166102125760405162461bcd60e51b8152600401610209906114d0565b60405180910390fd5b61021c818361087c565b1561027f5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610209565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f6102d8610850565b90506102e2610874565b6001600160a01b0382166103085760405162461bcd60e51b8152600401610209906114d0565b610312818361087c565b6103705760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610209565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103c3610874565b6103cc816108a0565b50565b6103d7610a41565b6103e05f610a73565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f8061041a610850565b9050610426818461087c565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b03168252600181018054606094869493929084019161046a9061151e565b80601f01602080910402602001604051908101604052809291908181526020018280546104969061151e565b80156104e15780601f106104b8576101008083540402835291602001916104e1565b820191905f5260205f20905b8154815290600101906020018083116104c457829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b610507610ae3565b5f610510610850565b60028101548154919250906001600160a01b0316634c1f08ce336040518263ffffffff1660e01b81526004016105469190611327565b602060405180830381865afa158015610561573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105859190611556565b10156105ec5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610209565b6105f6813361087c565b1561065c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610209565b61069c858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b1a92505050565b506106b360015f805160206118f383398151915255565b50505050565b5f806106c3610850565b6002015492915050565b6106d5610a41565b6001600160a01b0381166106fe575f604051631e4fbdf760e01b81526004016102099190611327565b6103cc81610a73565b5f610710610ae3565b5f8515610724576107218787610bcf565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca8984898989604051610766959493929190611595565b60405180910390a361082c6040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107d3576107d36115c2565b6040519080825280602002602001820160405280156107fc578160200160208202803683370190505b50815260200186866040516020016108159291906115d6565b604051602081830303815290604052815250610d39565b91505061084560015f805160206118f383398151915255565b979650505050505050565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090565b6103e0610a41565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f6108a9610850565b90505f815f015f9054906101000a90046001600160a01b03166001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109219190611556565b6002830154909150818411156109935760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610209565b808411610a085760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610209565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a4a6103e2565b6001600160a01b0316146103e0573360405163118cdaa760e01b81526004016102099190611327565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f805160206118f3833981519152805460011901610b1457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b2f91906115e9565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610b8390826116d1565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bc19190611791565b60405180910390a350505050565b5f80836001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610bfd9190611327565b602060405180830381865afa158015610c18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3c9190611556565b9050610c536001600160a01b038516333086610e54565b6040516370a0823160e01b81525f906001600160a01b038616906370a0823190610c81903090600401611327565b602060405180830381865afa158015610c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc09190611556565b9050818111610d265760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610209565b610d3082826117b7565b95945050505050565b5f80610d43610ebb565b60408401516020015190915015610de8576040830151516001600160a01b0316610dc55760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610209565b604083015160208101519051610de8916001600160a01b03909116908390610faf565b604051630624488560e41b81526001600160a01b03821690636244885090610e1490869060040161180d565b6020604051808303815f875af1158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104269190611556565b6040516001600160a01b0384811660248301528381166044830152606482018390526106b39186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611036565b5f80610ec5610850565b90505f815f015f9054906101000a90046001600160a01b03166001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3d919061188a565b9050610f49828261087c565b1561089a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610209565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015610ffc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110209190611556565b90506106b3848461103185856118a5565b611093565b5f61104a6001600160a01b03841683611122565b905080515f1415801561106e57508080602001905181019061106c91906118b8565b155b1561108e5782604051635274afe760e01b81526004016102099190611327565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526110e4848261112f565b6106b3576040516001600160a01b0384811660248301525f604483015261111891869182169063095ea7b390606401610e89565b6106b38482611036565b606061042683835f6111cc565b5f805f846001600160a01b03168460405161114a91906118d7565b5f604051808303815f865af19150503d805f8114611183576040519150601f19603f3d011682016040523d82523d5f602084013e611188565b606091505b50915091508180156111b25750805115806111b25750808060200190518101906111b291906118b8565b8015610d305750505050506001600160a01b03163b151590565b6060814710156111f1573060405163cd78605960e01b81526004016102099190611327565b5f80856001600160a01b0316848660405161120c91906118d7565b5f6040518083038185875af1925050503d805f8114611246576040519150601f19603f3d011682016040523d82523d5f602084013e61124b565b606091505b509150915061125b868383611265565b9695505050505050565b60608261127a57611275826112b8565b610426565b815115801561129157506001600160a01b0384163b155b156112b15783604051639996b31560e01b81526004016102099190611327565b5080610426565b8051156112c85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103cc575f80fd5b5f60208284031215611305575f80fd5b8135610426816112e1565b5f60208284031215611320575f80fd5b5035919050565b6001600160a01b0391909116815260200190565b5f5b8381101561135557818101518382015260200161133d565b50505f910152565b5f815180845261137481602086016020860161133b565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190525f906113ab9083018461135d565b949350505050565b5f8083601f8401126113c3575f80fd5b50813567ffffffffffffffff8111156113da575f80fd5b6020830191508360208285010111156113f1575f80fd5b9250929050565b5f805f806060858703121561140b575f80fd5b84359350602085013561141d816112e1565b9250604085013567ffffffffffffffff811115611438575f80fd5b611444878288016113b3565b95989497509550505050565b5f805f805f805f60c0888a031215611466575f80fd5b873596506020880135611478816112e1565b95506040880135611488816112e1565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114b1575f80fd5b6114bd8a828b016113b3565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061153257607f821691505b60208210810361155057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611566575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f61084560808301848661156d565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113ab60208301848661156d565b5f602082840312156115f9575f80fd5b815167ffffffffffffffff80821115611610575f80fd5b818401915084601f830112611623575f80fd5b815181811115611635576116356115c2565b604051601f8201601f19908116603f0116810190838211818310171561165d5761165d6115c2565b81604052828152876020848701011115611675575f80fd5b61084583602083016020880161133b565b601f82111561108e57805f5260205f20601f840160051c810160208510156116ab5750805b601f840160051c820191505b818110156116ca575f81556001016116b7565b5050505050565b815167ffffffffffffffff8111156116eb576116eb6115c2565b6116ff816116f9845461151e565b84611686565b602080601f831160018114611732575f841561171b5750858301515b5f19600386901b1c1916600185901b178555611789565b5f85815260208120601f198616915b8281101561176057888601518255948401946001909101908401611741565b508582101561177d57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f610426602083018461135d565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561089a5761089a6117a3565b5f815180845260208085019450602084015f5b838110156118025781516001600160a01b0316875295820195908201906001016117dd565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015261186d6101008401826117ca565b905060a0840151601f198483030160e0850152610d30828261135d565b5f6020828403121561189a575f80fd5b8151610426816112e1565b8082018082111561089a5761089a6117a3565b5f602082840312156118c8575f80fd5b81518015158114610426575f80fd5b5f82516118e881846020870161133b565b919091019291505056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c6343000819000a54656c65706f7274657252656769737472794170703a20696e76616c69642054", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ReceiveMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getCurrentMessage\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b5060405161200938038061200983398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611fe9833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611fe983398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b61195e8061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e5780639731429714610159578063b33fead41461017c578063c868efaa1461019d578063d2cc7a70146101b0578063f2fde38b146101d7578063f63d09d7146101ea575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610137575b5f80fd5b6100c86100c3366004611335565b6101fd565b005b6100c86100d8366004611335565b6102ff565b6100c86100eb366004611350565b6103ee565b6100c8610402565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014b5f8051602061190983398151915281565b60405190815260200161012e565b61016c610167366004611335565b610415565b604051901515815260200161012e565b61018f61018a366004611350565b610435565b60405161012e929190611395565b6100c86101ab366004611405565b610507565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d025461014b565b6100c86101e5366004611335565b6106e5565b61014b6101f836600461145d565b61071f565b5f8051602061190983398151915261021361087b565b6001600160a01b0382166102425760405162461bcd60e51b8152600401610239906114dd565b60405180910390fd5b61024c8183610883565b156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610239565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061190983398151915261031561087b565b6001600160a01b03821661033b5760405162461bcd60e51b8152600401610239906114dd565b6103458183610883565b6103a35760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610239565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103f661087b565b6103ff816108a7565b50565b61040a610a3f565b6104135f610a9a565b565b5f5f8051602061190983398151915261042e8184610883565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104729061152b565b80601f016020809104026020016040519081016040528092919081815260200182805461049e9061152b565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b61050f610b0a565b5f5f8051602061190983398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e9190611563565b10156106055760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610239565b61060f8133610883565b156106755760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610239565b6106b5858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b5492505050565b506106df60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6106ed610a3f565b6001600160a01b03811661071657604051631e4fbdf760e01b81525f6004820152602401610239565b6103ff81610a9a565b5f610728610b0a565b5f851561073c576107398787610c09565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca898489898960405161077e9594939291906115a2565b60405180910390a36108446040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107eb576107eb6115cf565b604051908082528060200260200182016040528015610814578160200160208202803683370190505b508152602001868660405160200161082d9291906115e3565b604051602081830303815290604052815250610d6b565b91505061087060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610413610a3f565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f8051602061190983398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611563565b6002830154909150818411156109915760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610239565b808411610a065760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610239565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a717f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104135760405163118cdaa760e01b8152336004820152602401610239565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b4e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b6991906115f6565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610bbd90826116ec565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bfb91906117ac565b60405180910390a350505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c739190611563565b9050610c8a6001600160a01b038516333086610e86565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf29190611563565b9050818111610d585760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610239565b610d6282826117d2565b95945050505050565b5f80610d75610eed565b60408401516020015190915015610e1a576040830151516001600160a01b0316610df75760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610239565b604083015160208101519051610e1a916001600160a01b03909116908390610fdd565b604051630624488560e41b81526001600160a01b03821690636244885090610e46908690600401611828565b6020604051808303815f875af1158015610e62573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e9190611563565b6040516001600160a01b0384811660248301528381166044830152606482018390526106df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611064565b5f8051602061190983398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b91906118a5565b9050610f778282610883565b156108a15760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610239565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104e9190611563565b90506106df848461105f85856118c0565b6110ca565b5f6110786001600160a01b03841683611159565b905080515f1415801561109c57508080602001905181019061109a91906118d3565b155b156110c557604051635274afe760e01b81526001600160a01b0384166004820152602401610239565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261111b8482611166565b6106df576040516001600160a01b0384811660248301525f604483015261114f91869182169063095ea7b390606401610ebb565b6106df8482611064565b606061042e83835f611203565b5f805f846001600160a01b03168460405161118191906118f2565b5f604051808303815f865af19150503d805f81146111ba576040519150601f19603f3d011682016040523d82523d5f602084013e6111bf565b606091505b50915091508180156111e95750805115806111e95750808060200190518101906111e991906118d3565b8015610d625750505050506001600160a01b03163b151590565b6060814710156112285760405163cd78605960e01b8152306004820152602401610239565b5f80856001600160a01b0316848660405161124391906118f2565b5f6040518083038185875af1925050503d805f811461127d576040519150601f19603f3d011682016040523d82523d5f602084013e611282565b606091505b509150915061129286838361129c565b9695505050505050565b6060826112b1576112ac826112f8565b61042e565b81511580156112c857506001600160a01b0384163b155b156112f157604051639996b31560e01b81526001600160a01b0385166004820152602401610239565b508061042e565b8051156113085780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103ff575f80fd5b5f60208284031215611345575f80fd5b813561042e81611321565b5f60208284031215611360575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f906113b890830184611367565b949350505050565b5f8083601f8401126113d0575f80fd5b50813567ffffffffffffffff8111156113e7575f80fd5b6020830191508360208285010111156113fe575f80fd5b9250929050565b5f805f8060608587031215611418575f80fd5b84359350602085013561142a81611321565b9250604085013567ffffffffffffffff811115611445575f80fd5b611451878288016113c0565b95989497509550505050565b5f805f805f805f60c0888a031215611473575f80fd5b87359650602088013561148581611321565b9550604088013561149581611321565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114be575f80fd5b6114ca8a828b016113c0565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061153f57607f821691505b60208210810361155d57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611573575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f61087060808301848661157a565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113b860208301848661157a565b5f60208284031215611606575f80fd5b815167ffffffffffffffff8082111561161d575f80fd5b818401915084601f830112611630575f80fd5b815181811115611642576116426115cf565b604051601f8201601f19908116603f0116810190838211818310171561166a5761166a6115cf565b81604052828152876020848701011115611682575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b601f8211156110c557805f5260205f20601f840160051c810160208510156116c65750805b601f840160051c820191505b818110156116e5575f81556001016116d2565b5050505050565b815167ffffffffffffffff811115611706576117066115cf565b61171a81611714845461152b565b846116a1565b602080601f83116001811461174d575f84156117365750858301515b5f19600386901b1c1916600185901b1785556117a4565b5f85815260208120601f198616915b8281101561177b5788860151825594840194600190910190840161175c565b508582101561179857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f61042e6020830184611367565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a1576108a16117be565b5f815180845260208085019450602084015f5b8381101561181d5781516001600160a01b0316875295820195908201906001016117f8565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526118886101008401826117e5565b905060a0840151601f198483030160e0850152610d628282611367565b5f602082840312156118b5575f80fd5b815161042e81611321565b808201808211156108a1576108a16117be565b5f602082840312156118e3575f80fd5b8151801515811461042e575f80fd5b5f82518060208501845e5f92019182525091905056fede77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220389ead4b0c6aa3d5593af182bbf3ee37a0e6bee5af7a4e03713c21a110edfcaf64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // TestMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 0538388c9..9271a8ed8 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -80,6 +80,17 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } +// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorMessagesValidationPeriod struct { + SubnetID [32]byte + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner + Weight uint64 +} + // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -89,23 +100,36 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. -var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTokenAddress\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x3630383036303430353233343830313536313030306635373566383066643562353036303430353136313561356533383033383036313561356538333339383130313630343038313930353236313030326539313631303130373536356236303031383136303031383131313135363130303432353736313030343236313031326335363562303336313030346635373631303034663631303035353536356235303631303134303536356237666630633537653136383430646630343066313530383864633266383166653339316333393233626563373365323361393636326566633963323239633661303038303534363830313030303030303030303030303030303039303034363066663136313536313030613535373630343035313633663932656538613936306530316238313532363030343031363034303531383039313033393066643562383035343630303136303031363034303162303339303831313631343631303130343537383035343630303136303031363034303162303331393136363030313630303136303430316230333930383131373832353536303430353139303831353237666337663530356232663337316165323137356565343931336634343939653166323633336137623539333633323165656431636461656236313135313831643239303630323030313630343035313830393130333930613135623530353635623566363032303832383430333132313536313031313735373566383066643562383135313630303238313130363130313235353735663830666435623933393235303530353035363562363334653438376237313630653031623566353236303231363030343532363032343566666435623631353931313830363130313464356633393566663366653630383036303430353233343830313536313030306635373566383066643562353036303034333631303631303163313537356633353630653031633830363338323830613235613131363130306636353738303633626133613462393731313631303039613537383036336261336134623937313436313033643935373830363362633566626665633134363130336563353738303633626565306130336631343631303431333537383036336339373464316236313436313034323635373830363364356632306666363134363130343265353738303633646639336438646531343631303434653537383036336534613633633430313436313034353835373830363366373463363037623134363130343766353738303633666437616335653731343631303439323537356638306664356238303633383238306132356131343631303334333537383036333933653234353938313436313033346235373830363339386633653262343134363130333565353738303633396531626334656631343631303337313537383036336133613635653438313436313033383435373830363361393737386137613134363130323730353738303633616662393830393631343631303339373537383036336237373162336263313436313033626535373566383066643562383036333361316366666636313136313031363835373830363333613163666666363134363130323863353738303633343637656630366631343631303239663537383036333462656530303430313436313032623235373830363335323937666165363134363130326433353738303633363033303564363231343631303265363537383036333632303635383536313436313033303335373830363336363433356162663134363130333136353738303633373332323134663831343631303332393537383036333736663738363231313436313033333035373566383066643562383036333031313861636334313436313031633535373830363330333232656439383134363130316461353738303633313531643330643131343631303165643537383036333165633434373234313436313032306335373830363332306439316237613134363130323166353738303633323565316337373631343631303233323537383036333265323139346438313436313032343535373830363333353435356465643134363130323730353735623566383066643562363130316438363130316433333636303034363134396432353635623631303461353536356230303562363130316438363130316538333636303034363134613064353635623631303464613536356236313031663536303061383135363562363034303531363066663930393131363831353236303230303135623630343035313830393130333930663335623631303164383631303231613336363030343631343964323536356236313037353635363562363130316438363130323264333636303034363134613234353635623631303736313536356236313031643836313032343033363630303436313461373235363562363130643362353635623631303235383631303235333336363030343631346130643536356236313064616635363562363034303531363030313630303136303430316230333930393131363831353236303230303136313032303335363562363130323739363132373130383135363562363034303531363166666666393039313136383135323630323030313631303230333536356236313031643836313032396133363630303436313439643235363562363130653033353635623631303164383631303261643336363030343631346139333536356236313065306535363562363130326335363130326330333636303034363134616431353635623631306562653536356236303430353139303831353236303230303136313032303335363562363130316438363130326531333636303034363134623338353635623631306565353536356236313032656536303134383135363562363034303531363366666666666666663930393131363831353236303230303136313032303335363562363130326335363130333131333636303034363134623630353635623631313161643536356236313032353836313033323433363630303436313461306435363562363131316364353635623631303263353566383135363562363130316438363130333365333636303034363134396432353635623631313165313536356236313031663536303330383135363562363130316438363130333539333636303034363134613064353635623631313230633536356236313031643836313033366333363630303436313462333835363562363131326339353635623631303263353631303337663336363030343631346237623536356236313134663535363562363130316438363130333932333636303034363134613933353635623631313531333536356236313032633537663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303038313536356236313033636336303035363030313630393931623031383135363562363034303531363130323033393139303631346239623536356236313031643836313033653733363630303436313461306435363562363131373035353635623631303263353766653932353436643639383935306464643338393130643265313565643164393233636430613762336464653965326136613366333830353635353539636230303831353635623631303164383631303432313336363030343631346130643536356236313139363535363562363130316635363031343831353635623631303434313631303433633336363030343631346130643536356236313161383235363562363034303531363130323033393139303631346332343536356236313032353836323032613330303831353635623631303263353766366535626466636365313565353363333430366561363762666365333764636432366635313532643534393238323465343366643565336338616335616230303831353635623631303164383631303438643336363030343631346362383536356236313162633435363562363130326335363130346130333636303034363134636636353635623631316361333536356236313034623038333833383336313163646235363562363130346435353736303430353136333130333663663931363065313162383135323630303438313031383439303532363032343031356236303430353138303931303339306664356235303530353035363562356636313034653336313230323835363562356638333831353236303037383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303035383131313135363130353163353736313035316336313462616635363562363030353831313131353631303532643537363130353264363134626166353635623831353236303230303136303031383230313830353436313035343139303631346436313536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363130353664393036313464363135363562383031353631303562383537383036303166313036313035386635373631303130303830383335343034303238333532393136303230303139313631303562383536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313035396235373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333932383330313534313636306130393039313031353239303931353038313531363030353831313131353631303632333537363130363233363134626166353635623134363130363536353735663833383135323630303738333031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313034636339313630666631363930363030343031363134643939353635623630363038313031353136303430353136333432613265306235363065313162383135323630303438313031383539303532363030313630303136303430316230333930393131363630323438323031353235663630343438323031353236303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f393036333835343563313661393036303634303135663630343035313830383330333831383635616634313538303135363130366364353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631303666343931393038313031393036313465613235363562363034303531383236336666666666666666313636306530316238313532363030343031363130373130393139303631346564333536356236303230363034303531383038333033383135663837356166313135383031353631303732633537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313037353039313930363134656535353635623530353035303530353635623631303735303833383338333631316364623536356235663631303736613631323032383536356236303039383130313534393039313530363066663136313536313037393335373630343035313633376661623831653536306530316238313532363030343031363034303531383039313033393066643562363030353630303136303939316230313630303136303031363061303162303331363633343231336366373836303430353138313633666666666666666631363630653031623831353236303034303136303230363034303531383038333033383138363561666131353830313536313037643635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130376661393139303631346565353536356238333630323030313335313436313038323335373630343035313633373262306137653736306531316238313532363032303834303133353630303438323031353236303234303136313034636335363562333036313038333436303630383530313630343038363031363134656663353635623630303136303031363061303162303331363134363130383663353736313038353236303630383430313630343038353031363134656663353635623630343035313633326638383132306436306532316238313532363030343031363130346363393139303631346239623536356235663631303837613630363038353031383536313466313735363562393035303930353035663830356238323831363366666666666666663136313031353631306236313537356636313038396436303630383830313838363134663137353635623833363366666666666666663136383138313130363130386233353736313038623336313466356335363562393035303630323030323831303139303631303863353931393036313466373035363562363130386365393036313466646235363562383035313630343035313931393235303566393136303038383830313931363130386536393136313530353635363562393038313532363032303031363034303531383039313033393032303534313436313039313635373830353136303430353136336134316637373266363065303162383135323631303463633931393036303034303136313465643335363562356636303032383835663031333538343630343035313630323030313631303934353932393139303931383235323630653031623630303136303031363065303162303331393136363032303832303135323630323430313930353635623630343038303531363031663139383138343033303138313532393038323930353236313039356639313631353035363536356236303230363034303531383038333033383138353561666131353830313536313039376135373364356638303365336435666664356235303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631303939643931393036313465653535363562393035303830383636303038303138333566303135313630343035313631303962353931393036313530353635363562393038313532363034303830353136303230393238313930303338333031383132303933393039333535363065303833303138313532363030323833353238343531383238343031353238343831303138303531363030313630303136303430316230333930383131363835383430313532356636303630383630313831393035323931353138313136363038303836303135323432313636306130383530313532363063303834303138313930353238343831353236303037386130313930393235323930323038313531383135343832393036306666313931363630303138333630303538313131313536313061333735373631306133373631346261663536356230323137393035353530363032303832303135313630303138323031393036313061353039303832363135306162353635623530363034303832383130313531363030323833303138303534363036303836303135313630383038373031353136306130383830313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303933303135313630303339303932303138303534363030313630303136303430316230333139313639323834313639323930393231373930393135353833303135313631306166343931313638353631353137613536356238323531363034303531393139353530363130623035393136313530353635363562363034303830353139313832393030333832323039303834303135313630303136303031363034303162303331363832353239303832393037663964343766656639646130373736363135343665363436643631383330626663626461393035303663326535656564333831393565383263346562316362646639303630323030313630343035313830393130333930613335303530383036313062356139303631353138643536356239303530363130383831353635623530363030343833303138313930353536303031383330313534363036343930363130623835393036303031363034303162393030343630666631363833363135316166353635623130313536313062613735373630343035313633353934333331376636306530316238313532363030343831303138323930353236303234303136313034636335363562356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363331653664393738393631306263623837363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363130626562393139303631346564333536356236303230363034303531383038333033383138363561663431353830313536313063303635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130633261393139303631346565353536356239303530356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633383632626661363338383630343035313832363366666666666666663136363065303162383135323630303430313631306336343931393036313532663135363562356636303430353138303833303338313836356166343135383031353631306337653537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313063613539313930383130313930363134656132353635623930353035663630303238323630343035313631306362383931393036313530353635363562363032303630343035313830383330333831383535616661313538303135363130636433353733643566383033653364356666643562353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313063663639313930363134656535353635623930353038323831313436313064323235373630343035313633313837326663386436306530316238313532363030343831303138323930353236303234383130313834393035323630343430313631303463633536356235303530353036303039393039323031383035343630666631393136363030313137393035353530353035303530353635623631306434343832363132313537353635623631306436343537363034303531363333306566613938623630653031623831353236303034383130313833393035323630323430313631303463633536356235663631306436653833363131613832353635623531393035303630303238313630303538313131313536313064383535373631306438353631346261663536356231343631306461353537383036303430353136333137306363393333363065323162383135323630303430313631303463633931393036313464393935363562363130373530383338333631323138303536356235663830363130646239363132343361353635623630303330313534363130646337393038343631353337633536356239303530383031353830363130646463353735303630303136303031363034303162303338313131356231353631306466643537363034303531363332323264313634333630653231623831353236303034383130313834393035323630323430313631303463633536356239323931353035303536356236313037353038333833383336313234356535363562363130653136363132363239353635623566363130653166363132343361353635623930353035663830363130653263383436313236373335363562393135303931353036313065333938323631323135373536356236313065343535373530353035303631306562333536356235663832383135323630303538343031363032303532363034303930323035343630303136303031363061303162303331363630303438323531363030353831313131353631306537333537363130653733363134626166353635623033363130653938353735663833383135323630303838353031363032303532363034303831323038303534393139303535363130653936383238323631326132323536356235303562363130656165383136313065613938343630343030313531363131316164353635623631326139323536356235303530353035303562363130656262363132616230353635623530353635623566363130656337363132363239353635623631306564333835383538353835363132616436353635623930353036313065646436313261623035363562393439333530353035303530353635623566363130656565363132343361353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631306632373537363130663237363134626166353635623630303338313131313536313066333835373631306633383631346261663536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313832303135343630343038303833303139313930393135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353238313031353139303931353035663631306661653832363131613832353635623930353036303031383335313630303338313131313536313066633535373631306663353631346261663536356231343631306665363537383235313630343035313633336230643534306436306532316238313532363130346363393139303630303430313631353339623536356236303034383135313630303538313131313536313066666235373631306666623631346261663536356230333631313031313537363131303039383536313263386435363562353035303530353035303530353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363339646532336434303631313033363861363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131303536393139303631346564333536356236303630363034303531383038333033383138363561663431353830313536313130373135373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131303935393139303631353362353536356235303931353039313530383138343134363131306332353738343630343030313531363034303531363330383939333862333630653131623831353236303034303136313034636339313831353236303230303139303536356238303630303136303031363034303162303331363833363036303031353136303031363030313630343031623033313631303830363131306662353735303830363030313630303136303430316230333136383536306130303135313630303136303031363034303162303331363131356231353631313132343537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313034636335363562356638373831353236303036383730313630323039303831353236303430393138323930323038303534363066663139313636303032393038313137383235353031383035343630303136303031363034303162303334323136363030313630343031623831303236376666666666666666666666666666666636303430316231393930393231363931393039313137393039313535393135313931383235323835393138393931376630343730353962343635303639623862373531383336623431663966316438336461666635383364323233386363376662623436313433376563323361346636393130313630343035313830393130333930613335303530353035303530353035303530353635623566363131316236363132343361353635623630303330313534363130646664393036303031363030313630343031623033383431363631353161663536356235663631313164373832363131613832353635623630383030313531393239313530353035363562363131316563383338333833363132343565353635623631303464353537363034303531363335626666363833663630653131623831353236303034383130313834393035323630323430313631303463633536356235663631313231353631323433613536356239303530356636313132323138333631316138323536356235313930353036303034383136303035383131313135363131323338353736313132333836313462616635363562313436313132353835373830363034303531363331373063633933333630653231623831353236303034303136313034636339313930363134643939353635623566383338313532363030353833303136303230353236303430393032303534363030313630303136306130316230333136333331343631313239333537333335623630343035313633366532636364373536306531316238313532363030343031363130346363393139303631346239623536356235663833383135323630303838333031363032303930383135323630343038303833323038303534393038343930353536303035383630313930393235323930393132303534363130373530393036303031363030313630613031623033313638323631326132323536356236313132643136313236323935363562356636313132646136313234336135363562356638333831353236303036383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303033383131313135363131333133353736313133313336313462616635363562363030333831313131353631313332343537363131333234363134626166353635623831353238313534363130313030393030343630303136303031363061303162303331363630323038323031353236303031383230313534363034303832303135323630303239303931303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303530363030333831353136303033383131313135363131333964353736313133396436313462616635363562313436313133626535373830353136303430353136333362306435343064363065323162383135323631303463633931393036303034303136313533396235363562363030343631313363643832363034303031353136313161383235363562353136303035383131313135363131336466353736313133646636313462616635363562313436313134646535373566363131336565383536313230346335363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633396465323364343038343630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131343264393139303631346564333536356236303630363034303531383038333033383138363561663431353830313536313134343835373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131343663393139303631353362353536356235303931353039313530383138343630343030313531313436313134393835373630343035313633303839393338623336306531316238313532363030343831303138333930353236303234303136313034636335363562383036303031363030313630343031623033313638343630633030313531363030313630303136303430316230333136313131353631313464613537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313034636335363562353035303530356236313134653738333631326338643536356235303530363131346631363132616230353635623530353035363562356636313134666536313236323935363562363131353039383333333834363132656164353635623930353036313064666436313261623035363562356636313135316336313230323835363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363332653433636562353631313534333836363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131353633393139303631346564333536356236303430383035313830383330333831383635616634313538303135363131353764353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631313561313931393036313533663535363562393135303931353038303631313563373537363034303531363332643037313335333630653031623831353238313135313536303034383230313532363032343031363130346363353635623566383238313532363030363834303136303230353236303430393032303830353436313135653139303631346436313536356239303530356630333631313630353537363034303531363330383939333862333630653131623831353236303034383130313833393035323630323430313631303463633536356236303031356638333831353236303037383530313630323035323630343039303230353436306666313636303035383131313135363131363262353736313136326236313462616635363562313436313136356535373566383238313532363030373834303136303230353236303430393038313930323035343930353136333137306363393333363065323162383135323631303463633931363066663136393036303034303136313464393935363562356638323831353236303036383430313630323035323630343038313230363131363736393136313439323135363562356638323831353236303037383430313630323039303831353236303430393138323930323038303534363066663139313636303032393038313137383235353031383035343630303136303031363034303162303334323831383131363630303136306330316230323630303136303031363063303162303339303933313639323930393231373932383339303535383435313630303136303830316239303933303431363832353239313831303139313930393135323833393137666638666431633930666239636661326361323335386664663538303662303836616434333331356439326232323163393239656663376631303563653735363839313031363034303531383039313033393061323530353035303530353635623566363131373065363132343361353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631313734373537363131373437363134626166353635623630303338313131313536313137353835373631313735383631346261663536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313830383330313534363034303833303135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303931353038313531363030333831313131353631313764313537363131376431363134626166353635623134313538303135363131376632353735303630303338313531363030333831313131353631313765663537363131376566363134626166353635623134313535623135363131383133353738303531363034303531363333623064353430643630653231623831353236313034636339313930363030343031363135333962353635623566363131383231383236303430303135313631316138323536356239303530383036303630303135313630303136303031363034303162303331363566303336313138353335373630343035313633333962383934663936306532316238313532363030343831303138353930353236303234303136313034636335363562363034303830383330313531363036303833303135313630383038343031353139323531363334326132653062353630653131623831353236303035363030313630393931623031393336336565356234386562393337335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f39333633383534356331366139333631313863313933393036303034303139323833353236303031363030313630343031623033393138323136363032303834303135323136363034303832303135323630363030313930353635623566363034303531383038333033383138363561663431353830313536313138646235373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363131393032393139303831303139303631346561323536356236303430353138323633666666666666666631363630653031623831353236303034303136313139316539313930363134656433353635623630323036303430353138303833303338313566383735616631313538303135363131393361353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631313935653931393036313465653535363562353035303530353035303536356235663631313936653631323032383536356235663833383135323630303638323031363032303532363034303930323038303534393139323530393036313139386339303631346436313536356239303530356630333631313962303537363034303531363330383939333862333630653131623831353236303034383130313833393035323630323430313631303463633536356236303031356638333831353236303037383330313630323035323630343039303230353436306666313636303035383131313135363131396436353736313139643636313462616635363562313436313161303935373566383238313532363030373832303136303230353236303430393038313930323035343930353136333137306363393333363065323162383135323631303463633931363066663136393036303034303136313464393935363562356638323831353236303036383230313630323035323630343039303831393032303930353136336565356234386562363065303162383135323630303536303031363039393162303139313633656535623438656239313631316134323931393036303034303136313534313835363562363032303630343035313830383330333831356638373561663131353830313536313161356535373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130346435393139303631346565353536356236313161386136313439353835363562356636313161393336313230323835363562356638343831353236303037383230313630323035323630343039303831393032303831353136306530383130313930393235323830353439323933353039303931383239303630666631363630303538313131313536313161636135373631316163613631346261663536356236303035383131313135363131616462353736313161646236313462616635363562383135323630323030313630303138323031383035343631316165663930363134643631353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313162316239303631346436313536356238303135363131623636353738303630316631303631316233643537363130313030383038333534303430323833353239313630323030313931363131623636353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631316234393537383239303033363031663136383230313931356235303530353039313833353235303530363030323832303135343630303136303031363034303162303338303832313636303230383430313532363030313630343031623832303438313136363034303834303135323630303136303830316238323034383131363630363038343031353236303031363063303162393039313034383131363630383038333031353236303033393039323031353439303931313636306130393039313031353239333932353035303530353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436303032393139303630303136303430316239303034363066663136383036313163306435373530383035343630303136303031363034303162303338303834313639313136313031353562313536313163326235373630343035313633663932656538613936306530316238313532363030343031363034303531383039313033393066643562383035343638666666666666666666666666666666666666313931363630303136303031363034303162303338333136313736303031363034303162313738313535363131633536383438343631333138323536356238303534363066663630343031623139313638313535363034303531363030313630303136303430316230333833313638313532376663376635303562326633373161653231373565653439313366343439396531663236333361376235393336333231656564316364616562363131353138316432393036303230303136303430353138303931303339306131353035303530353035363562356638303631316361643631323032383536356239303530383036303038303138343834363034303531363131636333393239313930363135346132353635623930383135323630323030313630343035313830393130333930323035343931353035303932393135303530353635623566383036313163653536313234336135363562356638363831353236303036383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303033383131313135363131643165353736313164316536313462616635363562363030333831313131353631316432663537363131643266363134626166353635623831353238313534363130313030393030343630303136303031363061303162303331363630323038323031353236303031383230313534363034303830383330313931393039313532363030323930393230313534363030313630303136303430316230333830383231363630363038343031353236303031363034303162383230343831313636303830383430313532363030313630383031623832303438313136363061303834303135323630303136306330316239303931303431363630633039303931303135323831303135313930393135303566363131646135383236313161383235363562393035303630303238333531363030333831313131353631316462633537363131646263363134626166353635623134363131646464353738323531363034303531363333623064353430643630653231623831353236313034636339313930363030343031363135333962353635623630323038333031353136303031363030313630613031623033313633333134363131653739353735663832383135323630303538353031363032303532363034303930323035343630303136303031363061303162303331363333313436313165313635373333363131323739353635623566383238313532363030353835303136303230353236303430393032303534363061303832303135313631316534353931363030313630623031623930303436303031363030313630343031623033313639303631353462313536356236303031363030313630343031623033313634323130313536313165373935373630343035313633666236636536336636306530316238313532363030313630303136303430316230333432313636303034383230313532363032343031363130346363353635623630303238313531363030353831313131353631316538653537363131653865363134626166353635623033363131666263353736303032383430313534363038303834303135313631316562303931363030313630303136303430316230333136393036313534623135363562363030313630303136303430316230333136343231303135363131656534353736303430353136336662366365363366363065303162383135323630303136303031363034303162303334323136363030343832303135323630323430313631303463633536356238363135363131656636353736313165663438323837363132313830353635623530356235663838383135323630303638353031363032303532363034303930323038303534363066663139313636303033313739303535363036303833303135313630383038323031353136313166326639313834393136313166326139313930363135346431353635623631333139633536356235303566383938313532363030363836303136303230353236303430383132303630303230313830353436303031363030313630343031623033393039333136363030313630633031623032363030313630303136306330316230333930393331363932393039323137393039313535363131663730383436313333363635363562356638613831353236303037383730313630323035323630343038303832323038333930353535313931393235303834393138623931376633363664333336633061623338306463373939663039356136663832613236333236353835633532393039636336393862303962613435343037303965643537393161333135313539343530363132303231393335303530353035303536356236303034383135313630303538313131313536313166643135373631316664313631346261663536356230333631323030353537363131666466383336313333363635363562356638393831353236303037383630313630323035323630343039303230353536313166663838383631326338643536356236303031393435303530353035303530363132303231353635623830353136303430353136333137306363393333363065323162383135323631303463633931393036303034303136313464393935363562393339323530353035303536356237666539323534366436393839353064646433383931306432653135656431643932336364306137623364646539653261366133663338303536353535396362303039303536356236303430383035313630363038303832303138333532356638303833353236303230383330313532393138313031393139303931353236303430353136333036663832353335363065343162383135323633666666666666666638333136363030343832303135323566393038313930363030353630303136303939316230313930363336663832353335303930363032343031356636303430353138303833303338313836356166613135383031353631323062303537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313230643739313930383130313930363135346631353635623931353039313530383036313230663935373630343035313633366232663139653936306530316238313532363030343031363034303531383039313033393066643562383135313135363132313166353738313531363034303531363336626135383961353630653031623831353236303034383130313931393039313532363032343031363130346363353635623630323038323031353136303031363030313630613031623033313631353631323135303537383136303230303135313630343035313632346465373564363065333162383135323630303430313631303463633931393036313462396235363562353039323931353035303536356235663830363132313631363132343361353635623566393338343532363030353031363032303532353035303630343039303230353436303031363030313630613031623033313631353135393035363562363034303531363330366638323533353630653431623831353236336666666666666666383231363630303438323031353235663930383139303831393036303035363030313630393931623031393036333666383235333530393036303234303135663630343035313830383330333831383635616661313538303135363132316362353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631323166323931393038313031393036313534663135363562393135303931353038303631323231343537363034303531363336623266313965393630653031623831353236303034303136303430353138303931303339306664356236303035363030313630393931623031363030313630303136306130316230333136363334323133636637383630343035313831363366666666666666663136363065303162383135323630303430313630323036303430353138303833303338313836356166613135383031353631323235373537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313232376239313930363134656535353635623832353131343631323261313537383135313630343035313633366261353839613536306530316238313532363030343831303139313930393135323630323430313631303463633536356236303230383230313531363030313630303136306130316230333136313536313232643235373831363032303031353136303430353136323464653735643630653331623831353236303034303136313034636339313930363134623962353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363330383863323436333835363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313233306639313930363134656433353635623630343038303531383038333033383138363561663431353830313536313233323935373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132333464393139303631353538313536356239313530393135303831383731343631323337343537363034303531363330383939333862333630653131623831353236303034383130313838393035323630323430313631303463633536356235663631323337643631323433613536356235663839383135323630303538323031363032303532363034303930323036303031303135343930393135303630303136303031363034303162303339303831313639303833313631313135363132343130353735663838383135323630303538323031363032303930383135323630343039313832393032303630303130313830353436303031363030313630343031623033313931363630303136303031363034303162303338363136393038313137393039313535393135313931383235323839393137666563343431343865386666323731663264306261636566313134323135346162616362306162623361323965623365623530653263613937653836643034333539313031363034303531383039313033393061323631323432663536356235663838383135323630303538323031363032303532363034303930323036303031303135343630303136303031363034303162303331363931353035623530393639353530353035303530353035303536356237663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303039303536356235663830363132343638363132343361353635623930353035663631323437343836363133346539353635623930353036313234376638363631323135373536356236313234386535373630303139323530353035303631323032313536356235663836383135323630303538333031363032303532363034303930323035343630303136303031363061303162303331363333313436313234623335373333363131323739353635623566383638313532363030353833303136303230353236303430393032303534363061303832303135313631323465323931363030313630623031623930303436303031363030313630343031623033313639303631353462313536356236303031363030313630343031623033313638313630633030313531363030313630303136303430316230333136313031353631323532393537363063303831303135313630343035313633666236636536336636306530316238313532363030313630303136303430316230333930393131363630303438323031353236303234303136313034636335363562356638353135363132353431353736313235336138373836363132313830353635623930353036313235356635363562353035663836383135323630303538333031363032303532363034303930323036303031303135343630303136303031363034303162303331363562363030343833303135343630343038333031353135663931363030313630303136306130316230333136393036333466323234323966393036313235383439303631313161643536356236306130383630313531363063303837303135313630343035313630303136303031363065303162303331393630653038363930316231363831353236313235623439333932393138323931383939303630303430313631353561343536356236303230363034303531383038333033383138363561666131353830313536313235636635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132356633393139303631346565353536356239303530383038343630303830313566386138313532363032303031393038313532363032303031356632303566383238323534363132363137393139303631353137613536356239303931353535303530313531353937393635303530353035303530353035303536356237663962373739623137343232643064663932323233303138623332623464316661343665303731373233643638313765323438366430303362656363353566303038303534363030313139303136313236366435373630343035313633336565356165623536306530316238313532363030343031363034303531383039313033393066643562363030323930353535363562356636313236376336313439353835363562356636313236383536313230323835363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363332653433636562353631323661633838363132303463353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363132366363393139303631346564333536356236303430383035313830383330333831383635616634313538303135363132366536353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631323730613931393036313533663535363562393135303931353038303135363132373331353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313034636335363562356638323831353236303037383430313630323035323630343038303832323038313531363065303831303139303932353238303534383239303630666631363630303538313131313536313237363235373631323736323631346261663536356236303035383131313135363132373733353736313237373336313462616635363562383135323630323030313630303138323031383035343631323738373930363134643631353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313237623339303631346436313536356238303135363132376665353738303630316631303631323764353537363130313030383038333534303430323833353239313630323030313931363132376665353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631323765313537383239303033363031663136383230313931356235303530353039313833353235303530363030323832303135343630303136303031363034303162303338303832313636303230383430313532363030313630343031623832303438313136363034303834303135323630303136303830316238323034383131363630363038343031353236303031363063303162393039313034383131363630383038333031353236303033393238333031353431363630613039303931303135323930393135303831353136303035383131313135363132383639353736313238363936313462616635363562313431353830313536313238386135373530363030313831353136303035383131313135363132383837353736313238383736313462616635363562313431353562313536313238616235373830353136303430353136333137306363393333363065323162383135323631303463633931393036303034303136313464393935363562363030333831353136303035383131313135363132386330353736313238633036313462616635363562303336313238636535373630303438313532363132386433353635623630303538313532356238333630303830313831363032303031353136303430353136313238653939313930363135303536353635623930383135323630343038303531363032303932383139303033383330313930323035663930383139303535383538313532363030373837303139303932353239303230383135313831353438333932393139303832393036306666313931363630303138333630303538313131313536313239326435373631323932643631346261663536356230323137393035353530363032303832303135313630303138323031393036313239343639303832363135306162353635623530363034303832303135313630303238323031383035343630363038353031353136303830383630313531363061303837303135313630303136303031363034303162303339353836313636303031363030313630383031623033313939303934313639333930393331373630303136303430316239323836313639323930393230323931393039313137363030313630303136303830316230333136363030313630383031623931383531363931393039313032363030313630303136306330316230333136313736303031363063303162393138343136393139303931303231373930353536306330393039323031353136303033393039313031383035343630303136303031363034303162303331393136393139303932313631373930353538303531363030353831313131353631323965623537363132396562363134626166353635623630343035313834393037663163303865353936353666316131386463326461373638323663646335323830356334336538393761313763353066616566623861623363313532366363313639303566393061333931393639313935353039303933353035303530353035363562356636313261326236313337633135363562383035343630343035313633343063313066313936306530316238313532363030313630303136306130316230333836383131363630303438333031353236303234383230313836393035323932393335303931313639303633343063313066313939303630343430313566363034303531383038333033383135663837383033623135383031353631326137373537356638306664356235303561663131353830313536313261383935373364356638303365336435666664356235303530353035303530353035303536356236313134663138323832363132613966363133376331353635623534363030313630303136306130316230333136393139303631333765353536356236303031376639623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030353535363562356638303631326165303631323433613536356236303032383130313534393039313530363166666666363030313630343031623930393130343831313639303836313631303830363132623039353735303631323731303631666666663836313631313562313536313262326435373630343035313633356631326536633336306531316238313532363166666666383631363630303438323031353236303234303136313034636335363562363030323831303135343630303136303031363034303162303339303831313639303835313631303135363132623639353736303430353136323032613036643630653131623831353236303031363030313630343031623033383531363630303438323031353236303234303136313034636335363562383035343833313038303631326237623537353038303630303130313534383331313562313536313262396335373630343035313633323232643136343336306532316238313532363030343831303138343930353236303234303136313034636335363562356636313262613638343631333834343536356239303530356636313262623238323631306461663536356239303530356636313262626638393833363133383631353635623930353036303430353138303630383030313630343035323830363132626433333339303536356236303031363030313630613031623033393038313136383235323631666666663830386331363630323038303835303139313930393135323630303136303031363034303162303338303864313636303430383038373031393139303931353235663630363039363837303138313930353238383831353236303035393039623031383335323939386139303230383635313831353439333838303135313962383830313531383331363630303136306230316230323637666666666666666666666666666666663630623031623139396339303935313636303031363061303162303236303031363030313630623031623033313939303934313639353136393439303934313739313930393131373938393039383136313738313535393130313531363030313930393130313830353439313930393531363630303136303031363034303162303331393930393131363137393039333535353039303931353035303934393335303530353035303536356235663631326339363631323433613536356235663833383135323630303638323031363032303532363034303830383232303831353136306530383130313930393235323830353439333934353039313932393039313930383239303630666631363630303338313131313536313263636635373631326363663631346261663536356236303033383131313135363132636530353736313263653036313462616635363562383135323831353436313031303039303034363030313630303136306130316230333136363032303832303135323630303138323031353436303430383038333031393139303931353236303032393039323031353436303031363030313630343031623033383038323136363036303834303135323630303136303430316238323034383131363630383038343031353236303031363038303162383230343831313636306130383430313532363030313630633031623930393130343136363063303930393130313532383130313531393039313530363132643534363133653265353635623832363038303031353136313264363339313930363135346231353635623630303136303031363034303162303331363432313031353631326439373537363034303531363366623663653633663630653031623831353236303031363030313630343031623033343231363630303438323031353236303234303136313034636335363562356638343831353236303036383430313630323039303831353236303430383038333230383035343630303136303031363061383162303331393136383135353630303138313031383439303535363030323031383339303535363030373836303139303931353238313230383035343930383239303535393038303832313536313265353235373566383438313532363030353837303136303230353236303430393032303534363132373130393036313265303439303630303136306130316239303034363166666666313638353631353161663536356236313265306539313930363135333763353635623931353038313836363030383031356638363831353236303230303139303831353236303230303135663230356638323832353436313265333239313930363135313761353635623930393135353530363132653432393035303832383436313535643235363562393035303631326535323835363032303031353138323631326132323536356236313265363738353630323030313531363130656139383736303630303135313631313161643536356236303430383035313832383135323630323038313031383439303532383539313839393137663865636563663531303037306333323064396135353332336666616265333530653239346165353035666330633530396463353733366461366635636339393339313031363034303531383039313033393061333530353035303530353035303530353635623566383036313265623736313234336135363562393035303566363132656336363130323533383536313338343435363562393035303566363132656432383736313161383235363562393035303631326564643837363132313537353635623631326566643537363034303531363333306566613938623630653031623831353236303034383130313838393035323630323430313631303463633536356236303032383135313630303538313131313536313266313235373631326631323631346261663536356231343631326633333537383035313630343035313633313730636339333336306532316238313532363130346363393139303630303430313631346439393536356235663832383236303830303135313631326634343931393036313534623135363562393035303833363030323031363030613930353439303631303130303061393030343630303136303031363034303162303331363832363034303031353136313266366439313930363135356535353635623630303136303031363034303162303331363831363030313630303136303430316230333136313131353631326661613537363034303531363336643531666530353630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313034636335363562356638303631326662363861383436313331396335363562393135303931353035663861383336303430353136303230303136313266653439323931393039313832353236306330316236303031363030313630633031623033313931363630323038323031353236303238303139303536356236303430383035313630316631393831383430333031383135323832383235323830353136303230393039313031323036306530383330313930393135323931353038303630303138313532363030313630303136306130316230333863313636303230383038333031393139303931353236303430383038333031386639303532363030313630303136303430316230333830386231363630363038353031353235663630383038353031383139303532393038383136363061303835303135323630633039303933303138333930353238343833353236303036386230313930393135323930323038313531383135343832393036306666313931363630303138333630303338313131313536313330373735373631333037373631346261663536356230323137393035353530363032303832383130313531383235343631303130303630303136306138316230333139313636313031303036303031363030313630613031623033393238333136303231373833353536303430383038353031353136303031383530313535363036303830383630313531363030323930393530313830353436303830383038393031353136306130386130313531363063303930396130313531363030313630303136303430316230333939386131363630303136303031363038303162303331393930393431363933393039333137363030313630343031623931386131363931393039313032313736303031363030313630383031623033313636303031363038303162393938393136393939303939303236303031363030313630633031623033313639383930393831373630303136306330316239313838313639313930393130323137393035353831353138393836313638313532386138363136393438313031393439303934353239333862313639303833303135323931383130313835393035323930386331363931386439313834393137666230303234623236336263336130623732386136656465613530613639656661383431313839663864333265653861663964316332623161316132323334323639313031363034303531383039313033393061343961393935303530353035303530353035303530353035303536356236313331386136313365343935363562363133313933383236313365393435363562363131346631383136313366303835363562356638303566363133316137363132303238353635623566383638313532363030373832303136303230353236303430393032303630303230313534393039313530363030313630383031623930303436303031363030313630343031623033313636313331643738353832363133663634353635623566363133316531383736313431383935363562356638383831353236303037383530313630323035323630343038303832323036303032303138303534363766666666666666666666666666666666363038303162313931363630303136303830316236303031363030313630343031623033386338313136393138323032393239303932313739303932353539313531363334326132653062353630653131623831353236303034383130313863393035323931383431363630323438333031353236303434383230313532393139323530393036303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f39303633383534356331366139303630363430313566363034303531383038333033383138363561663431353830313536313332386135373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363133326231393139303831303139303631346561323536356236303430353138323633666666666666666631363630653031623831353236303034303136313332636439313930363134656433353635623630323036303430353138303833303338313566383735616631313538303135363133326539353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631333330643931393036313465653535363562363034303830353136303031363030313630343031623033386138313136383235323630323038323031383439303532383235313933393435303835313639323862393237663037646535666633356136373461383030356536363166333333336339303763613633333334363238303837363264313964633762336162623161386331646639323832393030333031393061333930393435303932353035303530356239323530393239303530353635623566383036313333373036313234336135363562393035303566363133333830383436303430303135313631316138323536356239303530356636303033383235313630303538313131313536313333393835373631333339383631346261663536356231343830363133336236353735303630303438323531363030353831313131353631333362343537363133336234363134626166353635623134356231353631333363363537353036306330383130313531363133343033353635623630303238323531363030353831313131353631333364623537363133336462363134626166353635623033363133336537353735303432363133343033353635623831353136303430353136333137306363393333363065323162383135323631303463633931393036303034303136313464393935363562383436303830303135313630303136303031363034303162303331363831363030313630303136303430316230333136313136313334326135373530356639343933353035303530353035363562363030343833303135343630363038363031353136303031363030313630613031623033393039313136393036333466323234323966393036313334346639303631313161643536356236306130383530313531363038303839303135313630343038303862303135313566393038313532363030353861303136303230353238313930323036303031303135343930353136303031363030313630653031623033313936306530383739303162313638313532363133346131393439333932393138383931363030313630303136303430316230333930393131363930363030343031363135356134353635623630323036303430353138303833303338313836356166613135383031353631333462633537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313334653039313930363134656535353635623935393435303530353035303530353635623631333466313631343935383536356235663631333466613631323032383536356235663834383135323630303738323031363032303532363034303830383232303831353136306530383130313930393235323830353439333934353039313932393039313930383239303630666631363630303538313131313536313335333335373631333533333631346261663536356236303035383131313135363133353434353736313335343436313462616635363562383135323630323030313630303138323031383035343631333535383930363134643631353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313335383439303631346436313536356238303135363133356366353738303630316631303631333561363537363130313030383038333534303430323833353239313630323030313931363133356366353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631333562323537383239303033363031663136383230313931356235303530353039313833353235303530363030323832383130313534363030313630303136303430316230333830383231363630323038353031353236303031363034303162383230343831313636303430383530313532363030313630383031623832303438313136363036303835303135323630303136306330316239303931303438313136363038303834303135323630303339303933303135343930393231363630613039303931303135323930393135303831353136303035383131313135363133363364353736313336336436313462616635363562313436313336373035373566383438313532363030373833303136303230353236303430393038313930323035343930353136333137306363393333363065323162383135323631303463633931363066663136393036303034303136313464393935363562363030333831353234323630303136303031363034303162303331363630633038323031353235663834383135323630303738333031363032303532363034303930323038313531383135343833393239313930383239303630666631393136363030313833363030353831313131353631333662343537363133366234363134626166353635623032313739303535353036303230383230313531363030313832303139303631333663643930383236313530616235363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353566363133373661383538323631333139633536356236303830383430313531363034303830353136303031363030313630343031623033393039323136383235323432363032303833303135323931393335303833393235303837393137663133643538333934636632363964343862636639323739353961323961356666656537633939323464616666663839323765636466336334386666613763363739313031363034303531383039313033393061333530393339323530353035303536356237663665356264666363653135653533633334303665613637626663653337646364323666353135326435343932383234653433666435653363386163356162303039303536356236303430353136303031363030313630613031623033383338313136363032343833303135323630343438323031383339303532363130346435393138353931383231363930363361393035396362623930363036343031356236303430353136303230383138333033303338313532393036303430353239313530363065303162363032303832303138303531363030313630303136306530316230333833383138333136313738333532353035303530353036313431663235363562356636313064666438323631333835313631333763313536356235343630303136303031363061303162303331363930363134323461353635623566363133383661363132303238353635623630303930313534363066663136363133383865353736303430353136333766616238316535363065303162383135323630303430313630343035313830393130333930666435623566363133383937363132303238353635623930353034323631333861613630363038363031363034303837303136313462363035363562363030313630303136303430316230333136313131353830363133386534353735303631333863383632303261333030343236313531376135363562363133386438363036303836303136303430383730313631346236303536356236303031363030313630343031623033313631303135356231353631333931653537363133386639363036303835303136303430383630313631346236303536356236303430353136333538373964613133363065313162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130346363353635623631333933333631333932653630363038363031383636313536313035363562363134336162353635623631333934333631333932653630383038363031383636313536313035363562363033303631333935323630323038363031383636313536323435363562393035303134363133393834353736313339363636303230383530313835363135363234353635623630343035313633323634373562326636306531316238313532363130346363393235303630303430313930383135323630323030313930353635623631333938653834383036313536323435363562393035303566303336313339626235373631333961303834383036313536323435363562363034303531363333653038613132353630653131623831353236303034303136313034636339323931393036313536363635363562356636303038383230313631333963613836383036313536323435363562363034303531363133396438393239313930363135346132353635623930383135323630323030313630343035313830393130333930323035343134363133613131353736313339663638343830363135363234353635623630343035313633613431663737326636306530316238313532363030343031363130346363393239313930363135363636353635623631336131623833356636313366363435363562363034303830353136306530383130313930393135323831353438313532356639303831393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363365303437623238333930363032303831303136313361353838613830363135363234353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323039303831303139303631336161303930386230313862363135363234353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323030313631336165393630363038623031363034303863303136313462363035363562363030313630303136303430316230333136383135323630323030313631336230343630363038623031386236313536313035363562363133623064393036313536373935363562383135323630323030313631336231663630383038623031386236313536313035363562363133623238393036313536373935363562383135323630323030313838363030313630303136303430316230333136383135323530363034303531383236336666666666666666313636306530316238313532363030343031363133623536393139303631353739623536356235663630343035313830383330333831383635616634313538303135363133623730353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631336239373931393038313031393036313538353235363562356638323831353236303036383630313630323035323630343039303230393139333530393135303631336262353832383236313530616235363562353038313630303838343031363133626335383838303631353632343536356236303430353136313362643339323931393036313534613235363562393038313532363034303531393038313930303336303230303138313230393139303931353536336565356234386562363065303162383135323566393036303035363030313630393931623031393036336565356234386562393036313363306639303835393036303034303136313465643335363562363032303630343035313830383330333831356638373561663131353830313536313363326235373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363133633466393139303631346565353536356236303430383035313630653038313031393039313532393039313530383036303031383135323630323030313631336336663839383036313536323435363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303138323930353235303933383535323530353035303630303136303031363034303162303338393136363032303830383430313832393035323630343038303835303138343930353236303630383530313932393039323532363038303834303138333930353236306130393039333031383239303532383638323532363030373838303139303932353232303831353138313534383239303630666631393136363030313833363030353831313131353631336366653537363133636665363134626166353635623032313739303535353036303230383230313531363030313832303139303631336431373930383236313530616235363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353830363133646234383838303631353632343536356236303430353136313364633239323931393036313534613235363562363034303531383039313033393032303834376662373732393765336265666336393162666338363461383165323431663833653265663732326236653762656361613265636563323530633664353262343330383938623630343030313630323038313031393036313365303039313930363134623630353635623630343038303531363030313630303136303430316230333933383431363831353239323930393131363630323038333031353230313630343035313830393130333930613435303930393539343530353035303530353035363562356636313365333736313230323835363562363030313031353436303031363030313630343031623033313639313930353035363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030353436303031363034303162393030343630666631363631336539323537363034303531363331616663643739663630653331623831353236303034303136303430353138303931303339306664356235363562363133653963363133653439353635623631336561353831363134353134353635623631336561643631343532643536356236313065626236303630383230313335363038303833303133353631336563613630633038353031363061303836303136313462363035363562363133656461363065303836303136306330383730313631353839353536356236313365656236313031303038373031363065303838303136313538616535363562363130313030383730313335363133663033363130313430383930313631303132303861303136313465666335363562363134353364353635623631336631303631336534393536356235663631336631393631333763313536356239303530363030313630303136306130316230333832313636313366343435373831363034303531363337333330363830333630653031623831353236303034303136313034636339313930363134623962353635623830353436303031363030313630613031623033313931363630303136303031363061303162303339323930393231363931393039313137393035353536356235663631336636643631323032383536356239303530356638323630303136303031363034303162303331363834363030313630303136303430316230333136313131353631336639623537363133663934383338353631353464313536356239303530363133666138353635623631336661353834383436313534643135363562393035303562363034303830353136303830383130313832353236303032383430313534383038323532363030333835303135343630323038333031353236303034383530313534393238323031393239303932353236303035383430313534363030313630303136303430316230333136363036303832303135323432393131353830363134303061353735303630303138343031353438313531363134303036393136303031363030313630343031623033313639303631353137613536356238323130313535623135363134303330353736303031363030313630343031623033383331363630363038323031353238313831353236303430383130313531363032303832303135323631343034663536356238323831363036303031383138313531363134303432393139303631353462313536356236303031363030313630343031623033313639303532353035623630363038313031353136313430356639303630363436313535653535363562363032303832303135313630303138363031353436303031363030313630343031623033393239303932313639313631343038613931393036303031363034303162393030343630666631363631353161663536356231303135363134306261353736303630383130313531363034303531363364666165383830313630653031623831353236303031363030313630343031623033393039313136363030343832303135323630323430313631303463633536356238353630303136303031363034303162303331363831363034303031383138313531363134306435393139303631353137613536356239303532353036303430383130313830353136303031363030313630343031623033383731363931393036313430663539303833393036313535643235363562393035323530363030313834303135343630343038323031353136303634393136313431316139313630303136303430316239303931303436306666313639303631353161663536356231303135363134313431353738303630343030313531363034303531363335393433333137663630653031623831353236303034303136313034636339313831353236303230303139303536356238303531363030323835303135353630323038313031353136303033383530313535363034303831303135313630303438353031353536303630303135313630303539303933303138303534363030313630303136303430316230333139313636303031363030313630343031623033393039343136393339303933313739303932353535303530353035303536356235663830363134313933363132303238353635623566383438313532363030373832303136303230353236303430393032303630303230313830353439313932353039303630303839303631343163373930363030313630343031623930303436303031363030313630343031623033313636313538636535363562393139303631303130303061383135343831363030313630303136303430316230333032313931363930383336303031363030313630343031623033313630323137393035353931353035303931393035303536356235663631343230363630303136303031363061303162303338343136383336313436643335363562393035303830353135663134313538303135363134323261353735303830383036303230303139303531383130313930363134323238393139303631353865393536356231353562313536313034643535373832363034303531363335323734616665373630653031623831353236303034303136313034636339313930363134623962353635623566383038333630303136303031363061303162303331363633373061303832333133303630343035313832363366666666666666663136363065303162383135323630303430313631343237383931393036313462396235363562363032303630343035313830383330333831383635616661313538303135363134323933353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631343262373931393036313465653535363562393035303631343263653630303136303031363061303162303338353136333333303836363134366530353635623630343035313633373061303832333136306530316238313532356639303630303136303031363061303162303338363136393036333730613038323331393036313432666339303330393036303034303136313462396235363562363032303630343035313830383330333831383635616661313538303135363134333137353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631343333623931393036313465653535363562393035303831383131313631343361313537363034303531363234363162636436306535316238313532363032303630303438323031353236303263363032343832303135323766353336313636363534353532343333323330353437323631366537333636363537323436373236663664336132303632363136633631366536333635323036653630343438323031353236623162646430383161356239386463393935383563643935393630613231623630363438323031353236303834303136313034636335363562363133346530383238323631353564323536356236313433623836303230383230313832363134613933353635623633666666666666666631363135383031353631343364383537353036313433643336303230383230313832363134663137353635623135313539303530356231353631343431663537363134336561363032303832303138323631346139333536356236313433663736303230383330313833363134663137353635623630343035313633633038613066316436306530316238313532363366666666666666663930393331363630303438343031353236303234383330313532353036303434303136313034636335363562363134343263363032303832303138323631346631373536356239303530363134343362363032303833303138333631346139333536356236336666666666666666313631313135363134343534353736313433656136303230383230313832363134613933353635623630303135623631343436343630323038333031383336313466313735363562393035303831313031353631313466313537363134343761363032303833303138333631346631373536356236313434383536303031383436313535643235363562383138313130363134343934353736313434393436313466356335363562393035303630323030323031363032303831303139303631343461393931393036313465666335363562363030313630303136306130316230333136363134346266363032303834303138343631346631373536356238333831383131303631343463663537363134346366363134663563353635623930353036303230303230313630323038313031393036313434653439313930363134656663353635623630303136303031363061303162303331363130313536313435306335373630343035313633306462633864356636306533316238313532363030343031363034303531383039313033393066643562363030313031363134343537353635623631343531633631336534393536356236313435323436313437313935363562363130656262383136313437323135363562363134353335363133653439353635623631336539323631343830343536356236313435343536313365343935363562356636313435346536313234336135363562393035303631666666663835313631353830363134353636353735303631323731303631666666663836313631313562313536313435386135373630343035313633356631326536633336306531316238313532363166666666383631363630303438323031353236303234303136313034636335363562383638383131313536313435616535373630343035313633323232643136343336306532316238313532363030343831303138393930353236303234303136313034636335363562363066663834313631353830363134356331353735303630306136306666383531363131356231353631343565343537363034303531363331373064623335393630653331623831353236306666383531363630303438323031353236303234303136313034636335363562363134356563363133653265353635623630303136303031363034303162303331363836363030313630303136303430316230333136313031353631343632383537363034303531363230326130366436306531316238313532363030313630303136303430316230333837313636303034383230313532363032343031363130346363353635623832356630333631343634383537363034303531363361373333303037313630653031623831353236303034303136303430353138303931303339306664356239363837353536303031383730313935393039353535363030323836303138303534363030313630303136303430316230333935393039353136363966666666666666666666666666666666666666663139393039353136393439303934313736303031363034303162363166666666393439303934313639333930393330323932393039323137363766666666666666666666666666666666363035303162313931363630666639313930393131363630303136303530316230323137393039313535363030333833303135353630303439303931303138303534363030313630303136306130316230333139313636303031363030313630613031623033393039323136393139303931313739303535353635623630363036313230323138333833356636313438306335363562363034303531363030313630303136306130316230333834383131363630323438333031353238333831313636303434383330313532363036343832303138333930353236313037353039313836393138323136393036333233623837326464393036303834303136313338313235363562363133653932363133653439353635623631343732393631336534393536356235663631343733323631323032383536356238323335383135353930353036303134363134373461363036303834303136303430383530313631353861653536356236306666313631313830363134373639353735303631343736343630363038333031363034303834303136313538616535363562363066663136313535623135363134373964353736313437376536303630383330313630343038343031363135386165353635623630343035313633346135396262666636306531316238313532363066663930393131363630303438323031353236303234303136313034636335363562363134376164363036303833303136303430383430313631353861653536356236303031383230313830353436306666393239303932313636303031363034303162303236306666363034303162313939303932313639313930393131373930353536313437646536303430383330313630323038343031363134623630353635623630303139313930393130313830353436303031363030313630343031623033313931363630303136303031363034303162303339303932313639313930393131373930353535303536356236313261623036313365343935363562363036303831343731303135363134383331353733303630343035313633636437383630353936306530316238313532363030343031363130346363393139303631346239623536356235663830383536303031363030313630613031623033313638343836363034303531363134383463393139303631353035363536356235663630343035313830383330333831383538373561663139323530353035303364383035663831313436313438383635373630343035313931353036303166313936303366336430313136383230313630343035323364383235323364356636303230383430313365363134383862353635623630363039313530356235303931353039313530363134383962383638333833363134386135353635623936393535303530353035303530353035363562363036303832363134386261353736313438623538323631343866383536356236313230323135363562383135313135383031353631343864313537353036303031363030313630613031623033383431363362313535623135363134386631353738333630343035313633393939366233313536306530316238313532363030343031363130346363393139303631346239623536356235303830363132303231353635623830353131353631343930383537383035313830383236303230303166643562363034303531363330613132663532313630653131623831353236303034303136303430353138303931303339306664356235303830353436313439326439303631346436313536356235663832353538303630316631303631343933633537353035303536356236303166303136303230393030343930356635323630323035663230393038313031393036313065626239313930363134393935353635623630343038303531363065303831303139303931353238303566383135323630363036303230383230313831393035323566363034303833303138313930353239303832303138313930353236303830383230313831393035323630613038323031383139303532363063303930393130313532393035363562356238303832313131353631343961393537356638313535363030313031363134393936353635623530393035363562383031353135383131343631306562623537356638306664356238303335363366666666666666663831313638313134363134396364353735663830666435623931393035303536356235663830356636303630383438363033313231353631343965343537356638306664356238333335393235303630323038343031333536313439663638313631343961643536356239313530363134613034363034303835303136313439626135363562393035303932353039323530393235363562356636303230383238343033313231353631346131643537356638306664356235303335393139303530353635623566383036303430383338353033313231353631346133353537356638306664356238323335363030313630303136303430316230333831313131353631346134613537356638306664356238333031363038303831383630333132313536313461356235373566383066643562393135303631346136393630323038343031363134396261353635623930353039323530393239303530353635623566383036303430383338353033313231353631346138333537356638306664356238323335393135303631346136393630323038343031363134396261353635623566363032303832383430333132313536313461613335373566383066643562363132303231383236313439626135363562383033353631666666663831313638313134363134396364353735663830666435623630303136303031363034303162303338313136383131343631306562623537356638306664356235663830356638303630383038353837303331323135363134616534353735663830666435623834333536303031363030313630343031623033383131313135363134616639353735663830666435623835303136306130383138383033313231353631346230613537356638306664356239333530363134623138363032303836303136313461616335363562393235303630343038353031333536313462323838313631346162643536356239333936393239353530393239333630363030313335393235303530353635623566383036303430383338353033313231353631346234393537356638306664356236313462353238333631343962613536356239343630323039333930393330313335393335303530353035363562356636303230383238343033313231353631346237303537356638306664356238313335363132303231383136313461626435363562356638303630343038333835303331323135363134623863353735663830666435623530353038303335393236303230393039313031333539313530353635623630303136303031363061303162303339313930393131363831353236303230303139303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363030363831313036313462643335373631346264333631346261663536356239303532353635623566356238333831313031353631346266313537383138313031353138333832303135323630323030313631346264393536356235303530356639313031353235363562356638313531383038343532363134633130383136303230383630313630323038363031363134626437353635623630316630313630316631393136393239303932303136303230303139323931353035303536356236303230383135323631346333363630323038323031383335313631346263333536356235663630323038333031353136306530363034303834303135323631346335313631303130303834303138323631346266393536356239303530363034303834303135313630303136303031363034303162303338303832313636303630383630313532383036303630383730313531313636303830383630313532383036303830383730313531313636306130383630313532383036306130383730313531313636306330383630313532383036306330383730313531313636306530383630313532353035303830393135303530393239313530353035363562363030313630303136306130316230333831313638313134363130656262353735663830666435623566383038323834303336313031363038313132313536313463636235373566383066643562363130313430383038323132313536313463646135373566383066643562383439333530383330313335393035303631346365623831363134636134353635623830393135303530393235303932393035303536356235663830363032303833383530333132313536313464303735373566383066643562383233353630303136303031363034303162303338303832313131353631346431643537356638306664356238313835303139313530383536303166383330313132363134643330353735663830666435623831333538313831313131353631346433653537356638306664356238363630323038323835303130313131313536313464346635373566383066643562363032303932393039323031393639313935353039303933353035303530353035363562363030313831383131633930383231363830363134643735353736303766383231363931353035623630323038323130383130333631346439333537363334653438376237313630653031623566353236303232363030343532363032343566666435623530393139303530353635623630323038313031363130646664383238343631346263333536356236333465343837623731363065303162356635323630343136303034353236303234356666643562363034303531363036303831303136303031363030313630343031623033383131313832383231303137313536313464646435373631346464643631346461373536356236303430353239303536356236303430383035313930383130313630303136303031363034303162303338313131383238323130313731353631346464643537363134646464363134646137353635623630343035313630316638323031363031663139313638313031363030313630303136303430316230333831313138323832313031373135363134653264353736313465326436313464613735363562363034303532393139303530353635623566363030313630303136303430316230333832313131353631346534643537363134653464363134646137353635623530363031663031363031663139313636303230303139303536356235663832363031663833303131323631346536613537356638306664356238313531363134653764363134653738383236313465333535363562363134653035353635623831383135323834363032303833383630313031313131353631346539313537356638306664356236313065646438323630323038333031363032303837303136313462643735363562356636303230383238343033313231353631346562323537356638306664356238313531363030313630303136303430316230333831313131353631346563373537356638306664356236313065646438343832383530313631346535623536356236303230383135323566363132303231363032303833303138343631346266393536356235663630323038323834303331323135363134656635353735663830666435623530353139313930353035363562356636303230383238343033313231353631346630633537356638306664356238313335363132303231383136313463613435363562356638303833333536303165313938343336303330313831313236313466326335373566383066643562383330313830333539313530363030313630303136303430316230333832313131353631346634353537356638306664356236303230303139313530363030353831393031623336303338323133313536313333356635373566383066643562363334653438376237313630653031623566353236303332363030343532363032343566666435623566383233353630356531393833333630333031383131323631346638343537356638306664356239313930393130313932393135303530353635623566383236303166383330313132363134663964353735663830666435623831333536313466616236313465373838323631346533353536356238313831353238343630323038333836303130313131313536313466626635373566383066643562383136303230383530313630323038333031333735663931383130313630323030313931393039313532393339323530353035303536356235663630363038323336303331323135363134666562353735663830666435623631346666333631346462623536356238323335363030313630303136303430316230333830383231313135363135303039353735663830666435623631353031353336383338373031363134663865353635623833353236303230383530313335393135303830383231313135363135303261353735663830666435623530363135303337333638323836303136313466386535363562363032303833303135323530363034303833303133353631353034623831363134616264353635623630343038323031353239323931353035303536356235663832353136313466383438313834363032303837303136313462643735363562363031663832313131353631303464353537383035663532363032303566323036303166383430313630303531633831303136303230383531303135363135303863353735303830356236303166383430313630303531633832303139313530356238313831313031353631313935653537356638313535363030313031363135303938353635623831353136303031363030313630343031623033383131313135363135306334353736313530633436313464613735363562363135306438383136313530643238343534363134643631353635623834363135303637353635623630323038303630316638333131363030313831313436313531306235373566383431353631353066343537353038353833303135313562356631393630303338363930316231633139313636303031383539303162313738353535363131303039353635623566383538313532363032303831323036303166313938363136393135623832383131303135363135313339353738383836303135313832353539343834303139343630303139303931303139303834303136313531316135363562353038353832313031353631353135363537383738353031353135663139363030333838393031623630663831363163313931363831353535623530353035303530353036303031393038313162303139303535353035363562363334653438376237313630653031623566353236303131363030343532363032343566666435623830383230313830383231313135363130646664353736313064666436313531363635363562356636336666666666666666383038333136383138313033363135316135353736313531613536313531363635363562363030313031393339323530353035303536356238303832303238313135383238323034383431343137363130646664353736313064666436313531363635363562356638303833333536303165313938343336303330313831313236313531646235373566383066643562383330313630323038313031393235303335393035303630303136303031363034303162303338313131313536313531663935373566383066643562383033363033383231333135363133333566353735663830666435623831383335323831383136303230383530313337353035663832383230313630323039303831303139313930393135323630316639303931303136303166313931363930393130313031393035363562356638333833383535323630323038303836303139353530383038353630303531623833303130313834356635623837383131303135363135326534353738343833303336303166313930313839353238313335333638383930303336303565313930313831313236313532366235373566383066643562383730313630363036313532373938323830363135316336353635623832383735323631353238393833383830313832383436313532303735363562393235303530353036313532393938363833303138333631353163363536356238363833303338383838303135323631353261623833383238343631353230373536356239323530353035303630343038303833303133353932353036313532633038333631346162643536356236303031363030313630343031623033393239303932313639343930393130313933393039333532393738333031393739303833303139303630303130313631353234363536356235303930393739363530353035303530353035303530353635623630323038313532383133353630323038323031353236303230383230313335363034303832303135323566363034303833303133353631353331353831363134636134353635623630303136303031363061303162303331363630363038333831303139313930393135323833303133353336383439303033363031653139303138313132363135333363353735663830666435623833303136303230383130313930333536303031363030313630343031623033383131313135363135333537353735663830666435623830363030353162333630333832313331353631353336383537356638306664356236303830383038353031353236313334653036306130383530313832383436313532326635363562356638323631353339363537363334653438376237313630653031623566353236303132363030343532363032343566666435623530303439303536356236303230383130313630303438333130363135336166353736313533616636313462616635363562393139303532393035363562356638303566363036303834383630333132313536313533633735373566383066643562383335313932353036303230383430313531363135336439383136313461626435363562363034303835303135313930393235303631353365613831363134616264353635623830393135303530393235303932353039323536356235663830363034303833383530333132313536313534303635373566383066643562383235313931353036303230383330313531363134636562383136313439616435363562356636303230383038333532356638343534363135343261383136313464363135363562383036303230383730313532363034303630303138303834313635663831313436313534346235373630303138313134363135343637353736313534393435363562363066663139383531363630343038613031353236303430383431353135363030353162386130313031393535303631353439343536356238393566353236303230356632303566356238353831313031353631353438623537383135343862383230313836303135323930383330313930383830313631353437303536356238613031363034303031393635303530356235303933393839373530353035303530353035303530353035363562383138333832333735663931303139303831353239313930353035363562363030313630303136303430316230333831383131363833383231363031393038303832313131353631323135303537363132313530363135313636353635623630303136303031363034303162303338323831313638323832313630333930383038323131313536313231353035373631323135303631353136363536356235663830363034303833383530333132313536313535303235373566383066643562383235313630303136303031363034303162303338303832313131353631353531383537356638306664356239303834303139303630363038323837303331323135363135353262353735663830666435623631353533333631346462623536356238323531383135323630323038333031353136313535343538313631346361343536356236303230383230313532363034303833303135313832383131313135363135353562353735663830666435623631353536373838383238363031363134653562353635623630343038333031353235303830393435303530353035303630323038333031353136313463656238313631343961643536356235663830363034303833383530333132313536313535393235373566383066643562383235313931353036303230383330313531363134636562383136313461626435363562393438353532363030313630303136303430316230333933383431363630323038363031353239313833313636303430383530313532383231363630363038343031353231363630383038323031353236306130303139303536356238313831303338313831313131353631306466643537363130646664363135313636353635623630303136303031363034303162303338313831313638333832313630323830383231363931393038323831313436313536303835373631353630383631353136363536356235303530393239313530353035363562356638323335363033653139383333363033303138313132363134663834353735663830666435623566383038333335363031653139383433363033303138313132363135363339353735663830666435623833303138303335393135303630303136303031363034303162303338323131313536313536353235373566383066643562363032303031393135303336383139303033383231333135363133333566353735663830666435623630323038313532356636313065646436303230383330313834383636313532303735363562356636303430383233363033313231353631353638393537356638306664356236313536393136313464653335363562363135363961383336313439626135363562383135323630323038303834303133353630303136303031363034303162303338303832313131353631353662363537356638306664356239303835303139303336363031663833303131323631353663383537356638306664356238313335383138313131313536313536646135373631353664613631346461373536356238303630303531623931353036313536656238343833303136313465303535363562383138313532393138333031383430313931383438313031393033363834313131353631353730343537356638306664356239333835303139333562383338353130313536313537326535373834333539323530363135373165383336313463613435363562383238323532393338353031393339303835303139303631353730393536356239343836303139343930393435323530393239353934353035303530353035303536356235663630343038333031363366666666666666663833353131363834353236303230383038343031353136303430363032303837303135323832383135313830383535323630363038383031393135303630323038333031393435303566393235303562383038333130313536313234326635373834353136303031363030313630613031623033313638323532393338333031393336303031393239303932303139313930383330313930363135373732353635623630323038313532383135313630323038323031353235663630323038333031353136306530363034303834303135323631353763313631303130303834303138323631346266393536356239303530363034303834303135313630316631393830383538343033303136303630383630313532363135376466383338333631346266393536356239323530363030313630303136303430316230333630363038373031353131363630383038363031353236303830383630313531393135303830383538343033303136306130383630313532363135383066383338333631353734303536356239323530363061303836303135313931353038303835383430333031363063303836303135323530363135383264383238323631353734303536356239313530353036306330383430313531363135383461363065303835303138323630303136303031363034303162303331363930353235363562353039333932353035303530353635623566383036303430383338353033313231353631353836333537356638306664356238323531393135303630323038333031353136303031363030313630343031623033383131313135363135383766353735663830666435623631353838623835383238363031363134653562353635623931353035303932353039323930353035363562356636303230383238343033313231353631353861353537356638306664356236313230323138323631346161633536356235663630323038323834303331323135363135386265353735663830666435623831333536306666383131363831313436313230323135373566383066643562356636303031363030313630343031623033383038333136383138313033363135316135353736313531613536313531363635363562356636303230383238343033313231353631353866393537356638306664356238313531363132303231383136313439616435366665613136343733366636633633343330303038313930303061", +// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. +type WarpBlockHash struct { + SourceChainID [32]byte + BlockHash [32]byte } -// ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20TokenStakingManagerMetaData.ABI instead. -var ERC20TokenStakingManagerABI = ERC20TokenStakingManagerMetaData.ABI +// WarpMessage is an auto generated low-level Go binding around an user-defined struct. +type WarpMessage struct { + SourceChainID [32]byte + OriginSenderAddress common.Address + Payload []byte +} -// ERC20TokenStakingManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20TokenStakingManagerMetaData.Bin instead. -var ERC20TokenStakingManagerBin = ERC20TokenStakingManagerMetaData.Bin +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", +} -// DeployERC20TokenStakingManager deploys a new Ethereum contract, binding an instance of ERC20TokenStakingManager to it. -func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ERC20TokenStakingManager, error) { - parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -113,111 +137,111 @@ func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.Contra return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20TokenStakingManagerBin), backend, init) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil } -// ERC20TokenStakingManager is an auto generated Go binding around an Ethereum contract. -type ERC20TokenStakingManager struct { - ERC20TokenStakingManagerCaller // Read-only binding to the contract - ERC20TokenStakingManagerTransactor // Write-only binding to the contract - ERC20TokenStakingManagerFilterer // Log filterer for contract events +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events } -// ERC20TokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerCaller struct { +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20TokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerTransactor struct { +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20TokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20TokenStakingManagerFilterer struct { +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20TokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// AddressSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ERC20TokenStakingManagerSession struct { - Contract *ERC20TokenStakingManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20TokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ERC20TokenStakingManagerCallerSession struct { - Contract *ERC20TokenStakingManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC20TokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ERC20TokenStakingManagerTransactorSession struct { - Contract *ERC20TokenStakingManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20TokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20TokenStakingManagerRaw struct { - Contract *ERC20TokenStakingManager // Generic contract binding to access the raw methods on +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on } -// ERC20TokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerCallerRaw struct { - Contract *ERC20TokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on } -// ERC20TokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerTransactorRaw struct { - Contract *ERC20TokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on } -// NewERC20TokenStakingManager creates a new instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManager(address common.Address, backend bind.ContractBackend) (*ERC20TokenStakingManager, error) { - contract, err := bindERC20TokenStakingManager(address, backend, backend, backend) +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil } -// NewERC20TokenStakingManagerCaller creates a new read-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*ERC20TokenStakingManagerCaller, error) { - contract, err := bindERC20TokenStakingManager(address, caller, nil, nil) +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC20TokenStakingManagerCaller{contract: contract}, nil + return &AddressCaller{contract: contract}, nil } -// NewERC20TokenStakingManagerTransactor creates a new write-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20TokenStakingManagerTransactor, error) { - contract, err := bindERC20TokenStakingManager(address, nil, transactor, nil) +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC20TokenStakingManagerTransactor{contract: contract}, nil + return &AddressTransactor{contract: contract}, nil } -// NewERC20TokenStakingManagerFilterer creates a new log filterer instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20TokenStakingManagerFilterer, error) { - contract, err := bindERC20TokenStakingManager(address, nil, nil, filterer) +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC20TokenStakingManagerFilterer{contract: contract}, nil + return &AddressFilterer{contract: contract}, nil } -// bindERC20TokenStakingManager binds a generic wrapper to an already deployed contract. -func bindERC20TokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() if err != nil { return nil, err } @@ -228,480 +252,600 @@ func bindERC20TokenStakingManager(address common.Address, caller bind.ContractCa // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerCaller.contract.Call(opts, result, method, params...) +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transfer(opts) +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transact(opts, method, params...) +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20TokenStakingManager.Contract.contract.Call(opts, result, method, params...) +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.contract.Transfer(opts) +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) +// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. +var ContextUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} - return out0, err +// ContextUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextUpgradeableMetaData.ABI instead. +var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI +// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. +type ContextUpgradeable struct { + ContextUpgradeableCaller // Read-only binding to the contract + ContextUpgradeableTransactor // Write-only binding to the contract + ContextUpgradeableFilterer // Log filterer for contract events } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { - return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) +// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) +// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - +// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) +// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextUpgradeableSession struct { + Contract *ContextUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) +// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextUpgradeableCallerSession struct { + Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - +// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextUpgradeableTransactorSession struct { + Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) +// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextUpgradeableRaw struct { + Contract *ContextUpgradeable // Generic contract binding to access the raw methods on } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) +// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextUpgradeableCallerRaw struct { + Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on } -// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. -// -// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ERC20STAKINGMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ERC20_STAKING_MANAGER_STORAGE_LOCATION") +// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactorRaw struct { + Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} +// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { + contract, err := bindContextUpgradeable(address, backend, backend, backend) if err != nil { - return *new([32]byte), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - + return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil } -// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. -// -// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { + contract, err := bindContextUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableCaller{contract: contract}, nil } -// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. -// -// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { + contract, err := bindContextUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableTransactor{contract: contract}, nil } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - +// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { + contract, err := bindContextUpgradeable(address, nil, nil, filterer) if err != nil { - return *new(uint8), err + return nil, err } + return &ContextUpgradeableFilterer{contract: contract}, nil +} - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) +// bindContextUpgradeable binds a generic wrapper to an already deployed contract. +func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} - return out0, err +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) +} +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transfer(opts) +} - if err != nil { - return *new(uint16), err - } +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) +} - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) +// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. +type ContextUpgradeableInitializedIterator struct { + Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log - return out0, err + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContextUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContextUpgradeableInitializedIterator) Error() error { + return it.fail } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContextUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) +// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. +type ContextUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { + logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { - return *new(uint8), err + return nil, err } + return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { - return out0, err + logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) +// ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. +var ERC20TokenStakingManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615ce9380380615ce983398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615b9c8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638280a25a11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b80638280a25a1461037f57806393e245981461038757806398f3e2b41461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360305d621161016557806360305d6214610322578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee5780635297fae61461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b61021461031d366004614d2b565b610f4f565b61032a601481565b60405163ffffffff909116815260200161023f565b61030161034d366004614d53565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b610231603081565b610214610395366004614c00565b61129d565b6102146103a8366004614d2b565b611368565b6103016103bb366004614d6e565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615ac783398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615ae783398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614de4565b6102946202a30081565b6103015f80516020615aa783398151915281565b61021461049b366004614e78565b611cc5565b6103016104ae366004614eb6565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b478339815191526020526040808220815160e0810190925280545f80516020615ae783398151915293929190829060ff16600581111561053557610535614d8e565b600581111561054657610546614d8e565b815260200160018201805461055a90614f21565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f21565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d8e565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d919081019061506d565b6040518263ffffffff1660e01b8152600401610729919061509e565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076991906150b0565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615ae78339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083391906150b0565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150c7565b6001600160a01b0316146108b05761088b60608401604085016150c7565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150e2565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150e2565b8363ffffffff168181106108f7576108f7615127565b9050602002810190610909919061513b565b610912906151a6565b80516040519192505f91600888019161092a91615221565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da919060040161509e565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391615221565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e191906150b0565b90508086600801835f01516040516109f99190615221565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d8e565b021790555060208201516001820190610a94908261527b565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b3991168561534a565b8251604051919550610b4a91615221565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f9061535d565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff168361537f565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c30919061509e565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f91906150b0565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154c1565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea919081019061506d565b90505f600282604051610cfd9190615221565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b91906150b0565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d8e565b14610dea578060405163170cc93360e21b81526004016104da9190614f59565b61076983836122a8565b5f805f80516020615ac783398151915260030154610e12908461554c565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615ac78339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d8e565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b2783398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b2783398151915255565b949350505050565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff166003811115610f9c57610f9c614d8e565b6003811115610fad57610fad614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d8e565b1461105b578251604051633b0d540d60e21b81526104da919060040161556b565b60048151600581111561107057611070614d8e565b036110865761107e85612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab8a612157565b604001516040518263ffffffff1660e01b81526004016110cb919061509e565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190615585565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b03841661537f565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b5f80516020615ac78339815191525f6112b583611b76565b51905060048160058111156112cc576112cc614d8e565b146112ec578060405163170cc93360e21b81526004016104da9190614f59565b5f8381526005830160205260409020546001600160a01b0316331461133257335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b61137061277a565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff1660038111156113bd576113bd614d8e565b60038111156113ce576113ce614d8e565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561144757611447614d8e565b14611468578051604051633b0d540d60e21b81526104da919060040161556b565b60046114778260400151611b76565b51600581111561148957611489614d8e565b14611588575f61149885612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016114d7919061509e565b606060405180830381865af41580156114f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115169190615585565b5091509150818460400151146115425760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561158457604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61159183612de9565b50506115a960015f80516020615b2783398151915255565b5050565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b2783398151915255565b5f80516020615ae78339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c919061509e565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155c5565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f21565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d8e565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff16600381111561181b5761181b614d8e565b600381111561182c5761182c614d8e565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d8e565b141580156118c657506003815160038111156118c3576118c3614d8e565b14155b156118e7578051604051633b0d540d60e21b81526104da919060040161556b565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d6919081019061506d565b6040518263ffffffff1660e01b81526004016119f2919061509e565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3291906150b0565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615ae78339815191529190611a8090614f21565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d8e565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155e8565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906150b0565b611b7e614b4b565b5f8281525f80516020615b47833981519152602052604090819020815160e0810190925280545f80516020615ae7833981519152929190829060ff166005811115611bcb57611bcb614d8e565b6005811115611bdc57611bdc614d8e565b8152602001600182018054611bf090614f21565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f21565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615ae7833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615672565b90815260200160405180910390205491505092915050565b5f8381525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac78339815191529284929091829060ff166003811115611e4d57611e4d614d8e565b6003811115611e5e57611e5e614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d8e565b14611f0c578251604051633b0d540d60e21b81526104da919060040161556b565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f45573361130d565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615681565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d8e565b036120eb5760028401546080840151611fdf916001600160401b031690615681565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e91849161205991906156a1565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d8e565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f59565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156c1565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156c1565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a391906150b0565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b8152600401612442919061509e565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615751565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615ac7833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615ac7833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e6573361130d565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615681565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274491906150b0565b905080846008015f8a81526020019081526020015f205f828254612768919061534a565b90915550501515979650505050505050565b5f80516020615b278339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615ae78339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d919061509e565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155c5565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d8e565b60058111156128b4576128b4614d8e565b81526020016001820180546128c890614f21565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f21565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d8e565b141580156129cb57506001815160058111156129c8576129c8614d8e565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f59565b600381516005811115612a0157612a01614d8e565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a9190615221565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d8e565b021790555060208201516001820190612a87908261527b565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d8e565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615aa783398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615aa7833981519152546115a9906001600160a01b03168383613987565b60015f80516020615b2783398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615ac783398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff166003811115612e3657612e36614d8e565b6003811115612e4757612e47614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615681565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff168561537f565b612f9e919061554c565b915081866008015f8681526020019081526020015f205f828254612fc2919061534a565b90915550612fd290508284615774565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615ac78339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d8e565b146130c657805160405163170cc93360e21b81526104da9190600401614f59565b5f8282608001516130d79190615681565b905083600201600a9054906101000a90046001600160401b031682604001516131009190615787565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d8e565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6115a9816140b0565b5f8281525f80516020615b47833981519152602052604081206002015481905f80516020615ae783398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613451919081019061506d565b6040518263ffffffff1660e01b815260040161346d919061509e565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad91906150b0565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615ac783398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d8e565b148061355c575060048251600581111561355a5761355a614d8e565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d8e565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f59565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a91906150b0565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b478339815191526020526040808220815160e0810190925280545f80516020615ae783398151915293929190829060ff1660058111156136f8576136f8614d8e565b600581111561370957613709614d8e565b815260200160018201805461371d90614f21565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f21565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d8e565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d8e565b021790555060208201516001820190613892908261527b565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615aa7833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615ae783398151915242613a6c6060860160408701614d53565b6001600160401b0316111580613aa65750613a8a6202a3004261534a565b613a9a6060860160408701614d53565b6001600160401b031610155b15613ae057613abb6060850160408601614d53565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af060608601866157b2565b61456a565b613b05613af060808601866157b2565b6030613b1460208601866157c6565b905014613b4657613b2860208501856157c6565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157c6565b90505f03613b7d57613b6284806157c6565b604051633e08a12560e11b81526004016104da929190615808565b5f60088201613b8c86806157c6565b604051613b9a929190615672565b90815260200160405180910390205414613bd357613bb884806157c6565b60405163a41f772f60e01b81526004016104da929190615808565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157c6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157c6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d53565b6001600160401b03168152602001613cc660608b018b6157b2565b613ccf9061581b565b8152602001613ce160808b018b6157b2565b613cea9061581b565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d18919061593d565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d5991908101906159f4565b5f82815260068601602052604090209193509150613d77828261527b565b508160088401613d8788806157c6565b604051613d95929190615672565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd190859060040161509e565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1191906150b0565b6040805160e081019091529091508060018152602001613e3189806157c6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d8e565b021790555060208201516001820190613ed9908261527b565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157c6565b604051613f85929190615672565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d53565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d53565b61408260e0860160c08701615a37565b614093610100870160e08801615a50565b6101008701356140ab61014089016101208a016150c7565b6146fc565b6140b8613ff1565b5f80516020615aa78339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615ae78339815191525f6001600160401b03808416908516111561414c5761414583856156a1565b9050614159565b61415684846156a1565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b03169061534a565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615681565b6001600160401b03169052505b6060810151614210906064615787565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff1661537f565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b031681604001818151614286919061534a565b9052506040810180516001600160401b03871691906142a6908390615774565b905250600184015460408201516064916142cb91600160401b90910460ff169061537f565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b478339815191526020526040812060020180545f80516020615ae7833981519152919060089061438590600160401b90046001600160401b0316615a70565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a8b565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b91906150b0565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa91906150b0565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a8282615774565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150e2565b151590505b156145de576145a96020820182614c86565b6145b660208301836150e2565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150e2565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150e2565b90508110156115a95761463960208301836150e2565b614644600184615774565b81811061465357614653615127565b905060200201602081019061466891906150c7565b6001600160a01b031661467e60208401846150e2565b8381811061468e5761468e615127565b90506020020160208101906146a391906150c7565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615ac783398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615ae783398151915290815560146149336060840160408501615a50565b60ff161180614952575061494d6060830160408401615a50565b60ff16155b15614986576149676060830160408401615a50565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a50565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d53565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a369190615221565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f21565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f8060408385031215614d3c575f80fd5b614d4583614bad565b946020939093013593505050565b5f60208284031215614d63575f80fd5b813561215081614cb0565b5f8060408385031215614d7f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614db257614db2614d8e565b9052565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152614df6602082018351614da2565b5f602083015160e06040840152614e11610100840182614db6565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614e8b575f80fd5b61014080821215614e9a575f80fd5b8493508301359050614eab81614e64565b809150509250929050565b5f8060208385031215614ec7575f80fd5b82356001600160401b0380821115614edd575f80fd5b818501915085601f830112614ef0575f80fd5b813581811115614efe575f80fd5b866020828501011115614f0f575f80fd5b60209290920196919550909350505050565b600181811c90821680614f3557607f821691505b602082108103614f5357634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614da2565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614f9d57614f9d614f67565b60405290565b604080519081016001600160401b0381118282101715614f9d57614f9d614f67565b604051601f8201601f191681016001600160401b0381118282101715614fed57614fed614f67565b604052919050565b5f6001600160401b0382111561500d5761500d614f67565b50601f01601f191660200190565b5f82601f83011261502a575f80fd5b815161503d61503882614ff5565b614fc5565b818152846020838601011115615051575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561507d575f80fd5b81516001600160401b03811115615092575f80fd5b610f478482850161501b565b602081525f6121506020830184614db6565b5f602082840312156150c0575f80fd5b5051919050565b5f602082840312156150d7575f80fd5b813561215081614e64565b5f808335601e198436030181126150f7575f80fd5b8301803591506001600160401b03821115615110575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261514f575f80fd5b9190910192915050565b5f82601f830112615168575f80fd5b813561517661503882614ff5565b81815284602083860101111561518a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151b6575f80fd5b6151be614f7b565b82356001600160401b03808211156151d4575f80fd5b6151e036838701615159565b835260208501359150808211156151f5575f80fd5b5061520236828601615159565b602083015250604083013561521681614cb0565b604082015292915050565b5f82518060208501845e5f920191825250919050565b601f8211156104e357805f5260205f20601f840160051c8101602085101561525c5750805b601f840160051c820191505b81811015611a32575f8155600101615268565b81516001600160401b0381111561529457615294614f67565b6152a8816152a28454614f21565b84615237565b602080601f8311600181146152db575f84156152c45750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b82811015615309578886015182559484019460019091019084016152ea565b508582101561532657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e48615336565b5f63ffffffff80831681810361537557615375615336565b6001019392505050565b8082028115828204841417610e4857610e48615336565b5f808335601e198436030181126153ab575f80fd5b83016020810192503590506001600160401b038111156153c9575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154b457848303601f19018952813536889003605e1901811261543b575f80fd5b870160606154498280615396565b82875261545983880182846153d7565b9250505061546986830183615396565b8683038888015261547b8382846153d7565b92505050604080830135925061549083614cb0565b6001600160401b039290921694909101939093529783019790830190600101615416565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154e581614e64565b6001600160a01b031660608381019190915283013536849003601e1901811261550c575f80fd5b83016020810190356001600160401b03811115615527575f80fd5b8060051b3603821315615538575f80fd5b60808085015261369a60a0850182846153ff565b5f8261556657634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061557f5761557f614d8e565b91905290565b5f805f60608486031215615597575f80fd5b8351925060208401516155a981614cb0565b60408501519092506155ba81614cb0565b809150509250925092565b5f80604083850312156155d6575f80fd5b825191506020830151614eab81614ba0565b5f60208083525f84546155fa81614f21565b806020870152604060018084165f811461561b576001811461563757615664565b60ff19851660408a0152604084151560051b8a01019550615664565b895f5260205f205f5b8581101561565b5781548b8201860152908301908801615640565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561226657612266615336565b6001600160401b0382811682821603908082111561226657612266615336565b5f80604083850312156156d2575f80fd5b82516001600160401b03808211156156e8575f80fd5b90840190606082870312156156fb575f80fd5b615703614f7b565b82518152602083015161571581614e64565b602082015260408301518281111561572b575f80fd5b6157378882860161501b565b6040830152508094505050506020830151614eab81614ba0565b5f8060408385031215615762575f80fd5b825191506020830151614eab81614cb0565b81810381811115610e4857610e48615336565b6001600160401b038181168382160280821691908281146157aa576157aa615336565b505092915050565b5f8235603e1983360301811261514f575f80fd5b5f808335601e198436030181126157db575f80fd5b8301803591506001600160401b038211156157f4575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153d7565b5f6040823603121561582b575f80fd5b615833614fa3565b61583c83614bad565b81526020808401356001600160401b0380821115615858575f80fd5b9085019036601f83011261586a575f80fd5b81358181111561587c5761587c614f67565b8060051b915061588d848301614fc5565b81815291830184019184810190368411156158a6575f80fd5b938501935b838510156158d057843592506158c083614e64565b82825293850193908501906158ab565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b03168252938301936001929092019190830190615914565b60208152815160208201525f602083015160e06040840152615963610100840182614db6565b90506040840151601f19808584030160608601526159818383614db6565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159b183836158e2565b925060a08601519150808584030160c0860152506159cf82826158e2565b91505060c08401516159ec60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a05575f80fd5b8251915060208301516001600160401b03811115615a21575f80fd5b615a2d8582860161501b565b9150509250929050565b5f60208284031215615a47575f80fd5b61215082614c9f565b5f60208284031215615a60575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361537557615375615336565b5f60208284031215615a9b575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220a89ccdd4358b1dfe7e9960706f3b2feebe2bdc22264393e05dcb591ea6a0049b64736f6c63430008190033", } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") +// ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20TokenStakingManagerMetaData.ABI instead. +var ERC20TokenStakingManagerABI = ERC20TokenStakingManagerMetaData.ABI + +// ERC20TokenStakingManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20TokenStakingManagerMetaData.Bin instead. +var ERC20TokenStakingManagerBin = ERC20TokenStakingManagerMetaData.Bin +// DeployERC20TokenStakingManager deploys a new Ethereum contract, binding an instance of ERC20TokenStakingManager to it. +func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ERC20TokenStakingManager, error) { + parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() if err != nil { - return *new([32]byte), err + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err + validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) + ERC20TokenStakingManagerBin = strings.ReplaceAll(ERC20TokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20TokenStakingManagerBin), backend, init) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// ERC20TokenStakingManager is an auto generated Go binding around an Ethereum contract. +type ERC20TokenStakingManager struct { + ERC20TokenStakingManagerCaller // Read-only binding to the contract + ERC20TokenStakingManagerTransactor // Write-only binding to the contract + ERC20TokenStakingManagerFilterer // Log filterer for contract events } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// ERC20TokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") +// ERC20TokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - if err != nil { - return *new([32]byte), err - } +// ERC20TokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20TokenStakingManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) +// ERC20TokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20TokenStakingManagerSession struct { + Contract *ERC20TokenStakingManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} - return out0, err +// ERC20TokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20TokenStakingManagerCallerSession struct { + Contract *ERC20TokenStakingManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} +// ERC20TokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20TokenStakingManagerTransactorSession struct { + Contract *ERC20TokenStakingManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +// ERC20TokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20TokenStakingManagerRaw struct { + Contract *ERC20TokenStakingManager // Generic contract binding to access the raw methods on } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +// ERC20TokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerCallerRaw struct { + Contract *ERC20TokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") +// ERC20TokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerTransactorRaw struct { + Contract *ERC20TokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +} +// NewERC20TokenStakingManager creates a new instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManager(address common.Address, backend bind.ContractBackend) (*ERC20TokenStakingManager, error) { + contract, err := bindERC20TokenStakingManager(address, backend, backend, backend) if err != nil { - return *new([32]byte), err + return nil, err } + return &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil +} - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) +// NewERC20TokenStakingManagerCaller creates a new read-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*ERC20TokenStakingManagerCaller, error) { + contract, err := bindERC20TokenStakingManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerCaller{contract: contract}, nil +} - return out0, err +// NewERC20TokenStakingManagerTransactor creates a new write-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20TokenStakingManagerTransactor, error) { + contract, err := bindERC20TokenStakingManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerTransactor{contract: contract}, nil +} +// NewERC20TokenStakingManagerFilterer creates a new log filterer instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20TokenStakingManagerFilterer, error) { + contract, err := bindERC20TokenStakingManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerFilterer{contract: contract}, nil } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// bindERC20TokenStakingManager binds a generic wrapper to an already deployed contract. +func bindERC20TokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerCaller.contract.Call(opts, result, method, params...) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20TokenStakingManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") if err != nil { - return *new(common.Address), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { + return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") if err != nil { - return *new(Validator), err + return *new(uint16), err } - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) return out0, err } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") if err != nil { - return *new(uint64), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { +// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ERC20STAKINGMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ERC20_STAKING_MANAGER_STORAGE_LOCATION") if err != nil { return *new([32]byte), err @@ -713,917 +857,14503 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) RegisteredValid } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) +// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) +// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. // -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") if err != nil { - return *new(uint64), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err } -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. // -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) } -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. // -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) } -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") if err != nil { - return *new(*big.Int), err + return *new(uint16), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) return out0, err } -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) } -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) } -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. // -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) -} +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) -} + if err != nil { + return *new(uint64), err + } -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) -} + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} + return out0, err -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. // -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initialize", settings, token) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { + return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) } -// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) } -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID, delegationAmount) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + } -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, delegationAmount) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) } -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, delegationAmount) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) } -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) } -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. // -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) } -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. // -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. // -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) } -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.SubmitUptimeProof(&_ERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) } -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.SubmitUptimeProof(&_ERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) } -// ERC20TokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegationEndedIterator struct { - Event *ERC20TokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +} - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. +// +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initialize", settings, token) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. +// +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. +// +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID, delegationAmount) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, delegationAmount) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, delegationAmount) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.SubmitUptimeProof(&_ERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.SubmitUptimeProof(&_ERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// ERC20TokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegationEndedIterator struct { + Event *ERC20TokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerDelegationEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerDelegationEnded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*ERC20TokenStakingManagerDelegationEnded, error) { + event := new(ERC20TokenStakingManagerDelegationEnded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorAddedIterator struct { + Event *ERC20TokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*ERC20TokenStakingManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerDelegatorAddedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerDelegatorAdded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*ERC20TokenStakingManagerDelegatorAdded, error) { + event := new(ERC20TokenStakingManagerDelegatorAdded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRegisteredIterator struct { + Event *ERC20TokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerDelegatorRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*ERC20TokenStakingManagerDelegatorRegistered, error) { + event := new(ERC20TokenStakingManagerDelegatorRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { + Event *ERC20TokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerDelegatorRemovalInitialized, error) { + event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialValidatorCreatedIterator struct { + Event *ERC20TokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerInitialValidatorCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ERC20TokenStakingManagerInitialValidatorCreated, error) { + event := new(ERC20TokenStakingManagerInitialValidatorCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitializedIterator struct { + Event *ERC20TokenStakingManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialized(log types.Log) (*ERC20TokenStakingManagerInitialized, error) { + event := new(ERC20TokenStakingManagerInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerUptimeUpdatedIterator struct { + Event *ERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerUptimeUpdatedIterator{contract: _ERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerUptimeUpdated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*ERC20TokenStakingManagerUptimeUpdated, error) { + event := new(ERC20TokenStakingManagerUptimeUpdated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodCreatedIterator struct { + Event *ERC20TokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerValidationPeriodCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ERC20TokenStakingManagerValidationPeriodCreated, error) { + event := new(ERC20TokenStakingManagerValidationPeriodCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodEndedIterator struct { + Event *ERC20TokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ERC20TokenStakingManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerValidationPeriodEnded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ERC20TokenStakingManagerValidationPeriodEnded, error) { + event := new(ERC20TokenStakingManagerValidationPeriodEnded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { + Event *ERC20TokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerValidationPeriodRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ERC20TokenStakingManagerValidationPeriodRegistered, error) { + event := new(ERC20TokenStakingManagerValidationPeriodRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorRemovalInitializedIterator struct { + Event *ERC20TokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerValidatorRemovalInitialized, error) { + event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorWeightUpdateIterator struct { + Event *ERC20TokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20TokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ERC20TokenStakingManagerValidatorWeightUpdate, error) { + event := new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MintableMetaData contains all meta data concerning the IERC20Mintable contract. +var IERC20MintableMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20MintableABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MintableMetaData.ABI instead. +var IERC20MintableABI = IERC20MintableMetaData.ABI + +// IERC20Mintable is an auto generated Go binding around an Ethereum contract. +type IERC20Mintable struct { + IERC20MintableCaller // Read-only binding to the contract + IERC20MintableTransactor // Write-only binding to the contract + IERC20MintableFilterer // Log filterer for contract events +} + +// IERC20MintableCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20MintableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MintableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20MintableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MintableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20MintableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MintableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20MintableSession struct { + Contract *IERC20Mintable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MintableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20MintableCallerSession struct { + Contract *IERC20MintableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20MintableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20MintableTransactorSession struct { + Contract *IERC20MintableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MintableRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20MintableRaw struct { + Contract *IERC20Mintable // Generic contract binding to access the raw methods on +} + +// IERC20MintableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20MintableCallerRaw struct { + Contract *IERC20MintableCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20MintableTransactorRaw struct { + Contract *IERC20MintableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Mintable creates a new instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20Mintable(address common.Address, backend bind.ContractBackend) (*IERC20Mintable, error) { + contract, err := bindIERC20Mintable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Mintable{IERC20MintableCaller: IERC20MintableCaller{contract: contract}, IERC20MintableTransactor: IERC20MintableTransactor{contract: contract}, IERC20MintableFilterer: IERC20MintableFilterer{contract: contract}}, nil +} + +// NewIERC20MintableCaller creates a new read-only instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*IERC20MintableCaller, error) { + contract, err := bindIERC20Mintable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20MintableCaller{contract: contract}, nil +} + +// NewIERC20MintableTransactor creates a new write-only instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MintableTransactor, error) { + contract, err := bindIERC20Mintable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20MintableTransactor{contract: contract}, nil +} + +// NewIERC20MintableFilterer creates a new log filterer instance of IERC20Mintable, bound to a specific deployed contract. +func NewIERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MintableFilterer, error) { + contract, err := bindIERC20Mintable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20MintableFilterer{contract: contract}, nil +} + +// bindIERC20Mintable binds a generic wrapper to an already deployed contract. +func bindIERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MintableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Mintable *IERC20MintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Mintable.Contract.IERC20MintableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Mintable *IERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Mintable *IERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Mintable *IERC20MintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Mintable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Mintable *IERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Mintable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Mintable *IERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Mintable.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Mintable *IERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Mintable.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Mintable *IERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Mintable *IERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Mintable *IERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20Mintable.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Mintable *IERC20MintableSession) TotalSupply() (*big.Int, error) { + return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Mintable *IERC20MintableCallerSession) TotalSupply() (*big.Int, error) { + return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns() +func (_IERC20Mintable *IERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "mint", account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns() +func (_IERC20Mintable *IERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns() +func (_IERC20Mintable *IERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Mintable *IERC20MintableTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) +} + +// IERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Mintable contract. +type IERC20MintableApprovalIterator struct { + Event *IERC20MintableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MintableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MintableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MintableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MintableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MintableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MintableApproval represents a Approval event raised by the IERC20Mintable contract. +type IERC20MintableApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Mintable *IERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MintableApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20MintableApprovalIterator{contract: _IERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Mintable *IERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MintableApproval) + if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Mintable *IERC20MintableFilterer) ParseApproval(log types.Log) (*IERC20MintableApproval, error) { + event := new(IERC20MintableApproval) + if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Mintable contract. +type IERC20MintableTransferIterator struct { + Event *IERC20MintableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MintableTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MintableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MintableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MintableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MintableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MintableTransfer represents a Transfer event raised by the IERC20Mintable contract. +type IERC20MintableTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Mintable *IERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MintableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20MintableTransferIterator{contract: _IERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Mintable *IERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MintableTransfer) + if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Mintable *IERC20MintableFilterer) ParseTransfer(log types.Log) (*IERC20MintableTransfer, error) { + event := new(IERC20MintableTransfer) + if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20PermitMetaData contains all meta data concerning the IERC20Permit contract. +var IERC20PermitMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20PermitABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20PermitMetaData.ABI instead. +var IERC20PermitABI = IERC20PermitMetaData.ABI + +// IERC20Permit is an auto generated Go binding around an Ethereum contract. +type IERC20Permit struct { + IERC20PermitCaller // Read-only binding to the contract + IERC20PermitTransactor // Write-only binding to the contract + IERC20PermitFilterer // Log filterer for contract events +} + +// IERC20PermitCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20PermitCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20PermitTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20PermitFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20PermitSession struct { + Contract *IERC20Permit // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20PermitCallerSession struct { + Contract *IERC20PermitCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20PermitTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20PermitTransactorSession struct { + Contract *IERC20PermitTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20PermitRaw struct { + Contract *IERC20Permit // Generic contract binding to access the raw methods on +} + +// IERC20PermitCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20PermitCallerRaw struct { + Contract *IERC20PermitCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20PermitTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20PermitTransactorRaw struct { + Contract *IERC20PermitTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Permit creates a new instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20Permit(address common.Address, backend bind.ContractBackend) (*IERC20Permit, error) { + contract, err := bindIERC20Permit(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Permit{IERC20PermitCaller: IERC20PermitCaller{contract: contract}, IERC20PermitTransactor: IERC20PermitTransactor{contract: contract}, IERC20PermitFilterer: IERC20PermitFilterer{contract: contract}}, nil +} + +// NewIERC20PermitCaller creates a new read-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitCaller(address common.Address, caller bind.ContractCaller) (*IERC20PermitCaller, error) { + contract, err := bindIERC20Permit(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20PermitCaller{contract: contract}, nil +} + +// NewIERC20PermitTransactor creates a new write-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20PermitTransactor, error) { + contract, err := bindIERC20Permit(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20PermitTransactor{contract: contract}, nil +} + +// NewIERC20PermitFilterer creates a new log filterer instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20PermitFilterer, error) { + contract, err := bindIERC20Permit(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20PermitFilterer{contract: contract}, nil +} + +// bindIERC20Permit binds a generic wrapper to an already deployed contract. +func bindIERC20Permit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20PermitMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.IERC20PermitCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// IERC20TokenStakingManagerMetaData contains all meta data concerning the IERC20TokenStakingManager contract. +var IERC20TokenStakingManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20TokenStakingManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20TokenStakingManagerMetaData.ABI instead. +var IERC20TokenStakingManagerABI = IERC20TokenStakingManagerMetaData.ABI + +// IERC20TokenStakingManager is an auto generated Go binding around an Ethereum contract. +type IERC20TokenStakingManager struct { + IERC20TokenStakingManagerCaller // Read-only binding to the contract + IERC20TokenStakingManagerTransactor // Write-only binding to the contract + IERC20TokenStakingManagerFilterer // Log filterer for contract events +} + +// IERC20TokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20TokenStakingManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20TokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20TokenStakingManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20TokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20TokenStakingManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20TokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20TokenStakingManagerSession struct { + Contract *IERC20TokenStakingManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20TokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20TokenStakingManagerCallerSession struct { + Contract *IERC20TokenStakingManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TokenStakingManagerTransactorSession struct { + Contract *IERC20TokenStakingManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20TokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20TokenStakingManagerRaw struct { + Contract *IERC20TokenStakingManager // Generic contract binding to access the raw methods on +} + +// IERC20TokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20TokenStakingManagerCallerRaw struct { + Contract *IERC20TokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TokenStakingManagerTransactorRaw struct { + Contract *IERC20TokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20TokenStakingManager creates a new instance of IERC20TokenStakingManager, bound to a specific deployed contract. +func NewIERC20TokenStakingManager(address common.Address, backend bind.ContractBackend) (*IERC20TokenStakingManager, error) { + contract, err := bindIERC20TokenStakingManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManager{IERC20TokenStakingManagerCaller: IERC20TokenStakingManagerCaller{contract: contract}, IERC20TokenStakingManagerTransactor: IERC20TokenStakingManagerTransactor{contract: contract}, IERC20TokenStakingManagerFilterer: IERC20TokenStakingManagerFilterer{contract: contract}}, nil +} + +// NewIERC20TokenStakingManagerCaller creates a new read-only instance of IERC20TokenStakingManager, bound to a specific deployed contract. +func NewIERC20TokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*IERC20TokenStakingManagerCaller, error) { + contract, err := bindIERC20TokenStakingManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerCaller{contract: contract}, nil +} + +// NewIERC20TokenStakingManagerTransactor creates a new write-only instance of IERC20TokenStakingManager, bound to a specific deployed contract. +func NewIERC20TokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20TokenStakingManagerTransactor, error) { + contract, err := bindIERC20TokenStakingManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerTransactor{contract: contract}, nil +} + +// NewIERC20TokenStakingManagerFilterer creates a new log filterer instance of IERC20TokenStakingManager, bound to a specific deployed contract. +func NewIERC20TokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20TokenStakingManagerFilterer, error) { + contract, err := bindIERC20TokenStakingManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerFilterer{contract: contract}, nil +} + +// bindIERC20TokenStakingManager binds a generic wrapper to an already deployed contract. +func bindIERC20TokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20TokenStakingManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20TokenStakingManager.Contract.IERC20TokenStakingManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.IERC20TokenStakingManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.IERC20TokenStakingManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20TokenStakingManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ClaimDelegationFees(&_IERC20TokenStakingManager.TransactOpts, validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ClaimDelegationFees(&_IERC20TokenStakingManager.TransactOpts, validationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteEndDelegation(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteEndDelegation(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteEndValidation(&_IERC20TokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteEndValidation(&_IERC20TokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 stakeAmount) returns(bytes32) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte, stakeAmount *big.Int) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID, stakeAmount) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 stakeAmount) returns(bytes32) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte, stakeAmount *big.Int) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, validationID, stakeAmount) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 stakeAmount) returns(bytes32) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte, stakeAmount *big.Int) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, validationID, stakeAmount) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeValidatorSet(&_IERC20TokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.InitializeValidatorSet(&_IERC20TokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.SubmitUptimeProof(&_IERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IERC20TokenStakingManager.Contract.SubmitUptimeProof(&_IERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// IERC20TokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegationEndedIterator struct { + Event *IERC20TokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IERC20TokenStakingManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerDelegationEndedIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerDelegationEnded) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*IERC20TokenStakingManagerDelegationEnded, error) { + event := new(IERC20TokenStakingManagerDelegationEnded) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegatorAddedIterator struct { + Event *IERC20TokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IERC20TokenStakingManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerDelegatorAddedIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerDelegatorAdded) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*IERC20TokenStakingManagerDelegatorAdded, error) { + event := new(IERC20TokenStakingManagerDelegatorAdded) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegatorRegisteredIterator struct { + Event *IERC20TokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IERC20TokenStakingManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerDelegatorRegistered) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*IERC20TokenStakingManagerDelegatorRegistered, error) { + event := new(IERC20TokenStakingManagerDelegatorRegistered) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { + Event *IERC20TokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IERC20TokenStakingManagerDelegatorRemovalInitialized, error) { + event := new(IERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerInitialValidatorCreatedIterator struct { + Event *IERC20TokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _IERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerInitialValidatorCreated) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IERC20TokenStakingManagerInitialValidatorCreated, error) { + event := new(IERC20TokenStakingManagerInitialValidatorCreated) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerUptimeUpdatedIterator struct { + Event *IERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IERC20TokenStakingManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerUptimeUpdatedIterator{contract: _IERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerUptimeUpdated) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*IERC20TokenStakingManagerUptimeUpdated, error) { + event := new(IERC20TokenStakingManagerUptimeUpdated) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidationPeriodCreatedIterator struct { + Event *IERC20TokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerValidationPeriodCreated) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IERC20TokenStakingManagerValidationPeriodCreated, error) { + event := new(IERC20TokenStakingManagerValidationPeriodCreated) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidationPeriodEndedIterator struct { + Event *IERC20TokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IERC20TokenStakingManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerValidationPeriodEnded) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IERC20TokenStakingManagerValidationPeriodEnded, error) { + event := new(IERC20TokenStakingManagerValidationPeriodEnded) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { + Event *IERC20TokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerValidationPeriodRegistered) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IERC20TokenStakingManagerValidationPeriodRegistered, error) { + event := new(IERC20TokenStakingManagerValidationPeriodRegistered) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidatorRemovalInitializedIterator struct { + Event *IERC20TokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerValidatorRemovalInitialized) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IERC20TokenStakingManagerValidatorRemovalInitialized, error) { + event := new(IERC20TokenStakingManagerValidatorRemovalInitialized) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidatorWeightUpdateIterator struct { + Event *IERC20TokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20TokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20TokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IERC20TokenStakingManager contract. +type IERC20TokenStakingManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &IERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20TokenStakingManagerValidatorWeightUpdate) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IERC20TokenStakingManagerValidatorWeightUpdate, error) { + event := new(IERC20TokenStakingManagerValidatorWeightUpdate) + if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerMetaData contains all meta data concerning the IPoSValidatorManager contract. +var IPoSValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IPoSValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IPoSValidatorManagerMetaData.ABI instead. +var IPoSValidatorManagerABI = IPoSValidatorManagerMetaData.ABI + +// IPoSValidatorManager is an auto generated Go binding around an Ethereum contract. +type IPoSValidatorManager struct { + IPoSValidatorManagerCaller // Read-only binding to the contract + IPoSValidatorManagerTransactor // Write-only binding to the contract + IPoSValidatorManagerFilterer // Log filterer for contract events +} + +// IPoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPoSValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPoSValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPoSValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPoSValidatorManagerSession struct { + Contract *IPoSValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPoSValidatorManagerCallerSession struct { + Contract *IPoSValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPoSValidatorManagerTransactorSession struct { + Contract *IPoSValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPoSValidatorManagerRaw struct { + Contract *IPoSValidatorManager // Generic contract binding to access the raw methods on +} + +// IPoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPoSValidatorManagerCallerRaw struct { + Contract *IPoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IPoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPoSValidatorManagerTransactorRaw struct { + Contract *IPoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPoSValidatorManager creates a new instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*IPoSValidatorManager, error) { + contract, err := bindIPoSValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPoSValidatorManager{IPoSValidatorManagerCaller: IPoSValidatorManagerCaller{contract: contract}, IPoSValidatorManagerTransactor: IPoSValidatorManagerTransactor{contract: contract}, IPoSValidatorManagerFilterer: IPoSValidatorManagerFilterer{contract: contract}}, nil +} + +// NewIPoSValidatorManagerCaller creates a new read-only instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IPoSValidatorManagerCaller, error) { + contract, err := bindIPoSValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerCaller{contract: contract}, nil +} + +// NewIPoSValidatorManagerTransactor creates a new write-only instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoSValidatorManagerTransactor, error) { + contract, err := bindIPoSValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerTransactor{contract: contract}, nil +} + +// NewIPoSValidatorManagerFilterer creates a new log filterer instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoSValidatorManagerFilterer, error) { + contract, err := bindIPoSValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerFilterer{contract: contract}, nil +} + +// bindIPoSValidatorManager binds a generic wrapper to an already deployed contract. +func bindIPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPoSValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoSValidatorManager.Contract.IPoSValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoSValidatorManager *IPoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoSValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// IPoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegationEndedIterator struct { + Event *IPoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegationEndedIterator{contract: _IPoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegationEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*IPoSValidatorManagerDelegationEnded, error) { + event := new(IPoSValidatorManagerDelegationEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorAddedIterator struct { + Event *IPoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IPoSValidatorManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegatorAddedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegatorAdded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*IPoSValidatorManagerDelegatorAdded, error) { + event := new(IPoSValidatorManagerDelegatorAdded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRegisteredIterator struct { + Event *IPoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegatorRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegatorRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*IPoSValidatorManagerDelegatorRegistered, error) { + event := new(IPoSValidatorManagerDelegatorRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRemovalInitializedIterator struct { + Event *IPoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerDelegatorRemovalInitialized, error) { + event := new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerInitialValidatorCreatedIterator struct { + Event *IPoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoSValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerInitialValidatorCreatedIterator{contract: _IPoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerInitialValidatorCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoSValidatorManagerInitialValidatorCreated, error) { + event := new(IPoSValidatorManagerInitialValidatorCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerUptimeUpdatedIterator struct { + Event *IPoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerUptimeUpdatedIterator{contract: _IPoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerUptimeUpdated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*IPoSValidatorManagerUptimeUpdated, error) { + event := new(IPoSValidatorManagerUptimeUpdated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodCreatedIterator struct { + Event *IPoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoSValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidationPeriodCreatedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidationPeriodCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoSValidatorManagerValidationPeriodCreated, error) { + event := new(IPoSValidatorManagerValidationPeriodCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodEndedIterator struct { + Event *IPoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IPoSValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidationPeriodEndedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidationPeriodEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IPoSValidatorManagerValidationPeriodEnded, error) { + event := new(IPoSValidatorManagerValidationPeriodEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodRegisteredIterator struct { + Event *IPoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidationPeriodRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoSValidatorManagerValidationPeriodRegistered, error) { + event := new(IPoSValidatorManagerValidationPeriodRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorRemovalInitializedIterator struct { + Event *IPoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoSValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerValidatorRemovalInitialized, error) { + event := new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorWeightUpdateIterator struct { + Event *IPoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoSValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidatorWeightUpdateIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidatorWeightUpdate) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoSValidatorManagerValidatorWeightUpdate, error) { + event := new(IPoSValidatorManagerValidatorWeightUpdate) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IRewardCalculatorMetaData contains all meta data concerning the IRewardCalculator contract. +var IRewardCalculatorMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IRewardCalculatorABI is the input ABI used to generate the binding from. +// Deprecated: Use IRewardCalculatorMetaData.ABI instead. +var IRewardCalculatorABI = IRewardCalculatorMetaData.ABI + +// IRewardCalculator is an auto generated Go binding around an Ethereum contract. +type IRewardCalculator struct { + IRewardCalculatorCaller // Read-only binding to the contract + IRewardCalculatorTransactor // Write-only binding to the contract + IRewardCalculatorFilterer // Log filterer for contract events +} + +// IRewardCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type IRewardCalculatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IRewardCalculatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IRewardCalculatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IRewardCalculatorSession struct { + Contract *IRewardCalculator // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IRewardCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IRewardCalculatorCallerSession struct { + Contract *IRewardCalculatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IRewardCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IRewardCalculatorTransactorSession struct { + Contract *IRewardCalculatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IRewardCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type IRewardCalculatorRaw struct { + Contract *IRewardCalculator // Generic contract binding to access the raw methods on +} + +// IRewardCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IRewardCalculatorCallerRaw struct { + Contract *IRewardCalculatorCaller // Generic read-only contract binding to access the raw methods on +} + +// IRewardCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IRewardCalculatorTransactorRaw struct { + Contract *IRewardCalculatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIRewardCalculator creates a new instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculator(address common.Address, backend bind.ContractBackend) (*IRewardCalculator, error) { + contract, err := bindIRewardCalculator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IRewardCalculator{IRewardCalculatorCaller: IRewardCalculatorCaller{contract: contract}, IRewardCalculatorTransactor: IRewardCalculatorTransactor{contract: contract}, IRewardCalculatorFilterer: IRewardCalculatorFilterer{contract: contract}}, nil +} + +// NewIRewardCalculatorCaller creates a new read-only instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorCaller(address common.Address, caller bind.ContractCaller) (*IRewardCalculatorCaller, error) { + contract, err := bindIRewardCalculator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IRewardCalculatorCaller{contract: contract}, nil +} + +// NewIRewardCalculatorTransactor creates a new write-only instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*IRewardCalculatorTransactor, error) { + contract, err := bindIRewardCalculator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IRewardCalculatorTransactor{contract: contract}, nil +} + +// NewIRewardCalculatorFilterer creates a new log filterer instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*IRewardCalculatorFilterer, error) { + contract, err := bindIRewardCalculator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IRewardCalculatorFilterer{contract: contract}, nil +} + +// bindIRewardCalculator binds a generic wrapper to an already deployed contract. +func bindIRewardCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IRewardCalculatorMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IRewardCalculator *IRewardCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IRewardCalculator.Contract.IRewardCalculatorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IRewardCalculator *IRewardCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IRewardCalculator *IRewardCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IRewardCalculator *IRewardCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IRewardCalculator.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IRewardCalculator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IRewardCalculator.Contract.contract.Transact(opts, method, params...) +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorCaller) CalculateReward(opts *bind.CallOpts, stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + var out []interface{} + err := _IRewardCalculator.contract.Call(opts, &out, "calculateReward", stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorCallerSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) +} + +// IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. +var IValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IValidatorManagerMetaData.ABI instead. +var IValidatorManagerABI = IValidatorManagerMetaData.ABI + +// IValidatorManager is an auto generated Go binding around an Ethereum contract. +type IValidatorManager struct { + IValidatorManagerCaller // Read-only binding to the contract + IValidatorManagerTransactor // Write-only binding to the contract + IValidatorManagerFilterer // Log filterer for contract events +} + +// IValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IValidatorManagerSession struct { + Contract *IValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IValidatorManagerCallerSession struct { + Contract *IValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IValidatorManagerTransactorSession struct { + Contract *IValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IValidatorManagerRaw struct { + Contract *IValidatorManager // Generic contract binding to access the raw methods on +} + +// IValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IValidatorManagerCallerRaw struct { + Contract *IValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IValidatorManagerTransactorRaw struct { + Contract *IValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIValidatorManager creates a new instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManager(address common.Address, backend bind.ContractBackend) (*IValidatorManager, error) { + contract, err := bindIValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IValidatorManager{IValidatorManagerCaller: IValidatorManagerCaller{contract: contract}, IValidatorManagerTransactor: IValidatorManagerTransactor{contract: contract}, IValidatorManagerFilterer: IValidatorManagerFilterer{contract: contract}}, nil +} + +// NewIValidatorManagerCaller creates a new read-only instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IValidatorManagerCaller, error) { + contract, err := bindIValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IValidatorManagerCaller{contract: contract}, nil +} + +// NewIValidatorManagerTransactor creates a new write-only instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IValidatorManagerTransactor, error) { + contract, err := bindIValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IValidatorManagerTransactor{contract: contract}, nil +} + +// NewIValidatorManagerFilterer creates a new log filterer instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IValidatorManagerFilterer, error) { + contract, err := bindIValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IValidatorManagerFilterer{contract: contract}, nil +} + +// bindIValidatorManager binds a generic wrapper to an already deployed contract. +func bindIValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IValidatorManager *IValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IValidatorManager.Contract.IValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IValidatorManager *IValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IValidatorManager *IValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IValidatorManager *IValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IValidatorManager *IValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IValidatorManager *IValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// IValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IValidatorManager contract. +type IValidatorManagerInitialValidatorCreatedIterator struct { + Event *IValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IValidatorManager contract. +type IValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerInitialValidatorCreatedIterator{contract: _IValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerInitialValidatorCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IValidatorManagerInitialValidatorCreated, error) { + event := new(IValidatorManagerInitialValidatorCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodCreatedIterator struct { + Event *IValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodCreatedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IValidatorManagerValidationPeriodCreated, error) { + event := new(IValidatorManagerValidationPeriodCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodEndedIterator struct { + Event *IValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodEndedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodEnded) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IValidatorManagerValidationPeriodEnded, error) { + event := new(IValidatorManagerValidationPeriodEnded) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodRegisteredIterator struct { + Event *IValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodRegisteredIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodRegistered) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IValidatorManagerValidationPeriodRegistered, error) { + event := new(IValidatorManagerValidationPeriodRegistered) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IValidatorManager contract. +type IValidatorManagerValidatorRemovalInitializedIterator struct { + Event *IValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IValidatorManager contract. +type IValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidatorRemovalInitializedIterator{contract: _IValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidatorRemovalInitialized) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IValidatorManagerValidatorRemovalInitialized, error) { + event := new(IValidatorManagerValidatorRemovalInitialized) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IValidatorManager contract. +type IValidatorManagerValidatorWeightUpdateIterator struct { + Event *IValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IValidatorManager contract. +type IValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidatorWeightUpdateIterator{contract: _IValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidatorWeightUpdate) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IValidatorManagerValidatorWeightUpdate, error) { + event := new(IValidatorManagerValidatorWeightUpdate) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. +var IWarpMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWarpMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use IWarpMessengerMetaData.ABI instead. +var IWarpMessengerABI = IWarpMessengerMetaData.ABI + +// IWarpMessenger is an auto generated Go binding around an Ethereum contract. +type IWarpMessenger struct { + IWarpMessengerCaller // Read-only binding to the contract + IWarpMessengerTransactor // Write-only binding to the contract + IWarpMessengerFilterer // Log filterer for contract events +} + +// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWarpMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWarpMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWarpMessengerSession struct { + Contract *IWarpMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWarpMessengerCallerSession struct { + Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWarpMessengerTransactorSession struct { + Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWarpMessengerRaw struct { + Contract *IWarpMessenger // Generic contract binding to access the raw methods on +} + +// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWarpMessengerCallerRaw struct { + Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactorRaw struct { + Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { + contract, err := bindIWarpMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil +} + +// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { + contract, err := bindIWarpMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerCaller{contract: contract}, nil +} + +// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { + contract, err := bindIWarpMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerTransactor{contract: contract}, nil +} + +// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { + contract, err := bindIWarpMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWarpMessengerFilterer{contract: contract}, nil +} + +// bindIWarpMessenger binds a generic wrapper to an already deployed contract. +func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWarpMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) + + outstruct := new(struct { + WarpBlockHash WarpBlockHash + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) + + outstruct := new(struct { + Message WarpMessage + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessageIterator struct { + Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWarpMessengerSendWarpMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWarpMessengerSendWarpMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessage struct { + Sender common.Address + MessageID [32]byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil +} + +// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// InitializableMetaData contains all meta data concerning the Initializable contract. +var InitializableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// InitializableABI is the input ABI used to generate the binding from. +// Deprecated: Use InitializableMetaData.ABI instead. +var InitializableABI = InitializableMetaData.ABI + +// Initializable is an auto generated Go binding around an Ethereum contract. +type Initializable struct { + InitializableCaller // Read-only binding to the contract + InitializableTransactor // Write-only binding to the contract + InitializableFilterer // Log filterer for contract events +} + +// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. +type InitializableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type InitializableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type InitializableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type InitializableSession struct { + Contract *Initializable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type InitializableCallerSession struct { + Contract *InitializableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type InitializableTransactorSession struct { + Contract *InitializableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. +type InitializableRaw struct { + Contract *Initializable // Generic contract binding to access the raw methods on +} + +// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type InitializableCallerRaw struct { + Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on +} + +// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type InitializableTransactorRaw struct { + Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. +func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { + contract, err := bindInitializable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil +} + +// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { + contract, err := bindInitializable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &InitializableCaller{contract: contract}, nil +} + +// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { + contract, err := bindInitializable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &InitializableTransactor{contract: contract}, nil +} + +// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. +func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { + contract, err := bindInitializable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &InitializableFilterer{contract: contract}, nil +} + +// bindInitializable binds a generic wrapper to an already deployed contract. +func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := InitializableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transact(opts, method, params...) +} + +// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. +type InitializableInitializedIterator struct { + Event *InitializableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *InitializableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *InitializableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *InitializableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// InitializableInitialized represents a Initialized event raised by the Initializable contract. +type InitializableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { + + logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { + + logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerMetaData contains all meta data concerning the PoSValidatorManager contract. +var PoSValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// PoSValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use PoSValidatorManagerMetaData.ABI instead. +var PoSValidatorManagerABI = PoSValidatorManagerMetaData.ABI + +// PoSValidatorManager is an auto generated Go binding around an Ethereum contract. +type PoSValidatorManager struct { + PoSValidatorManagerCaller // Read-only binding to the contract + PoSValidatorManagerTransactor // Write-only binding to the contract + PoSValidatorManagerFilterer // Log filterer for contract events +} + +// PoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type PoSValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PoSValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PoSValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PoSValidatorManagerSession struct { + Contract *PoSValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PoSValidatorManagerCallerSession struct { + Contract *PoSValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PoSValidatorManagerTransactorSession struct { + Contract *PoSValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type PoSValidatorManagerRaw struct { + Contract *PoSValidatorManager // Generic contract binding to access the raw methods on +} + +// PoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PoSValidatorManagerCallerRaw struct { + Contract *PoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// PoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PoSValidatorManagerTransactorRaw struct { + Contract *PoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPoSValidatorManager creates a new instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*PoSValidatorManager, error) { + contract, err := bindPoSValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &PoSValidatorManager{PoSValidatorManagerCaller: PoSValidatorManagerCaller{contract: contract}, PoSValidatorManagerTransactor: PoSValidatorManagerTransactor{contract: contract}, PoSValidatorManagerFilterer: PoSValidatorManagerFilterer{contract: contract}}, nil +} + +// NewPoSValidatorManagerCaller creates a new read-only instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoSValidatorManagerCaller, error) { + contract, err := bindPoSValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PoSValidatorManagerCaller{contract: contract}, nil +} + +// NewPoSValidatorManagerTransactor creates a new write-only instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoSValidatorManagerTransactor, error) { + contract, err := bindPoSValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PoSValidatorManagerTransactor{contract: contract}, nil +} + +// NewPoSValidatorManagerFilterer creates a new log filterer instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoSValidatorManagerFilterer, error) { + contract, err := bindPoSValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PoSValidatorManagerFilterer{contract: contract}, nil +} + +// bindPoSValidatorManager binds a generic wrapper to an already deployed contract. +func bindPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PoSValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PoSValidatorManager *PoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoSValidatorManager.Contract.PoSValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PoSValidatorManager *PoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PoSValidatorManager *PoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PoSValidatorManager *PoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoSValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoSValidatorManager *PoSValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoSValidatorManager *PoSValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoSValidatorManager *PoSValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoSValidatorManager *PoSValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoSValidatorManager *PoSValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "valueToWeight", value) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_PoSValidatorManager *PoSValidatorManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "weightToValue", weight) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_PoSValidatorManager *PoSValidatorManagerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// PoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegationEndedIterator struct { + Event *PoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegationEndedIterator{contract: _PoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegationEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*PoSValidatorManagerDelegationEnded, error) { + event := new(PoSValidatorManagerDelegationEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorAddedIterator struct { + Event *PoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*PoSValidatorManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegatorAddedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegatorAdded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*PoSValidatorManagerDelegatorAdded, error) { + event := new(PoSValidatorManagerDelegatorAdded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRegisteredIterator struct { + Event *PoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegatorRegisteredIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegatorRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*PoSValidatorManagerDelegatorRegistered, error) { + event := new(PoSValidatorManagerDelegatorRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRemovalInitializedIterator struct { + Event *PoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*PoSValidatorManagerDelegatorRemovalInitialized, error) { + event := new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitialValidatorCreatedIterator struct { + Event *PoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoSValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerInitialValidatorCreatedIterator{contract: _PoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerInitialValidatorCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoSValidatorManagerInitialValidatorCreated, error) { + event := new(PoSValidatorManagerInitialValidatorCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitializedIterator struct { + Event *PoSValidatorManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerInitialized represents a Initialized event raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoSValidatorManagerInitializedIterator, error) { + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PoSValidatorManagerInitializedIterator{contract: _PoSValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoSValidatorManagerInitialized, error) { + event := new(PoSValidatorManagerInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the PoSValidatorManager contract. +type PoSValidatorManagerUptimeUpdatedIterator struct { + Event *PoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the PoSValidatorManager contract. +type PoSValidatorManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerUptimeUpdatedIterator{contract: _PoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerUptimeUpdated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*PoSValidatorManagerUptimeUpdated, error) { + event := new(PoSValidatorManagerUptimeUpdated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodCreatedIterator struct { + Event *PoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoSValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidationPeriodCreatedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidationPeriodCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoSValidatorManagerValidationPeriodCreated, error) { + event := new(PoSValidatorManagerValidationPeriodCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodEndedIterator struct { + Event *PoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoSValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidationPeriodEndedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidationPeriodEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoSValidatorManagerValidationPeriodEnded, error) { + event := new(PoSValidatorManagerValidationPeriodEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodRegisteredIterator struct { + Event *PoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidationPeriodRegisteredIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidationPeriodRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoSValidatorManagerValidationPeriodRegistered, error) { + event := new(PoSValidatorManagerValidationPeriodRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorRemovalInitializedIterator struct { + Event *PoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoSValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoSValidatorManagerValidatorRemovalInitialized, error) { + event := new(PoSValidatorManagerValidatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorWeightUpdateIterator struct { + Event *PoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { +func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoSValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidatorWeightUpdateIterator{contract: _PoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidatorWeightUpdate) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoSValidatorManagerValidatorWeightUpdate, error) { + event := new(PoSValidatorManagerValidatorWeightUpdate) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. +var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. +var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI + +// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeable struct { + ReentrancyGuardUpgradeableCaller // Read-only binding to the contract + ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract + ReentrancyGuardUpgradeableFilterer // Log filterer for contract events +} + +// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardUpgradeableSession struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardUpgradeableCallerSession struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardUpgradeableTransactorSession struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableRaw struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCallerRaw struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactorRaw struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { + contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { + contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil +} + +// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. +func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitializedIterator struct { + Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReentrancyGuardUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReentrancyGuardUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. +var SafeERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e48ef8e82df1e4ab3740b521e288cd30c92658d43bcfb55e7af86b1ffa4abbe764736f6c63430008190033", +} + +// SafeERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20MetaData.ABI instead. +var SafeERC20ABI = SafeERC20MetaData.ABI + +// SafeERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20MetaData.Bin instead. +var SafeERC20Bin = SafeERC20MetaData.Bin + +// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. +func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// SafeERC20 is an auto generated Go binding around an Ethereum contract. +type SafeERC20 struct { + SafeERC20Caller // Read-only binding to the contract + SafeERC20Transactor // Write-only binding to the contract + SafeERC20Filterer // Log filterer for contract events +} + +// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20Session struct { + Contract *SafeERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20CallerSession struct { + Contract *SafeERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransactorSession struct { + Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20Raw struct { + Contract *SafeERC20 // Generic contract binding to access the raw methods on +} + +// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20CallerRaw struct { + Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransactorRaw struct { + Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { + contract, err := bindSafeERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { + contract, err := bindSafeERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20Caller{contract: contract}, nil +} + +// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { + contract, err := bindSafeERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20Transactor{contract: contract}, nil +} + +// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { + contract, err := bindSafeERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20Filterer{contract: contract}, nil +} + +// bindSafeERC20 binds a generic wrapper to an already deployed contract. +func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transact(opts, method, params...) +} + +// SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. +var SafeERC20TransferFromMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dea7663bfe09d842906ec54ac6ab1cd0020f81907f7f5a8537ec9ddc8aa8260864736f6c63430008190033", +} + +// SafeERC20TransferFromABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20TransferFromMetaData.ABI instead. +var SafeERC20TransferFromABI = SafeERC20TransferFromMetaData.ABI + +// SafeERC20TransferFromBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20TransferFromMetaData.Bin instead. +var SafeERC20TransferFromBin = SafeERC20TransferFromMetaData.Bin + +// DeploySafeERC20TransferFrom deploys a new Ethereum contract, binding an instance of SafeERC20TransferFrom to it. +func DeploySafeERC20TransferFrom(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20TransferFrom, error) { + parsed, err := SafeERC20TransferFromMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20TransferFromBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil +} + +// SafeERC20TransferFrom is an auto generated Go binding around an Ethereum contract. +type SafeERC20TransferFrom struct { + SafeERC20TransferFromCaller // Read-only binding to the contract + SafeERC20TransferFromTransactor // Write-only binding to the contract + SafeERC20TransferFromFilterer // Log filterer for contract events +} + +// SafeERC20TransferFromCaller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20TransferFromCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20TransferFromTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20TransferFromFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20TransferFromSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20TransferFromSession struct { + Contract *SafeERC20TransferFrom // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20TransferFromCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20TransferFromCallerSession struct { + Contract *SafeERC20TransferFromCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransferFromTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransferFromTransactorSession struct { + Contract *SafeERC20TransferFromTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20TransferFromRaw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20TransferFromRaw struct { + Contract *SafeERC20TransferFrom // Generic contract binding to access the raw methods on +} + +// SafeERC20TransferFromCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20TransferFromCallerRaw struct { + Contract *SafeERC20TransferFromCaller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransferFromTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransferFromTransactorRaw struct { + Contract *SafeERC20TransferFromTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20TransferFrom creates a new instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFrom(address common.Address, backend bind.ContractBackend) (*SafeERC20TransferFrom, error) { + contract, err := bindSafeERC20TransferFrom(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil +} + +// NewSafeERC20TransferFromCaller creates a new read-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromCaller(address common.Address, caller bind.ContractCaller) (*SafeERC20TransferFromCaller, error) { + contract, err := bindSafeERC20TransferFrom(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromCaller{contract: contract}, nil +} + +// NewSafeERC20TransferFromTransactor creates a new write-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20TransferFromTransactor, error) { + contract, err := bindSafeERC20TransferFrom(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromTransactor{contract: contract}, nil +} + +// NewSafeERC20TransferFromFilterer creates a new log filterer instance of SafeERC20TransferFrom, bound to a specific deployed contract. +func NewSafeERC20TransferFromFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20TransferFromFilterer, error) { + contract, err := bindSafeERC20TransferFrom(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20TransferFromFilterer{contract: contract}, nil +} + +// bindSafeERC20TransferFrom binds a generic wrapper to an already deployed contract. +func bindSafeERC20TransferFrom(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20TransferFromMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20TransferFrom *SafeERC20TransferFromCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20TransferFrom.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20TransferFrom.Contract.contract.Transact(opts, method, params...) +} + +// ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. +var ValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorManagerMetaData.ABI instead. +var ValidatorManagerABI = ValidatorManagerMetaData.ABI + +// ValidatorManager is an auto generated Go binding around an Ethereum contract. +type ValidatorManager struct { + ValidatorManagerCaller // Read-only binding to the contract + ValidatorManagerTransactor // Write-only binding to the contract + ValidatorManagerFilterer // Log filterer for contract events +} + +// ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorManagerSession struct { + Contract *ValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorManagerCallerSession struct { + Contract *ValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorManagerTransactorSession struct { + Contract *ValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorManagerRaw struct { + Contract *ValidatorManager // Generic contract binding to access the raw methods on +} + +// ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorManagerCallerRaw struct { + Contract *ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactorRaw struct { + Contract *ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorManager creates a new instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManager(address common.Address, backend bind.ContractBackend) (*ValidatorManager, error) { + contract, err := bindValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil +} - default: - return false - } +// NewValidatorManagerCaller creates a new read-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ValidatorManagerCaller, error) { + contract, err := bindValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &ValidatorManagerCaller{contract: contract}, nil +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// NewValidatorManagerTransactor creates a new write-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorManagerTransactor, error) { + contract, err := bindValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err } + return &ValidatorManagerTransactor{contract: contract}, nil } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Error() error { - return it.fail +// NewValidatorManagerFilterer creates a new log filterer instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorManagerFilterer, error) { + contract, err := bindValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorManagerFilterer{contract: contract}, nil } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// bindValidatorManager binds a generic wrapper to an already deployed contract. +func bindValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// ERC20TokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorManager *ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.Contract.ValidatorManagerCaller.contract.Call(opts, result, method, params...) } -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorManager *ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorManager *ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorManager *ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegationEndedIterator, error) { +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) + if err != nil { + return *new(uint32), err } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + if err != nil { - return nil, err + return *new(uint8), err } - return &ERC20TokenStakingManagerDelegationEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { - return nil, err + return *new(common.Address), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegationEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*ERC20TokenStakingManagerDelegationEnded, error) { - event := new(ERC20TokenStakingManagerDelegationEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) } -// ERC20TokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorAddedIterator struct { - Event *ERC20TokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - default: - return false - } + if err != nil { + return *new(Validator), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Error() error { - return it.fail -} + return out0, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// ERC20TokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) } -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*ERC20TokenStakingManagerDelegatorAddedIterator, error) { +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) +} - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { - return nil, err + return *new(uint64), err } - return &ERC20TokenStakingManagerDelegatorAddedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { - return nil, err + return *new([32]byte), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorAdded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*ERC20TokenStakingManagerDelegatorAdded, error) { - event := new(ERC20TokenStakingManagerDelegatorAdded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) } -// ERC20TokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRegisteredIterator struct { - Event *ERC20TokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) } -// ERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) } -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRegisteredIterator, error) { +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) } -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. // -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) } -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. // -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*ERC20TokenStakingManagerDelegatorRegistered, error) { - event := new(ERC20TokenStakingManagerDelegatorRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) } -// ERC20TokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *ERC20TokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreatedIterator struct { + Event *ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1637,7 +15367,7 @@ type ERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { +func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1646,7 +15376,7 @@ func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bo if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(ValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1661,7 +15391,7 @@ func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(ValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1677,60 +15407,61 @@ func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { +func (it *ValidatorManagerInitialValidatorCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { +func (it *ValidatorManagerInitialValidatorCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte +// ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreated struct { ValidationID [32]byte + NodeID common.Hash + Weight *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ValidatorManagerInitialValidatorCreatedIterator, error) { - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil + return &ValidatorManagerInitialValidatorCreatedIterator{contract: _ValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } @@ -1740,8 +15471,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return err } event.Raw = log @@ -1762,21 +15493,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato }), nil } -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ValidatorManagerInitialValidatorCreated, error) { + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialValidatorCreatedIterator struct { - Event *ERC20TokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ValidatorManager contract. +type ValidatorManagerInitializedIterator struct { + Event *ValidatorManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1790,7 +15521,7 @@ type ERC20TokenStakingManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { +func (it *ValidatorManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1799,7 +15530,7 @@ func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) + it.Event = new(ValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1814,7 +15545,7 @@ func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) + it.Event = new(ValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1830,61 +15561,41 @@ func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { +func (it *ValidatorManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error { +func (it *ValidatorManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) +// ValidatorManagerInitialized represents a Initialized event raised by the ValidatorManager contract. +type ValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatorManagerInitializedIterator, error) { + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &ERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &ValidatorManagerInitializedIterator{contract: _ValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialized) (event.Subscription, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -1894,8 +15605,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialV select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(ValidatorManagerInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -1916,21 +15627,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialV }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ERC20TokenStakingManagerInitialValidatorCreated, error) { - event := new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ValidatorManagerInitialized, error) { + event := new(ValidatorManagerInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitializedIterator struct { - Event *ERC20TokenStakingManagerInitialized // Event containing the contract specifics and raw log +// ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreatedIterator struct { + Event *ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1944,7 +15655,7 @@ type ERC20TokenStakingManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { +func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1953,7 +15664,7 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) + it.Event = new(ValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1968,7 +15679,7 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) + it.Event = new(ValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1984,41 +15695,71 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { +func (it *ValidatorManagerValidationPeriodCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerInitializedIterator) Close() error { +func (it *ValidatorManagerValidationPeriodCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ValidatorManagerValidationPeriodCreatedIterator, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &ValidatorManagerValidationPeriodCreatedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialized) (event.Subscription, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "Initialized") + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } @@ -2028,8 +15769,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitiali select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return err } event.Raw = log @@ -2050,21 +15791,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitiali }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialized(log types.Log) (*ERC20TokenStakingManagerInitialized, error) { - event := new(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ValidatorManagerValidationPeriodCreated, error) { + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdatedIterator struct { - Event *ERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log +// ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEndedIterator struct { + Event *ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2078,7 +15819,7 @@ type ERC20TokenStakingManagerUptimeUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { +func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2087,7 +15828,7 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) + it.Event = new(ValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2102,7 +15843,7 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) + it.Event = new(ValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2118,52 +15859,60 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { +func (it *ValidatorManagerValidationPeriodEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { +func (it *ValidatorManagerValidationPeriodEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdated struct { +// ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEnded struct { ValidationID [32]byte - Uptime uint64 + Status uint8 Raw types.Log // Blockchain specific contextual infos } -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ValidatorManagerValidationPeriodEndedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerUptimeUpdatedIterator{contract: _ERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil + return &ValidatorManagerValidationPeriodEndedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil } -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } @@ -2173,8 +15922,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerUptimeUpdated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return err } event.Raw = log @@ -2195,21 +15944,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUp }), nil } -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*ERC20TokenStakingManagerUptimeUpdated, error) { - event := new(ERC20TokenStakingManagerUptimeUpdated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ValidatorManagerValidationPeriodEnded, error) { + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodCreatedIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log +// ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegisteredIterator struct { + Event *ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2223,7 +15972,7 @@ type ERC20TokenStakingManagerValidationPeriodCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2232,7 +15981,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) + it.Event = new(ValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2247,7 +15996,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) + it.Event = new(ValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2263,71 +16012,53 @@ func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ValidatorManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &ValidatorManagerValidationPeriodRegisteredIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } @@ -2337,8 +16068,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return err } event.Raw = log @@ -2359,21 +16090,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ERC20TokenStakingManagerValidationPeriodCreated, error) { - event := new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ValidatorManagerValidationPeriodRegistered, error) { + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodEndedIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log +// ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitializedIterator struct { + Event *ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2387,7 +16118,7 @@ type ERC20TokenStakingManagerValidationPeriodEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2396,7 +16127,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) + it.Event = new(ValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2411,7 +16142,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) + it.Event = new(ValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2427,60 +16158,62 @@ func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ERC20TokenStakingManagerValidationPeriodEndedIterator, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ValidatorManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &ValidatorManagerValidatorRemovalInitializedIterator{contract: _ValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } @@ -2490,8 +16223,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -2512,22 +16245,22 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ERC20TokenStakingManagerValidationPeriodEnded, error) { - event := new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ValidatorManagerValidatorRemovalInitialized, error) { + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - +// ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdateIterator struct { + Event *ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2540,7 +16273,7 @@ type ERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2549,7 +16282,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() boo if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) + it.Event = new(ValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2564,7 +16297,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() boo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) + it.Event = new(ValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2580,53 +16313,62 @@ func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() boo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { +func (it *ValidatorManagerValidatorWeightUpdateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { +func (it *ValidatorManagerValidatorWeightUpdateIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ValidatorManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &ValidatorManagerValidatorWeightUpdateIterator{contract: _ValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } @@ -2636,8 +16378,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return err } event.Raw = log @@ -2658,324 +16400,533 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ERC20TokenStakingManagerValidationPeriodRegistered, error) { - event := new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ValidatorManagerValidatorWeightUpdate, error) { + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *ERC20TokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log +// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. +var ValidatorMessagesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x6120f3610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e19190611982565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119b6565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e53660046119ef565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611a8b565b610255610250366004611c26565b61154a565b6040516100e1929190611d22565b610145610271366004611d3a565b611737565b610145610284366004611d64565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611daa565b6102e6906008611dbd565b61ffff168582815181106102fc576102fc611dd4565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611daa565b61035f906008611dbd565b63ffffffff1686610371836002611de8565b8151811061038157610381611dd4565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611daa565b6103e0906008611dbd565b876103ec836006611de8565b815181106103fc576103fc611dd4565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611daa565b610436906008611dbd565b6001600160401b03168861044b836026611de8565b8151811061045b5761045b611dd4565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611daa565b6104d6906008611dbd565b61ffff168482815181106104ec576104ec611dd4565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611daa565b61054f906008611dbd565b63ffffffff1685610561836002611de8565b8151811061057157610571611dd4565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611daa565b6105d0906008611dbd565b866105dc836006611de8565b815181106105ec576105ec611dd4565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611daa565b610664906008611dbd565b61ffff1685828151811061067a5761067a611dd4565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611daa565b6106dd906008611dbd565b63ffffffff16866106ef836002611de8565b815181106106ff576106ff611dd4565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611daa565b610760906008611dbd565b8761076c836006611de8565b8151811061077c5761077c611dd4565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611dd4565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611dfb565b6107f16060890189611e14565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e14565b90508110156109a2578161088e6060860186611e14565b8381811061089e5761089e611dd4565b90506020028101906108b09190611e60565b6108ba9080611e7e565b90506108c96060870187611e14565b848181106108d9576108d9611dd4565b90506020028101906108eb9190611e60565b6108f59080611e7e565b6109026060890189611e14565b8681811061091257610912611dd4565b90506020028101906109249190611e60565b610932906020810190611e7e565b61093f60608b018b611e14565b8881811061094f5761094f611dd4565b90506020028101906109619190611e60565b610972906060810190604001611ec0565b6040516020016109889796959493929190611ef0565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611daa565b610a02906008611dbd565b61ffff16868281518110610a1857610a18611dd4565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611daa565b610a7b906008611dbd565b63ffffffff1687610a8d836002611de8565b81518110610a9d57610a9d611dd4565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611daa565b610afe906008611dbd565b88610b0a836006611de8565b81518110610b1a57610b1a611dd4565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611daa565b610b54906008611dbd565b6001600160401b031689610b69836026611de8565b81518110610b7957610b79611dd4565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611daa565b610bb3906008611dbd565b6001600160401b03168a610bc883602e611de8565b81518110610bd857610bd8611dd4565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611daa565b610c32906008611dbd565b61ffff1686610c4763ffffffff871684611de8565b81518110610c5757610c57611dd4565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f4f565b9250505f805b6004811015610d0857610cbd816003611daa565b610cc8906008611dbd565b63ffffffff16868563ffffffff1683610ce19190611de8565b81518110610cf157610cf1611dd4565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f4f565b9250505f805b6020811015610d9857610d5581601f611daa565b610d60906008611dbd565b86610d7163ffffffff871684611de8565b81518110610d8157610d81611dd4565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f4f565b9250505f805b6004811015610e0c57610dc1816003611daa565b610dcc906008611dbd565b63ffffffff16868563ffffffff1683610de59190611de8565b81518110610df557610df5611dd4565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f4f565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611de8565b81518110610e9757610e97611dd4565b602001015160f81c60f81b828281518110610eb457610eb4611dd4565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f4f565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611de8565b81518110610f3557610f35611dd4565b602001015160f81c60f81b828281518110610f5257610f52611dd4565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f4f565b9350505f805b6008811015610fe957610f9d816007611daa565b610fa8906008611dbd565b6001600160401b031687610fc263ffffffff881684611de8565b81518110610fd257610fd2611dd4565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f4f565b9350505f805f5b600481101561106a5761101f816003611daa565b61102a906008611dbd565b63ffffffff16888763ffffffff16836110439190611de8565b8151811061105357611053611dd4565b016020015160f81c901b919091179060010161100b565b50611076600486611f4f565b94505f5b60048110156110d95761108e816003611daa565b611099906008611dbd565b63ffffffff16888763ffffffff16836110b29190611de8565b815181106110c2576110c2611dd4565b016020015160f81c901b929092179160010161107a565b506110e5600486611f4f565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611de8565b8151811061118e5761118e611dd4565b602001015160f81c60f81b8282815181106111ab576111ab611dd4565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611dd4565b6001600160a01b039092166020928302919091019091015261120860148a611f4f565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611daa565b611259906008611dbd565b63ffffffff16898863ffffffff16836112729190611de8565b8151811061128257611282611dd4565b016020015160f81c901b919091179060010161123a565b506112a5600487611f4f565b95505f5b6004811015611308576112bd816003611daa565b6112c8906008611dbd565b63ffffffff16898863ffffffff16836112e19190611de8565b815181106112f1576112f1611dd4565b016020015160f81c901b92909217916001016112a9565b50611314600487611f4f565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611de8565b815181106113bd576113bd611dd4565b602001015160f81c60f81b8282815181106113da576113da611dd4565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611dd4565b6001600160a01b039092166020928302919091019091015261143760148b611f4f565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f4f565b61147b906014611f6c565b61148685607a611f4f565b6114909190611f4f565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611daa565b6114ee906008611dbd565b6001600160401b03168a61150863ffffffff8b1684611de8565b8151811061151857611518611dd4565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611f94565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611dd4565b602002602001015160405160200161160c929190612015565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612041565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611dd4565b602002602001015160405160200161169e929190612015565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf918391602001612074565b60405160208183030381529060405290506002816040516116f0919061209b565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e91906120a6565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6119946020830184611954565b9392505050565b80356001600160401b03811681146119b1575f80fd5b919050565b5f805f606084860312156119c8575f80fd5b833592506119d86020850161199b565b91506119e66040850161199b565b90509250925092565b5f602082840312156119ff575f80fd5b81356001600160401b03811115611a14575f80fd5b820160808185031215611994575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a805784516001600160a01b03168252938301936001929092019190830190611a57565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ab1610100840182611954565b90506040840151601f1980858403016060860152611acf8383611954565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611aff8383611a25565b925060a08601519150808584030160c086015250611b1d8282611a25565b91505060c0840151611b3a60e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119b1575f80fd5b5f60408284031215611b68575f80fd5b611b7061181f565b9050813563ffffffff81168114611b85575f80fd5b81526020828101356001600160401b0380821115611ba1575f80fd5b818501915085601f830112611bb4575f80fd5b813581811115611bc657611bc661180b565b8060051b9150611bd7848301611869565b8181529183018401918481019088841115611bf0575f80fd5b938501935b83851015611c1557611c0685611b42565b82529385019390850190611bf5565b808688015250505050505092915050565b5f60208284031215611c36575f80fd5b81356001600160401b0380821115611c4c575f80fd5b9083019060e08286031215611c5f575f80fd5b611c67611847565b82358152602083013582811115611c7c575f80fd5b611c8887828601611899565b602083015250604083013582811115611c9f575f80fd5b611cab87828601611899565b604083015250611cbd6060840161199b565b6060820152608083013582811115611cd3575f80fd5b611cdf87828601611b58565b60808301525060a083013582811115611cf6575f80fd5b611d0287828601611b58565b60a083015250611d1460c0840161199b565b60c082015295945050505050565b828152604060208201525f6119356040830184611954565b5f8060408385031215611d4b575f80fd5b82359150611d5b6020840161199b565b90509250929050565b5f8060408385031215611d75575f80fd5b8235915060208301358015158114611d8b575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611d96565b808202811582820484141761177b5761177b611d96565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611d96565b5f60208284031215611e0b575f80fd5b61199482611b42565b5f808335601e19843603018112611e29575f80fd5b8301803591506001600160401b03821115611e42575f80fd5b6020019150600581901b3603821315611e59575f80fd5b9250929050565b5f8235605e19833603018112611e74575f80fd5b9190910192915050565b5f808335601e19843603018112611e93575f80fd5b8301803591506001600160401b03821115611eac575f80fd5b602001915036819003821315611e59575f80fd5b5f60208284031215611ed0575f80fd5b6119948261199b565b5f81518060208401855e5f93019283525090919050565b5f611efb828a611ed9565b60e089901b6001600160e01b0319168152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611d96565b63ffffffff818116838216028082169190828114611f8c57611f8c611d96565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152611fdc611fd6602a85018a611ed9565b88611ed9565b60c09690961b6001600160c01b031916865260e094851b811660088701529290931b909116600c84015250506010019695505050505050565b5f6120208285611ed9565b60609390931b6bffffffffffffffffffffffff191683525050601401919050565b5f61204c8286611ed9565b6001600160e01b031960e095861b811682529390941b90921660048401525050600801919050565b5f61207f8285611ed9565b60c09390931b6001600160c01b03191683525050600801919050565b5f6119948284611ed9565b5f602082840312156120b6575f80fd5b505191905056fea26469706673582212207d656061d8f95ab589d4afa49d2d1306b172ed85e5bb91ff860b1398145156c164736f6c63430008190033", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// ValidatorMessagesABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorMessagesMetaData.ABI instead. +var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorMessagesMetaData.Bin instead. +var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin + +// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. +func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false +// ValidatorMessages is an auto generated Go binding around an Ethereum contract. +type ValidatorMessages struct { + ValidatorMessagesCaller // Read-only binding to the contract + ValidatorMessagesTransactor // Write-only binding to the contract + ValidatorMessagesFilterer // Log filterer for contract events +} + +// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorMessagesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorMessagesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorMessagesSession struct { + Contract *ValidatorMessages // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorMessagesCallerSession struct { + Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorMessagesTransactorSession struct { + Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorMessagesRaw struct { + Contract *ValidatorMessages // Generic contract binding to access the raw methods on +} + +// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorMessagesCallerRaw struct { + Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactorRaw struct { + Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { + contract, err := bindValidatorMessages(address, backend, backend, backend) + if err != nil { + return nil, err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} - default: - return false - } +// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { + contract, err := bindValidatorMessages(address, caller, nil, nil) + if err != nil { + return nil, err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &ValidatorMessagesCaller{contract: contract}, nil +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { + contract, err := bindValidatorMessages(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesTransactor{contract: contract}, nil +} + +// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { + contract, err := bindValidatorMessages(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorMessagesFilterer{contract: contract}, nil +} + +// bindValidatorMessages binds a generic wrapper to an already deployed contract. +func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) + + if err != nil { + return *new([32]byte), *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) + + return out0, out1, err + +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) + + if err != nil { + return *new([]byte), err } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + } -// ERC20TokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { - return nil, err + return *new(ValidatorMessagesValidationPeriod), err } - return &ERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) + + return out0, err + } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { - return nil, err + return *new([32]byte), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerValidatorRemovalInitialized, error) { - event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) } -// ERC20TokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorWeightUpdateIterator struct { - Event *ERC20TokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) - default: - return false - } + if err != nil { + return *new([32]byte), *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(bool)).(*bool) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} + return out0, out1, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// ERC20TokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { - return nil, err + return *new([32]byte), *new(uint64), *new(uint64), err } - return &ERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return out0, out1, out2, err + } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { - return nil, err + return *new([32]byte), *new(uint64), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return out0, out1, err + } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ERC20TokenStakingManagerValidatorWeightUpdate, error) { - event := new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) } diff --git a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go index ab51fdaa6..17e540223 100644 --- a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go +++ b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go @@ -31,8 +31,8 @@ var ( // ExampleRewardCalculatorMetaData contains all meta data concerning the ExampleRewardCalculator contract. var ExampleRewardCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"rewardBasisPoints_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SECONDS_IN_YEAR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPTIME_REWARDS_THRESHOLD_PERCENTAGE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateReward\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"validatorStartTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakingStartTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakingEndTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"uptimeSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"rewardBasisPoints\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"}]", - Bin: "0x60a0604052348015600e575f80fd5b50604051610362380380610362833981016040819052602b91603b565b6001600160401b03166080526066565b5f60208284031215604a575f80fd5b81516001600160401b0381168114605f575f80fd5b9392505050565b6080516102de6100845f395f818160c5015261015d01526102de5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80634f22429f146100595780635dcc93911461007f578063a9778a7a1461008a578063afba878a146100a6578063bb65b242146100c0575b5f80fd5b61006c6100673660046101d5565b6100ff565b6040519081526020015b60405180910390f35b61006c6301e1338081565b61009361271081565b60405161ffff9091168152602001610076565b6100ae605081565b60405160ff9091168152602001610076565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b039091168152602001610076565b5f605061010c8685610243565b610116919061026a565b6001600160401b031661012a83606461026a565b6001600160401b0316101561014057505f6101b1565b6127106301e133806101528686610243565b6001600160401b03167f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316896101909190610295565b61019a9190610295565b6101a491906102b2565b6101ae91906102b2565b90505b95945050505050565b80356001600160401b03811681146101d0575f80fd5b919050565b5f805f805f60a086880312156101e9575f80fd5b853594506101f9602087016101ba565b9350610207604087016101ba565b9250610215606087016101ba565b9150610223608087016101ba565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038281168282160390808211156102635761026361022f565b5092915050565b6001600160401b0381811683821602808216919082811461028d5761028d61022f565b505092915050565b80820281158282048414176102ac576102ac61022f565b92915050565b5f826102cc57634e487b7160e01b5f52601260045260245ffd5b50049056fea164736f6c6343000819000a", + ABI: "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"rewardBasisPoints_\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_IN_YEAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPTIME_REWARDS_THRESHOLD_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardBasisPoints\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a0604052348015600e575f80fd5b50604051610393380380610393833981016040819052602b91603b565b6001600160401b03166080526066565b5f60208284031215604a575f80fd5b81516001600160401b0381168114605f575f80fd5b9392505050565b60805161030f6100845f395f818160c50152610161015261030f5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80634f22429f146100595780635dcc93911461007f578063a9778a7a1461008a578063afba878a146100a6578063bb65b242146100c0575b5f80fd5b61006c6100673660046101db565b610100565b6040519081526020015b60405180910390f35b61006c6301e1338081565b61009361271081565b60405161ffff9091168152602001610076565b6100ae605081565b60405160ff9091168152602001610076565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610076565b5f605061010d8685610249565b6101179190610271565b67ffffffffffffffff1661012c836064610271565b67ffffffffffffffff16101561014357505f6101b6565b6127106301e133806101558686610249565b67ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1689610195919061029d565b61019f919061029d565b6101a991906102ba565b6101b391906102ba565b90505b95945050505050565b803567ffffffffffffffff811681146101d6575f80fd5b919050565b5f805f805f60a086880312156101ef575f80fd5b853594506101ff602087016101bf565b935061020d604087016101bf565b925061021b606087016101bf565b9150610229608087016101bf565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b67ffffffffffffffff82811682821603908082111561026a5761026a610235565b5092915050565b67ffffffffffffffff81811683821602808216919082811461029557610295610235565b505092915050565b80820281158282048414176102b4576102b4610235565b92915050565b5f826102d457634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220193bbc9ce395b64c17c518dfc5efe4a5d8b30f2f4f00f37e0a7db81c05770b0764736f6c63430008190033", } // ExampleRewardCalculatorABI is the input ABI used to generate the binding from. @@ -356,3 +356,185 @@ func (_ExampleRewardCalculator *ExampleRewardCalculatorSession) RewardBasisPoint func (_ExampleRewardCalculator *ExampleRewardCalculatorCallerSession) RewardBasisPoints() (uint64, error) { return _ExampleRewardCalculator.Contract.RewardBasisPoints(&_ExampleRewardCalculator.CallOpts) } + +// IRewardCalculatorMetaData contains all meta data concerning the IRewardCalculator contract. +var IRewardCalculatorMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IRewardCalculatorABI is the input ABI used to generate the binding from. +// Deprecated: Use IRewardCalculatorMetaData.ABI instead. +var IRewardCalculatorABI = IRewardCalculatorMetaData.ABI + +// IRewardCalculator is an auto generated Go binding around an Ethereum contract. +type IRewardCalculator struct { + IRewardCalculatorCaller // Read-only binding to the contract + IRewardCalculatorTransactor // Write-only binding to the contract + IRewardCalculatorFilterer // Log filterer for contract events +} + +// IRewardCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type IRewardCalculatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IRewardCalculatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IRewardCalculatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IRewardCalculatorSession struct { + Contract *IRewardCalculator // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IRewardCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IRewardCalculatorCallerSession struct { + Contract *IRewardCalculatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IRewardCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IRewardCalculatorTransactorSession struct { + Contract *IRewardCalculatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IRewardCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type IRewardCalculatorRaw struct { + Contract *IRewardCalculator // Generic contract binding to access the raw methods on +} + +// IRewardCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IRewardCalculatorCallerRaw struct { + Contract *IRewardCalculatorCaller // Generic read-only contract binding to access the raw methods on +} + +// IRewardCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IRewardCalculatorTransactorRaw struct { + Contract *IRewardCalculatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIRewardCalculator creates a new instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculator(address common.Address, backend bind.ContractBackend) (*IRewardCalculator, error) { + contract, err := bindIRewardCalculator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IRewardCalculator{IRewardCalculatorCaller: IRewardCalculatorCaller{contract: contract}, IRewardCalculatorTransactor: IRewardCalculatorTransactor{contract: contract}, IRewardCalculatorFilterer: IRewardCalculatorFilterer{contract: contract}}, nil +} + +// NewIRewardCalculatorCaller creates a new read-only instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorCaller(address common.Address, caller bind.ContractCaller) (*IRewardCalculatorCaller, error) { + contract, err := bindIRewardCalculator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IRewardCalculatorCaller{contract: contract}, nil +} + +// NewIRewardCalculatorTransactor creates a new write-only instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*IRewardCalculatorTransactor, error) { + contract, err := bindIRewardCalculator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IRewardCalculatorTransactor{contract: contract}, nil +} + +// NewIRewardCalculatorFilterer creates a new log filterer instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*IRewardCalculatorFilterer, error) { + contract, err := bindIRewardCalculator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IRewardCalculatorFilterer{contract: contract}, nil +} + +// bindIRewardCalculator binds a generic wrapper to an already deployed contract. +func bindIRewardCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IRewardCalculatorMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IRewardCalculator *IRewardCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IRewardCalculator.Contract.IRewardCalculatorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IRewardCalculator *IRewardCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IRewardCalculator *IRewardCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IRewardCalculator *IRewardCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IRewardCalculator.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IRewardCalculator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IRewardCalculator.Contract.contract.Transact(opts, method, params...) +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorCaller) CalculateReward(opts *bind.CallOpts, stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + var out []interface{} + err := _IRewardCalculator.contract.Call(opts, &out, "calculateReward", stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorCallerSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) +} diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index dc35ef10a..a8892b213 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -80,6 +80,17 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } +// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorMessagesValidationPeriod struct { + SubnetID [32]byte + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner + Weight uint64 +} + // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -89,23 +100,36 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. -var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x363038303630343035323334383031353631303030663537356638306664356235303630343035313631353738633338303338303631353738633833333938313031363034303831393035323631303032653931363130313037353635623630303138313630303138313131313536313030343235373631303034323631303132633536356230333631303034663537363130303466363130303535353635623530363130313430353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436383031303030303030303030303030303030303930303436306666313631353631303061353537363034303531363366393265653861393630653031623831353236303034303136303430353138303931303339306664356238303534363030313630303136303430316230333930383131363134363130313034353738303534363030313630303136303430316230333139313636303031363030313630343031623033393038313137383235353630343035313930383135323766633766353035623266333731616532313735656534393133663434393965316632363333613762353933363332316565643163646165623631313531383164323930363032303031363034303531383039313033393061313562353035363562356636303230383238343033313231353631303131373537356638306664356238313531363030323831313036313031323535373566383066643562393339323530353035303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363135363366383036313031346435663339356666336665363038303630343035323630303433363130363130316235353735663335363065303163383036333832383061323561313136313030656135373830363362613361346239373131363130303865353738303633626133613462393731343631303464633537383036336263356662666563313436313034666235373830363362656530613033663134363130353265353738303633633235376130663531343631303534643537383036336335393965323466313436313035366335373830363363393734643162363134363130353766353738303633643566323066663631343631303539333537383036336466393364386465313436313035626635373830363366643761633565373134363130356435353735663830666435623830363338323830613235613134363130343062353738303633393365323435393831343631303431663537383036333938663365326234313436313034336535373830363361336136356534383134363130343564353738303633613937373861376131343631303264663537383036336166326635666562313436313034376335373830363361666239383039363134363130343866353738303633623737316233626331343631303463323537356638306664356238303633333534353564656431313631303135633537383036333335343535646564313436313032646635373830363333613163666666363134363130333037353738303633343637656630366631343631303332363537383036333532393766616536313436313033343535373830363336303330356436323134363130333634353738303633363230363538353631343631303338643537383036333636343335616266313436313033626135373830363337333232313466383134363130336439353738303633373666373836323131343631303365633537356638306664356238303633303131386163633431343631303162393537383036333033323265643938313436313031646135373830363331353164333064313134363130316639353738303633316563343437323431343631303232343537383036333230643931623761313436313032343335373830363332356531633737363134363130323632353738303633326532313934643831343631303238313537383036333332396333653132313436313032623835373562356638306664356233343830313536313031633435373566383066643562353036313031643836313031643333363630303436313437363635363562363130356634353635623030356233343830313536313031653535373566383066643562353036313031643836313031663433363630303436313437613135363562363130363239353635623334383031353631303230343537356638306664356235303631303230643630306138313536356236303430353136306666393039313136383135323630323030313562363034303531383039313033393066333562333438303135363130323266353735663830666435623530363130316438363130323365333636303034363134373636353635623631303861353536356233343830313536313032346535373566383066643562353036313031643836313032356433363630303436313437623835363562363130386230353635623334383031353631303236643537356638306664356235303631303164383631303237633336363030343631343830363536356236313065386135363562333438303135363130323863353735663830666435623530363130326130363130323962333636303034363134376131353635623631306566653536356236303430353136303031363030313630343031623033393039313136383135323630323030313631303231623536356233343830313536313032633335373566383066643562353036313032643236303031363030313630393931623031383135363562363034303531363130323162393139303631343832373536356233343830313536313032656135373566383066643562353036313032663436313237313038313536356236303430353136316666666639303931313638313532363032303031363130323162353635623334383031353631303331323537356638306664356235303631303164383631303332313336363030343631343736363536356236313066353235363562333438303135363130333331353735663830666435623530363130316438363130333430333636303034363134383362353635623631306635643536356233343830313536313033353035373566383066643562353036313031643836313033356633363630303436313438353435363562363131303064353635623334383031353631303336663537356638306664356235303631303337383630313438313536356236303430353136336666666666666666393039313136383135323630323030313631303231623536356233343830313536313033393835373566383066643562353036313033616336313033613733363630303436313438393035363562363131326435353635623630343035313930383135323630323030313631303231623536356233343830313536313033633535373566383066643562353036313032613036313033643433363630303436313437613135363562363131326635353635623334383031353631303365343537356638306664356235303631303361633566383135363562333438303135363130336637353735663830666435623530363130316438363130343036333636303034363134373636353635623631313330393536356233343830313536313034313635373566383066643562353036313032306436303330383135363562333438303135363130343261353735663830666435623530363130316438363130343339333636303034363134376131353635623631313333343536356233343830313536313034343935373566383066643562353036313031643836313034353833363630303436313438353435363562363131336631353635623334383031353631303436383537356638306664356235303631303164383631303437373336363030343631343833623536356236313136316435363562363130336163363130343861333636303034363134386263353635623631313830663536356233343830313536313034396135373566383066643562353036313033616337663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303038313536356233343830313536313034636435373566383066643562353036313032643236303035363030313630393931623031383135363562333438303135363130346537353735663830666435623530363130316438363130346636333636303034363134376131353635623631313833353536356233343830313536313035303635373566383066643562353036313033616337666539323534366436393839353064646433383931306432653135656431643932336364306137623364646539653261366133663338303536353535396362303038313536356233343830313536313035333935373566383066643562353036313031643836313035343833363630303436313437613135363562363131613935353635623334383031353631303535383537356638306664356235303631303164383631303536373336363030343631343931643536356236313162623235363562363130336163363130353761333636303034363134376131353635623631316338663536356233343830313536313035386135373566383066643562353036313032306436303134383135363562333438303135363130353965353735663830666435623530363130356232363130356164333636303034363134376131353635623631316362323536356236303430353136313032316239313930363134396139353635623334383031353631303563613537356638306664356235303631303261303632303261333030383135363562333438303135363130356530353735663830666435623530363130336163363130356566333636303034363134613239353635623631316466343536356236313035666638333833383336313165326335363562363130363234353736303430353136333130333663663931363065313162383135323630303438313031383439303532363032343031356236303430353138303931303339306664356235303530353035363562356636313036333236313231373235363562356638333831353236303037383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303035383131313135363130363662353736313036366236313439333435363562363030353831313131353631303637633537363130363763363134393334353635623831353236303230303136303031383230313830353436313036393039303631346139343536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363130366263393036313461393435363562383031353631303730373537383036303166313036313036646535373631303130303830383335343034303238333532393136303230303139313631303730373536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313036656135373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333932383330313534313636306130393039313031353239303931353038313531363030353831313131353631303737323537363130373732363134393334353635623134363130376135353735663833383135323630303738333031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313036316239313630666631363930363030343031363134616336353635623630363038313031353136303430353136333432613265306235363065313162383135323630303438313031383539303532363030313630303136303430316230333930393131363630323438323031353235663630343438323031353236303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f393036333835343563313661393036303634303135663630343035313830383330333831383635616634313538303135363130383163353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631303834333931393038313031393036313462643735363562363034303531383236336666666666666666313636306530316238313532363030343031363130383566393139303631346330383536356236303230363034303531383038333033383135663837356166313135383031353631303837623537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313038396639313930363134633161353635623530353035303530353635623631303839663833383338333631316532633536356235663631303862393631323137323536356236303039383130313534393039313530363066663136313536313038653235373630343035313633376661623831653536306530316238313532363030343031363034303531383039313033393066643562363030353630303136303939316230313630303136303031363061303162303331363633343231336366373836303430353138313633666666666666666631363630653031623831353236303034303136303230363034303531383038333033383138363561666131353830313536313039323535373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130393439393139303631346331613536356238333630323030313335313436313039373235373630343035313633373262306137653736306531316238313532363032303834303133353630303438323031353236303234303136313036316235363562333036313039383336303630383530313630343038363031363134633435353635623630303136303031363061303162303331363134363130396262353736313039613136303630383430313630343038353031363134633435353635623630343035313633326638383132306436306532316238313532363030343031363130363162393139303631343832373536356235663631303963393630363038353031383536313463363035363562393035303930353035663830356238323831363366666666666666663136313031353631306362303537356636313039656336303630383830313838363134633630353635623833363366666666666666663136383138313130363130613032353736313061303236313463613535363562393035303630323030323831303139303631306131343931393036313463623935363562363130613164393036313464323435363562383035313630343035313931393235303566393136303038383830313931363130613335393136313464396635363562393038313532363032303031363034303531383039313033393032303534313436313061363535373830353136303430353136336134316637373266363065303162383135323631303631623931393036303034303136313463303835363562356636303032383835663031333538343630343035313630323030313631306139343932393139303931383235323630653031623630303136303031363065303162303331393136363032303832303135323630323430313930353635623630343038303531363031663139383138343033303138313532393038323930353236313061616539313631346439663536356236303230363034303531383038333033383138353561666131353830313536313061633935373364356638303365336435666664356235303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631306165633931393036313463316135363562393035303830383636303038303138333566303135313630343035313631306230343931393036313464396635363562393038313532363034303830353136303230393238313930303338333031383132303933393039333535363065303833303138313532363030323833353238343531383238343031353238343831303138303531363030313630303136303430316230333930383131363835383430313532356636303630383630313831393035323931353138313136363038303836303135323432313636306130383530313532363063303834303138313930353238343831353236303037386130313930393235323930323038313531383135343832393036306666313931363630303138333630303538313131313536313062383635373631306238363631343933343536356230323137393035353530363032303832303135313630303138323031393036313062396639303832363134646634353635623530363034303832383130313531363030323833303138303534363036303836303135313630383038373031353136306130383830313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303933303135313630303339303932303138303534363030313630303136303430316230333139313639323834313639323930393231373930393135353833303135313631306334333931313638353631346563333536356238323531363034303531393139353530363130633534393136313464396635363562363034303830353139313832393030333832323039303834303135313630303136303031363034303162303331363832353239303832393037663964343766656639646130373736363135343665363436643631383330626663626461393035303663326535656564333831393565383263346562316362646639303630323030313630343035313830393130333930613335303530383036313063613939303631346564363536356239303530363130396430353635623530363030343833303138313930353536303031383330313534363036343930363130636434393036303031363034303162393030343630666631363833363134656638353635623130313536313063663635373630343035313633353934333331376636306530316238313532363030343831303138323930353236303234303136313036316235363562356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363331653664393738393631306431613837363132313936353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363130643361393139303631346330383536356236303230363034303531383038333033383138363561663431353830313536313064353535373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130643739393139303631346331613536356239303530356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633383632626661363338383630343035313832363366666666666666663136363065303162383135323630303430313631306462333931393036313530336135363562356636303430353138303833303338313836356166343135383031353631306463643537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313064663439313930383130313930363134626437353635623930353035663630303238323630343035313631306530373931393036313464396635363562363032303630343035313830383330333831383535616661313538303135363130653232353733643566383033653364356666643562353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313065343539313930363134633161353635623930353038323831313436313065373135373630343035313633313837326663386436306530316238313532363030343831303138323930353236303234383130313834393035323630343430313631303631623536356235303530353036303039393039323031383035343630666631393136363030313137393035353530353035303530353635623631306539333832363132326131353635623631306562333537363034303531363333306566613938623630653031623831353236303034383130313833393035323630323430313631303631623536356235663631306562643833363131636232353635623531393035303630303238313630303538313131313536313065643435373631306564343631343933343536356231343631306566343537383036303430353136333137306363393333363065323162383135323630303430313631303631623931393036313461633635363562363130383966383338333631323263613536356235663830363130663038363132353834353635623630303330313534363130663136393038343631353063353536356239303530383031353830363130663262353735303630303136303031363034303162303338313131356231353631306634633537363034303531363332323264313634333630653231623831353236303034383130313834393035323630323430313631303631623536356239323931353035303536356236313038396638333833383336313235613835363562363130663635363132373733353635623566363130663665363132353834353635623930353035663830363130663762383436313237626435363562393135303931353036313066383838323631323261313536356236313066393435373530353035303631313030323536356235663832383135323630303538343031363032303532363034303930323035343630303136303031363061303162303331363630303438323531363030353831313131353631306663323537363130666332363134393334353635623033363130666537353735663833383135323630303838353031363032303532363034303831323038303534393139303535363130666535383238323631326236633536356235303562363130666664383136313066663838343630343030313531363131326435353635623631326263613536356235303530353035303562363131303061363132626464353635623530353635623566363131303136363132353834353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631313034663537363131303466363134393334353635623630303338313131313536313130363035373631313036303631343933343536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313832303135343630343038303833303139313930393135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353238313031353139303931353035663631313064363832363131636232353635623930353036303031383335313630303338313131313536313130656435373631313065643631343933343536356231343631313130653537383235313630343035313633336230643534306436306532316238313532363130363162393139303630303430313631353065343536356236303034383135313630303538313131313536313131323335373631313132333631343933343536356230333631313133393537363131313331383536313263303335363562353035303530353035303530353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363339646532336434303631313135653861363132313936353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131313765393139303631346330383536356236303630363034303531383038333033383138363561663431353830313536313131393935373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131316264393139303631353066653536356235303931353039313530383138343134363131316561353738343630343030313531363034303531363330383939333862333630653131623831353236303034303136313036316239313831353236303230303139303536356238303630303136303031363034303162303331363833363036303031353136303031363030313630343031623033313631303830363131323233353735303830363030313630303136303430316230333136383536306130303135313630303136303031363034303162303331363131356231353631313234633537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313036316235363562356638373831353236303036383730313630323039303831353236303430393138323930323038303534363066663139313636303032393038313137383235353031383035343630303136303031363034303162303334323136363030313630343031623831303236376666666666666666666666666666666636303430316231393930393231363931393039313137393039313535393135313931383235323835393138393931376630343730353962343635303639623862373531383336623431663966316438336461666635383364323233386363376662623436313433376563323361346636393130313630343035313830393130333930613335303530353035303530353035303530353635623566363131326465363132353834353635623630303330313534363130663463393036303031363030313630343031623033383431363631346566383536356235663631313266663832363131636232353635623630383030313531393239313530353035363562363131333134383338333833363132356138353635623631303632343537363034303531363335626666363833663630653131623831353236303034383130313834393035323630323430313631303631623536356235663631313333643631323538343536356239303530356636313133343938333631316362323536356235313930353036303034383136303035383131313135363131333630353736313133363036313439333435363562313436313133383035373830363034303531363331373063633933333630653231623831353236303034303136313036316239313930363134616336353635623566383338313532363030353833303136303230353236303430393032303534363030313630303136306130316230333136333331343631313362623537333335623630343035313633366532636364373536306531316238313532363030343031363130363162393139303631343832373536356235663833383135323630303838333031363032303930383135323630343038303833323038303534393038343930353536303035383630313930393235323930393132303534363130383966393036303031363030313630613031623033313638323631326236633536356236313133663936313237373335363562356636313134303236313235383435363562356638333831353236303036383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303033383131313135363131343362353736313134336236313439333435363562363030333831313131353631313434633537363131343463363134393334353635623831353238313534363130313030393030343630303136303031363061303162303331363630323038323031353236303031383230313534363034303832303135323630303239303931303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303530363030333831353136303033383131313135363131346335353736313134633536313439333435363562313436313134653635373830353136303430353136333362306435343064363065323162383135323631303631623931393036303034303136313530653435363562363030343631313466353832363034303031353136313163623235363562353136303035383131313135363131353037353736313135303736313439333435363562313436313136303635373566363131353136383536313231393635363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633396465323364343038343630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131353535393139303631346330383536356236303630363034303531383038333033383138363561663431353830313536313135373035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131353934393139303631353066653536356235303931353039313530383138343630343030313531313436313135633035373630343035313633303839393338623336306531316238313532363030343831303138333930353236303234303136313036316235363562383036303031363030313630343031623033313638343630633030313531363030313630303136303430316230333136313131353631313630323537363034303531363332653139626332643630653131623831353236303031363030313630343031623033383231363630303438323031353236303234303136313036316235363562353035303530356236313136306638333631326330333536356235303530363131363139363132626464353635623530353035363562356636313136323636313231373235363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f36333265343363656235363131363464383636313231393635363562363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313136366439313930363134633038353635623630343038303531383038333033383138363561663431353830313536313136383735373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131366162393139303631353133333536356239313530393135303830363131366431353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313036316235363562356638323831353236303036383430313630323035323630343039303230383035343631313665623930363134613934353635623930353035663033363131373066353736303430353136333038393933386233363065313162383135323630303438313031383339303532363032343031363130363162353635623630303135663833383135323630303738353031363032303532363034303930323035343630666631363630303538313131313536313137333535373631313733353631343933343536356231343631313736383537356638323831353236303037383430313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130363162393136306666313639303630303430313631346163363536356235663832383135323630303638343031363032303532363034303831323036313137383039313631343662613536356235663832383135323630303738343031363032303930383135323630343039313832393032303830353436306666313931363630303239303831313738323535303138303534363030313630303136303430316230333432383138313136363030313630633031623032363030313630303136306330316230333930393331363932393039323137393238333930353538343531363030313630383031623930393330343136383235323931383130313931393039313532383339313766663866643163393066623963666132636132333538666466353830366230383661643433333135643932623232316339323965666337663130356365373536383931303136303430353138303931303339306132353035303530353035363562356636313138313836313237373335363562363131383234383438343834333436313265323335363562393035303631313832653631326264643536356239333932353035303530353635623566363131383365363132353834353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631313837373537363131383737363134393334353635623630303338313131313536313138383835373631313838383631343933343536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313830383330313534363034303833303135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353239303931353038313531363030333831313131353631313930313537363131393031363134393334353635623134313538303135363131393232353735303630303338313531363030333831313131353631313931663537363131393166363134393334353635623134313535623135363131393433353738303531363034303531363333623064353430643630653231623831353236313036316239313930363030343031363135306534353635623566363131393531383236303430303135313631316362323536356239303530383036303630303135313630303136303031363034303162303331363566303336313139383335373630343035313633333962383934663936306532316238313532363030343831303138353930353236303234303136313036316235363562363034303830383330313531363036303833303135313630383038343031353139323531363334326132653062353630653131623831353236303035363030313630393931623031393336336565356234386562393337335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3933363338353435633136613933363131396631393339303630303430313932383335323630303136303031363034303162303339313832313636303230383430313532313636303430383230313532363036303031393035363562356636303430353138303833303338313836356166343135383031353631316130623537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313161333239313930383130313930363134626437353635623630343035313832363366666666666666663136363065303162383135323630303430313631316134653931393036313463303835363562363032303630343035313830383330333831356638373561663131353830313536313161366135373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363131613865393139303631346331613536356235303530353035303530353635623566363131613965363132313732353635623566383338313532363030363832303136303230353236303430393032303830353439313932353039303631316162633930363134613934353635623930353035663033363131616530353736303430353136333038393933386233363065313162383135323630303438313031383339303532363032343031363130363162353635623630303135663833383135323630303738333031363032303532363034303930323035343630666631363630303538313131313536313162303635373631316230363631343933343536356231343631316233393537356638323831353236303037383230313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130363162393136306666313639303630303430313631346163363536356235663832383135323630303638323031363032303532363034303930383139303230393035313633656535623438656236306530316238313532363030353630303136303939316230313931363365653562343865623931363131623732393139303630303430313631353136313536356236303230363034303531383038333033383135663837356166313135383031353631316238653537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313036323439313930363134633161353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436303032393139303630303136303430316239303034363066663136383036313162666235373530383035343630303136303031363034303162303338303834313639313136313031353562313536313163313935373630343035313633663932656538613936306530316238313532363030343031363034303531383039313033393066643562383035343638666666666666666666666666666666666666313931363630303136303031363034303162303338333136313736303031363034303162313738313535363131633433383336313266636635363562383035343630666636303430316231393136383135353630343035313630303136303031363034303162303338333136383135323766633766353035623266333731616532313735656534393133663434393965316632363333613762353933363332316565643163646165623631313531383164323930363032303031363034303531383039313033393061313530353035303536356235663631316339383631323737333536356236313163613338323333333436313266653035363562393035303631316361643631326264643536356239313930353035363562363131636261363134366631353635623566363131636333363132313732353635623566383438313532363030373832303136303230353236303430393038313930323038313531363065303831303139303932353238303534393239333530393039313832393036306666313636303035383131313135363131636661353736313163666136313439333435363562363030353831313131353631316430623537363131643062363134393334353635623831353236303230303136303031383230313830353436313164316639303631346139343536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363131643462393036313461393435363562383031353631316439363537383036303166313036313164366435373631303130303830383335343034303238333532393136303230303139313631316439363536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313164373935373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333930393230313534393039313136363061303930393130313532393339323530353035303536356235663830363131646665363132313732353635623930353038303630303830313834383436303430353136313165313439323931393036313531656235363562393038313532363032303031363034303531383039313033393032303534393135303530393239313530353035363562356638303631316533363631323538343536356235663836383135323630303638323031363032303532363034303830383232303831353136306530383130313930393235323830353439333934353039313932393039313930383239303630666631363630303338313131313536313165366635373631316536663631343933343536356236303033383131313135363131653830353736313165383036313439333435363562383135323831353436313031303039303034363030313630303136306130316230333136363032303832303135323630303138323031353436303430383038333031393139303931353236303032393039323031353436303031363030313630343031623033383038323136363036303834303135323630303136303430316238323034383131363630383038343031353236303031363038303162383230343831313636306130383430313532363030313630633031623930393130343136363063303930393130313532383130313531393039313530356636313165663638323631316362323536356239303530363030323833353136303033383131313135363131663064353736313166306436313439333435363562313436313166326535373832353136303430353136333362306435343064363065323162383135323631303631623931393036303034303136313530653435363562363032303833303135313630303136303031363061303162303331363333313436313166636135373566383238313532363030353835303136303230353236303430393032303534363030313630303136306130316230333136333331343631316636373537333336313133613135363562356638323831353236303035383530313630323035323630343039303230353436306130383230313531363131663936393136303031363062303162393030343630303136303031363034303162303331363930363135316661353635623630303136303031363034303162303331363432313031353631316663613537363034303531363366623663653633663630653031623831353236303031363030313630343031623033343231363630303438323031353236303234303136313036316235363562363030323831353136303035383131313135363131666466353736313166646636313439333435363562303336313231306435373630303238343031353436303830383430313531363132303031393136303031363030313630343031623033313639303631353166613536356236303031363030313630343031623033313634323130313536313230333535373630343035313633666236636536336636306530316238313532363030313630303136303430316230333432313636303034383230313532363032343031363130363162353635623836313536313230343735373631323034353832383736313232636135363562353035623566383838313532363030363835303136303230353236303430393032303830353436306666313931363630303331373930353536303630383330313531363038303832303135313631323038303931383439313631323037623931393036313532316135363562363133326232353635623530356638393831353236303036383630313630323035323630343038313230363030323031383035343630303136303031363034303162303339303933313636303031363063303162303236303031363030313630633031623033393039333136393239303932313739303931353536313230633138343631333437633536356235663861383135323630303738373031363032303532363034303830383232303833393035353531393139323530383439313862393137663336366433333663306162333830646337393966303935613666383261323633323635383563353239303963633639386230396261343534303730396564353739316133313531353934353036313138326539333530353035303530353635623630303438313531363030353831313131353631323132323537363132313232363134393334353635623033363132313536353736313231333038333631333437633536356235663839383135323630303738363031363032303532363034303930323035353631323134393838363132633033353635623630303139343530353035303530353036313138326535363562383035313630343035313633313730636339333336306532316238313532363130363162393139303630303430313631346163363536356237666539323534366436393839353064646433383931306432653135656431643932336364306137623364646539653261366133663338303536353535396362303039303536356236303430383035313630363038303832303138333532356638303833353236303230383330313532393138313031393139303931353236303430353136333036663832353335363065343162383135323633666666666666666638333136363030343832303135323566393038313930363030353630303136303939316230313930363336663832353335303930363032343031356636303430353138303833303338313836356166613135383031353631323166613537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313232323139313930383130313930363135323361353635623931353039313530383036313232343335373630343035313633366232663139653936306530316238313532363030343031363034303531383039313033393066643562383135313135363132323639353738313531363034303531363336626135383961353630653031623831353236303034383130313931393039313532363032343031363130363162353635623630323038323031353136303031363030313630613031623033313631353631323239613537383136303230303135313630343035313632346465373564363065333162383135323630303430313631303631623931393036313438323735363562353039323931353035303536356235663830363132326162363132353834353635623566393338343532363030353031363032303532353035303630343039303230353436303031363030313630613031623033313631353135393035363562363034303531363330366638323533353630653431623831353236336666666666666666383231363630303438323031353235663930383139303831393036303035363030313630393931623031393036333666383235333530393036303234303135663630343035313830383330333831383635616661313538303135363132333135353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631323333633931393038313031393036313532336135363562393135303931353038303631323335653537363034303531363336623266313965393630653031623831353236303034303136303430353138303931303339306664356236303035363030313630393931623031363030313630303136306130316230333136363334323133636637383630343035313831363366666666666666663136363065303162383135323630303430313630323036303430353138303833303338313836356166613135383031353631323361313537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313233633539313930363134633161353635623832353131343631323365623537383135313630343035313633366261353839613536306530316238313532363030343831303139313930393135323630323430313631303631623536356236303230383230313531363030313630303136306130316230333136313536313234316335373831363032303031353136303430353136323464653735643630653331623831353236303034303136313036316239313930363134383237353635623566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363330383863323436333835363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313234353939313930363134633038353635623630343038303531383038333033383138363561663431353830313536313234373335373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132343937393139303631353263613536356239313530393135303831383731343631323462653537363034303531363330383939333862333630653131623831353236303034383130313838393035323630323430313631303631623536356235663631323463373631323538343536356235663839383135323630303538323031363032303532363034303930323036303031303135343930393135303630303136303031363034303162303339303831313639303833313631313135363132353561353735663838383135323630303538323031363032303930383135323630343039313832393032303630303130313830353436303031363030313630343031623033313931363630303136303031363034303162303338363136393038313137393039313535393135313931383235323839393137666563343431343865386666323731663264306261636566313134323135346162616362306162623361323965623365623530653263613937653836643034333539313031363034303531383039313033393061323631323537393536356235663838383135323630303538323031363032303532363034303930323036303031303135343630303136303031363034303162303331363931353035623530393639353530353035303530353035303536356237663433313737313366376563626464646434626339396539356439303361646564616138383362326537633235353136313062643133653263376534373364303039303536356235663830363132356232363132353834353635623930353035663631323562653836363133356666353635623930353036313235633938363631323261313536356236313235643835373630303139323530353035303631313832653536356235663836383135323630303538333031363032303532363034303930323035343630303136303031363061303162303331363333313436313235666435373333363131336131353635623566383638313532363030353833303136303230353236303430393032303534363061303832303135313631323632633931363030313630623031623930303436303031363030313630343031623033313639303631353166613536356236303031363030313630343031623033313638313630633030313531363030313630303136303430316230333136313031353631323637333537363063303831303135313630343035313633666236636536336636306530316238313532363030313630303136303430316230333930393131363630303438323031353236303234303136313036316235363562356638353135363132363862353736313236383438373836363132326361353635623930353036313236613935363562353035663836383135323630303538333031363032303532363034303930323036303031303135343630303136303031363034303162303331363562363030343833303135343630343038333031353135663931363030313630303136306130316230333136393036333466323234323966393036313236636539303631313264353536356236306130383630313531363063303837303135313630343035313630303136303031363065303162303331393630653038363930316231363831353236313236666539333932393138323931383939303630303430313631353265643536356236303230363034303531383038333033383138363561666131353830313536313237313935373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132373364393139303631346331613536356239303530383038343630303830313566386138313532363032303031393038313532363032303031356632303566383238323534363132373631393139303631346563333536356239303931353535303530313531353937393635303530353035303530353035303536356237663962373739623137343232643064663932323233303138623332623464316661343665303731373233643638313765323438366430303362656363353566303038303534363030313139303136313237623735373630343035313633336565356165623536306530316238313532363030343031363034303531383039313033393066643562363030323930353535363562356636313237633636313436663135363562356636313237636636313231373235363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f36333265343363656235363132376636383836313231393635363562363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313238313639313930363134633038353635623630343038303531383038333033383138363561663431353830313536313238333035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363132383534393139303631353133333536356239313530393135303830313536313238376235373630343035313633326430373133353336306530316238313532383131353135363030343832303135323630323430313631303631623536356235663832383135323630303738343031363032303532363034303830383232303831353136306530383130313930393235323830353438323930363066663136363030353831313131353631323861633537363132386163363134393334353635623630303538313131313536313238626435373631323862643631343933343536356238313532363032303031363030313832303138303534363132386431393036313461393435363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631323866643930363134613934353635623830313536313239343835373830363031663130363132393166353736313031303038303833353430343032383335323931363032303031393136313239343835363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363132393262353738323930303336303166313638323031393135623530353035303931383335323530353036303032383230313534363030313630303136303430316230333830383231363630323038343031353236303031363034303162383230343831313636303430383430313532363030313630383031623832303438313136363036303834303135323630303136306330316239303931303438313136363038303833303135323630303339323833303135343136363061303930393130313532393039313530383135313630303538313131313536313239623335373631323962333631343933343536356231343135383031353631323964343537353036303031383135313630303538313131313536313239643135373631323964313631343933343536356231343135356231353631323966353537383035313630343035313633313730636339333336306532316238313532363130363162393139303630303430313631346163363536356236303033383135313630303538313131313536313261306135373631326130613631343933343536356230333631326131383537363030343831353236313261316435363562363030353831353235623833363030383031383136303230303135313630343035313631326133333931393036313464396635363562393038313532363034303830353136303230393238313930303338333031393032303566393038313930353538353831353236303037383730313930393235323930323038313531383135343833393239313930383239303630666631393136363030313833363030353831313131353631326137373537363132613737363134393334353635623032313739303535353036303230383230313531363030313832303139303631326139303930383236313464663435363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353830353136303035383131313135363132623335353736313262333536313439333435363562363034303531383439303766316330386535393635366631613138646332646137363832366364633532383035633433653839376131376335306661656662386162336331353236636331363930356639306133393139363931393535303930393335303530353035303536356236303430353136333237616435353564363065313162383135323630303136303031363061303162303338333136363030343832303135323630323438313031383239303532363030313630303136303939316230313930363334663561616162613930363034343031356636303430353138303833303338313566383738303362313538303135363132626238353735663830666435623530356166313135383031353631313133313537336435663830336533643566666435623631313631393630303136303031363061303162303338333136383236313338643735363562363030313766396237373962313734323264306466393232323330313862333262346431666134366530373137323364363831376532343836643030336265636335356630303535353635623566363132633063363132353834353635623566383338313532363030363832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030333831313131353631326334353537363132633435363134393334353635623630303338313131313536313263353635373631326335363631343933343536356238313532383135343631303130303930303436303031363030313630613031623033313636303230383230313532363030313832303135343630343038303833303139313930393135323630303239303932303135343630303136303031363034303162303338303832313636303630383430313532363030313630343031623832303438313136363038303834303135323630303136303830316238323034383131363630613038343031353236303031363063303162393039313034313636306330393039313031353238313031353139303931353036313263636136313339366135363562383236303830303135313631326364393931393036313531666135363562363030313630303136303430316230333136343231303135363132643064353736303430353136336662366365363366363065303162383135323630303136303031363034303162303334323136363030343832303135323630323430313631303631623536356235663834383135323630303638343031363032303930383135323630343038303833323038303534363030313630303136306138316230333139313638313535363030313831303138343930353536303032303138333930353536303037383630313930393135323831323038303534393038323930353539303830383231353631326463383537356638343831353236303035383730313630323035323630343039303230353436313237313039303631326437613930363030313630613031623930303436316666666631363835363134656638353635623631326438343931393036313530633535363562393135303831383636303038303135663836383135323630323030313930383135323630323030313566323035663832383235343631326461383931393036313465633335363562393039313535353036313264623839303530383238343631353331623536356239303530363132646338383536303230303135313832363132623663353635623631326464643835363032303031353136313066663838373630363030313531363131326435353635623630343038303531383238313532363032303831303138343930353238353931383939313766386563656366353130303730633332306439613535333233666661626533353065323934616535303566633063353039646335373336646136663563633939333931303136303430353138303931303339306133353035303530353035303530353035363562356638303631326532643631323538343536356236303032383130313534393039313530363166666666363030313630343031623930393130343831313639303836313631303830363132653536353735303631323731303631666666663836313631313562313536313265376135373630343035313633356631326536633336306531316238313532363166666666383631363630303438323031353236303234303136313036316235363562363030323831303135343630303136303031363034303162303339303831313639303835313631303135363132656236353736303430353136323032613036643630653131623831353236303031363030313630343031623033383531363630303438323031353236303234303136313036316235363562383035343833313038303631326563383537353038303630303130313534383331313562313536313265653935373630343035313633323232643136343336306532316238313532363030343831303138343930353236303234303136313036316235363562383235663631326566343832363130656665353635623930353035663631326630313839383336313339383535363562393035303630343035313830363038303031363034303532383036313266313533333930353635623630303136303031363061303162303339303831313638323532363166666666383038633136363032303830383530313931393039313532363030313630303136303430316230333830386431363630343038303837303139313930393135323566363036303936383730313831393035323838383135323630303539303962303138333532393938613930323038363531383135343933383830313531396238383031353138333136363030313630623031623032363766666666666666666666666666666666363062303162313939633930393531363630303136306130316230323630303136303031363062303162303331393930393431363935313639343930393431373931393039313137393839303938313631373831353539313031353136303031393039313031383035343931393039353136363030313630303136303430316230333139393039313136313739303933353535303930393135303530393439333530353035303530353635623631326664373631336635323536356236313130306138313631336639643536356235663830363132666561363132353834353635623930353035663631326666363834363130656665353635623930353035663631333030323837363131636232353635623930353036313330306438373631323261313536356236313330326435373630343035313633333065666139386236306530316238313532363030343831303138383930353236303234303136313036316235363562363030323831353136303035383131313135363133303432353736313330343236313439333435363562313436313330363335373830353136303430353136333137306363393333363065323162383135323631303631623931393036303034303136313461633635363562356638323832363038303031353136313330373439313930363135316661353635623930353038333630303230313630306139303534393036313031303030613930303436303031363030313630343031623033313638323630343030313531363133303964393139303631353332653536356236303031363030313630343031623033313638313630303136303031363034303162303331363131313536313330646135373630343035313633366435316665303536306531316238313532363030313630303136303430316230333832313636303034383230313532363032343031363130363162353635623566383036313330653638613834363133326232353635623931353039313530356638613833363034303531363032303031363133313134393239313930393138323532363063303162363030313630303136306330316230333139313636303230383230313532363032383031393035363562363034303830353136303166313938313834303330313831353238323832353238303531363032303930393130313230363065303833303139303931353239313530383036303031383135323630303136303031363061303162303338633136363032303830383330313931393039313532363034303830383330313866393035323630303136303031363034303162303338303862313636303630383530313532356636303830383530313831393035323930383831363630613038353031353236306330393039333031383339303532383438333532363030363862303139303931353239303230383135313831353438323930363066663139313636303031383336303033383131313135363133316137353736313331613736313439333435363562303231373930353535303630323038323831303135313832353436313031303036303031363061383162303331393136363130313030363030313630303136306130316230333932383331363032313738333535363034303830383530313531363030313835303135353630363038303836303135313630303239303935303138303534363038303830383930313531363061303861303135313630633039303961303135313630303136303031363034303162303339393861313636303031363030313630383031623033313939303934313639333930393331373630303136303430316239313861313639313930393130323137363030313630303136303830316230333136363030313630383031623939383931363939393039393032363030313630303136306330316230333136393839303938313736303031363063303162393138383136393139303931303231373930353538313531383938363136383135323861383631363934383130313934393039343532393338623136393038333031353239313831303138353930353239303863313639313864393138343931376662303032346232363362633361306237323861366564656135306136396566613834313138396638643332656538616639643163326231613161323233343236393130313630343035313830393130333930613439613939353035303530353035303530353035303530353035363562356638303566363133326264363132313732353635623566383638313532363030373832303136303230353236303430393032303630303230313534393039313530363030313630383031623930303436303031363030313630343031623033313636313332656438353832363134303131353635623566363133326637383736313432333635363562356638383831353236303037383530313630323035323630343038303832323036303032303138303534363766666666666666666666666666666666363038303162313931363630303136303830316236303031363030313630343031623033386338313136393138323032393239303932313739303932353539313531363334326132653062353630653131623831353236303034383130313863393035323931383431363630323438333031353236303434383230313532393139323530393036303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363338353435633136613930363036343031356636303430353138303833303338313836356166343135383031353631333361303537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313333633739313930383130313930363134626437353635623630343035313832363366666666666666663136363065303162383135323630303430313631333365333931393036313463303835363562363032303630343035313830383330333831356638373561663131353830313536313333666635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363133343233393139303631346331613536356236303430383035313630303136303031363034303162303338613831313638323532363032303832303138343930353238323531393339343530383531363932386239323766303764653566663335613637346138303035653636316633333333633930376361363333333436323830383736326431396463376233616262316138633164663932383239303033303139306133393039343530393235303530353035623932353039323930353035363562356638303631333438363631323538343536356239303530356636313334393638343630343030313531363131636232353635623930353035663630303338323531363030353831313131353631333461653537363133346165363134393334353635623134383036313334636335373530363030343832353136303035383131313135363133346361353736313334636136313439333435363562313435623135363133346463353735303630633038313031353136313335313935363562363030323832353136303035383131313135363133346631353736313334663136313439333435363562303336313334666435373530343236313335313935363562383135313630343035313633313730636339333336306532316238313532363130363162393139303630303430313631346163363536356238343630383030313531363030313630303136303430316230333136383136303031363030313630343031623033313631313631333534303537353035663934393335303530353035303536356236303034383330313534363036303836303135313630303136303031363061303162303339303931313639303633346632323432396639303631333536353930363131326435353635623630613038353031353136303830383930313531363034303830386230313531356639303831353236303035386130313630323035323831393032303630303130313534393035313630303136303031363065303162303331393630653038373930316231363831353236313335623739343933393239313838393136303031363030313630343031623033393039313136393036303034303136313532656435363562363032303630343035313830383330333831383635616661313538303135363133356432353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631333566363931393036313463316135363562393539343530353035303530353035363562363133363037363134366631353635623566363133363130363132313732353635623566383438313532363030373832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030353831313131353631333634393537363133363439363134393334353635623630303538313131313536313336356135373631333635613631343933343536356238313532363032303031363030313832303138303534363133363665393036313461393435363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631333639613930363134613934353635623830313536313336653535373830363031663130363133366263353736313031303038303833353430343032383335323931363032303031393136313336653535363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363133366338353738323930303336303166313638323031393135623530353035303931383335323530353036303032383238313031353436303031363030313630343031623033383038323136363032303835303135323630303136303430316238323034383131363630343038353031353236303031363038303162383230343831313636303630383530313532363030313630633031623930393130343831313636303830383430313532363030333930393330313534393039323136363061303930393130313532393039313530383135313630303538313131313536313337353335373631333735333631343933343536356231343631333738363537356638343831353236303037383330313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130363162393136306666313639303630303430313631346163363536356236303033383135323432363030313630303136303430316230333136363063303832303135323566383438313532363030373833303136303230353236303430393032303831353138313534383339323931393038323930363066663139313636303031383336303035383131313135363133376361353736313337636136313439333435363562303231373930353535303630323038323031353136303031383230313930363133376533393038323631346466343536356235303630343038323031353136303032383230313830353436303630383530313531363038303836303135313630613038373031353136303031363030313630343031623033393538363136363030313630303136303830316230333139393039343136393339303933313736303031363034303162393238363136393239303932303239313930393131373630303136303031363038303162303331363630303136303830316239313835313639313930393130323630303136303031363063303162303331363137363030313630633031623931383431363931393039313032313739303535363063303930393230313531363030333930393130313830353436303031363030313630343031623033313931363931393039323136313739303535356636313338383038353832363133326232353635623630383038343031353136303430383035313630303136303031363034303162303339303932313638323532343236303230383330313532393139333530383339323530383739313766313364353833393463663236396434386263663932373935396132396135666665653763393932346461666666383932376563646633633438666661376336373931303136303430353138303931303339306133353039333932353035303530353635623830343731303135363133386661353733303630343035313633636437383630353936306530316238313532363030343031363130363162393139303631343832373536356235663832363030313630303136306130316230333136383236303430353135663630343035313830383330333831383538373561663139323530353035303364383035663831313436313339343335373630343035313931353036303166313936303366336430313136383230313630343035323364383235323364356636303230383430313365363133393438353635623630363039313530356235303530393035303830363130363234353736303430353136333061313266353231363065313162383135323630303430313630343035313830393130333930666435623566363133393733363132313732353635623630303130313534363030313630303136303430316230333136393139303530353635623566363133393865363132313732353635623630303930313534363066663136363133396232353736303430353136333766616238316535363065303162383135323630303430313630343035313830393130333930666435623566363133396262363132313732353635623930353034323631333963653630363038363031363034303837303136313438393035363562363030313630303136303430316230333136313131353830363133613038353735303631333965633632303261333030343236313465633335363562363133396663363036303836303136303430383730313631343839303536356236303031363030313630343031623033313631303135356231353631336134323537363133613164363036303835303136303430383630313631343839303536356236303430353136333538373964613133363065313162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130363162353635623631336135373631336135323630363038363031383636313533353935363562363134323966353635623631336136373631336135323630383038363031383636313533353935363562363033303631336137363630323038363031383636313533366435363562393035303134363133616138353736313361386136303230383530313835363135333664353635623630343035313633323634373562326636306531316238313532363130363162393235303630303430313930383135323630323030313930353635623631336162323834383036313533366435363562393035303566303336313361646635373631336163343834383036313533366435363562363034303531363333653038613132353630653131623831353236303034303136313036316239323931393036313533616635363562356636303038383230313631336165653836383036313533366435363562363034303531363133616663393239313930363135316562353635623930383135323630323030313630343035313830393130333930323035343134363133623335353736313362316138343830363135333664353635623630343035313633613431663737326636306530316238313532363030343031363130363162393239313930363135336166353635623631336233663833356636313430313135363562363034303830353136306530383130313930393135323831353438313532356639303831393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363365303437623238333930363032303831303136313362376338613830363135333664353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323039303831303139303631336263343930386230313862363135333664353635623830383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303933393239313930383138313532363032303031383338333830383238343337356639323031393139303931353235303530353039303832353235303630323030313631336330643630363038623031363034303863303136313438393035363562363030313630303136303430316230333136383135323630323030313631336332383630363038623031386236313533353935363562363133633331393036313533633235363562383135323630323030313631336334333630383038623031386236313533353935363562363133633463393036313533633235363562383135323630323030313838363030313630303136303430316230333136383135323530363034303531383236336666666666666666313636306530316238313532363030343031363133633761393139303631353465343536356235663630343035313830383330333831383635616634313538303135363133633934353733643566383033653364356666643562353035303530353036303430353133643566383233653630316633643930383130313630316631393136383230313630343035323631336362623931393038313031393036313535396235363562356638323831353236303036383630313630323035323630343039303230393139333530393135303631336364393832383236313464663435363562353038313630303838343031363133636539383838303631353336643536356236303430353136313363663739323931393036313531656235363562393038313532363034303531393038313930303336303230303138313230393139303931353536336565356234386562363065303162383135323566393036303035363030313630393931623031393036336565356234386562393036313364333339303835393036303034303136313463303835363562363032303630343035313830383330333831356638373561663131353830313536313364346635373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363133643733393139303631346331613536356236303430383035313630653038313031393039313532393039313530383036303031383135323630323030313631336439333839383036313533366435363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303138323930353235303933383535323530353035303630303136303031363034303162303338393136363032303830383430313832393035323630343038303835303138343930353236303630383530313932393039323532363038303834303138333930353236306130393039333031383239303532383638323532363030373838303139303932353232303831353138313534383239303630666631393136363030313833363030353831313131353631336532323537363133653232363134393334353635623032313739303535353036303230383230313531363030313832303139303631336533623930383236313464663435363562353036303430383230313531363030323832303138303534363036303835303135313630383038363031353136306130383730313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303932303135313630303339303931303138303534363030313630303136303430316230333139313639313930393231363137393035353830363133656438383838303631353336643536356236303430353136313365653639323931393036313531656235363562363034303531383039313033393032303834376662373732393765336265666336393162666338363461383165323431663833653265663732326236653762656361613265636563323530633664353262343330383938623630343030313630323038313031393036313366323439313930363134383930353635623630343038303531363030313630303136303430316230333933383431363831353239323930393131363630323038333031353230313630343035313830393130333930613435303930393539343530353035303530353035363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030353436303031363034303162393030343630666631363631336639623537363034303531363331616663643739663630653331623831353236303034303136303430353138303931303339306664356235363562363133666135363133663532353635623631336661653831363134343038353635623631336662363631343432313536356236313130306136303630383230313335363038303833303133353631336664333630633038353031363061303836303136313438393035363562363133666533363065303836303136306330383730313631353564653536356236313366663436313031303038373031363065303838303136313535663735363562363130313030383730313335363134303063363130313430383930313631303132303861303136313463343535363562363134343331353635623566363134303161363132313732353635623930353035663832363030313630303136303430316230333136383436303031363030313630343031623033313631313135363134303438353736313430343138333835363135323161353635623930353036313430353535363562363134303532383438343631353231613536356239303530356236303430383035313630383038313031383235323630303238343031353438303832353236303033383530313534363032303833303135323630303438353031353439323832303139323930393235323630303538343031353436303031363030313630343031623033313636303630383230313532343239313135383036313430623735373530363030313834303135343831353136313430623339313630303136303031363034303162303331363930363134656333353635623832313031353562313536313430646435373630303136303031363034303162303338333136363036303832303135323831383135323630343038313031353136303230383230313532363134306663353635623832383136303630303138313831353136313430656639313930363135316661353635623630303136303031363034303162303331363930353235303562363036303831303135313631343130633930363036343631353332653536356236303230383230313531363030313836303135343630303136303031363034303162303339323930393231363931363134313337393139303630303136303430316239303034363066663136363134656638353635623130313536313431363735373630363038313031353136303430353136336466616538383031363065303162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130363162353635623835363030313630303136303430316230333136383136303430303138313831353136313431383239313930363134656333353635623930353235303630343038313031383035313630303136303031363034303162303338373136393139303631343161323930383339303631353331623536356239303532353036303031383430313534363034303832303135313630363439313631343163373931363030313630343031623930393130343630666631363930363134656638353635623130313536313431656535373830363034303031353136303430353136333539343333313766363065303162383135323630303430313631303631623931383135323630323030313930353635623830353136303032383530313535363032303831303135313630303338353031353536303430383130313531363030343835303135353630363030313531363030353930393330313830353436303031363030313630343031623033313931363630303136303031363034303162303339303934313639333930393331373930393235353530353035303530353635623566383036313432343036313231373235363562356638343831353236303037383230313630323035323630343039303230363030323031383035343931393235303930363030383930363134323734393036303031363034303162393030343630303136303031363034303162303331363631353631373536356239313930363130313030306138313534383136303031363030313630343031623033303231393136393038333630303136303031363034303162303331363032313739303535393135303530393139303530353635623631343261633630323038323031383236313438336235363562363366666666666666663136313538303135363134326363353735303631343263373630323038323031383236313463363035363562313531353930353035623135363134333133353736313432646536303230383230313832363134383362353635623631343265623630323038333031383336313463363035363562363034303531363363303861306631643630653031623831353236336666666666666666393039333136363030343834303135323630323438333031353235303630343430313631303631623536356236313433323036303230383230313832363134633630353635623930353036313433326636303230383330313833363134383362353635623633666666666666666631363131313536313433343835373631343264653630323038323031383236313438336235363562363030313562363134333538363032303833303138333631346336303536356239303530383131303135363131363139353736313433366536303230383330313833363134633630353635623631343337393630303138343631353331623536356238313831313036313433383835373631343338383631346361353536356239303530363032303032303136303230383130313930363134333964393139303631346334353536356236303031363030313630613031623033313636313433623336303230383430313834363134633630353635623833383138313130363134336333353736313433633336313463613535363562393035303630323030323031363032303831303139303631343364383931393036313463343535363562363030313630303136306130316230333136313031353631343430303537363034303531363330646263386435663630653331623831353236303034303136303430353138303931303339306664356236303031303136313433346235363562363134343130363133663532353635623631343431383631343563373536356236313130306138313631343563663536356236313434323936313366353235363562363133663962363134366232353635623631343433393631336635323536356235663631343434323631323538343536356239303530363166666666383531363135383036313434356135373530363132373130363166666666383631363131356231353631343437653537363034303531363335663132653663333630653131623831353236316666666638363136363030343832303135323630323430313631303631623536356238363838313131353631343461323537363034303531363332323264313634333630653231623831353236303034383130313839393035323630323430313631303631623536356236306666383431363135383036313434623535373530363030613630666638353136313135623135363134346438353736303430353136333137306462333539363065333162383135323630666638353136363030343832303135323630323430313631303631623536356236313434653036313339366135363562363030313630303136303430316230333136383636303031363030313630343031623033313631303135363134353163353736303430353136323032613036643630653131623831353236303031363030313630343031623033383731363630303438323031353236303234303136313036316235363562383235663033363134353363353736303430353136336137333330303731363065303162383135323630303430313630343035313830393130333930666435623936383735353630303138373031393539303935353536303032383630313830353436303031363030313630343031623033393539303935313636396666666666666666666666666666666666666666313939303935313639343930393431373630303136303430316236316666666639343930393431363933393039333032393239303932313736376666666666666666666666666666666636303530316231393136363066663931393039313136363030313630353031623032313739303931353536303033383330313535363030343930393130313830353436303031363030313630613031623033313931363630303136303031363061303162303339303932313639313930393131373930353535363562363133663962363133663532353635623631343564373631336635323536356235663631343565303631323137323536356238323335383135353930353036303134363134356638363036303834303136303430383530313631353566373536356236306666313631313830363134363137353735303631343631323630363038333031363034303834303136313535663735363562363066663136313535623135363134363462353736313436326336303630383330313630343038343031363135356637353635623630343035313633346135396262666636306531316238313532363066663930393131363630303438323031353236303234303136313036316235363562363134363562363036303833303136303430383430313631353566373536356236303031383230313830353436306666393239303932313636303031363034303162303236306666363034303162313939303932313639313930393131373930353536313436386336303430383330313630323038343031363134383930353635623630303139313930393130313830353436303031363030313630343031623033313931363630303136303031363034303162303339303932313639313930393131373930353535303536356236313262646436313366353235363562353038303534363134366336393036313461393435363562356638323535383036303166313036313436643535373530353035363562363031663031363032303930303439303566353236303230356632303930383130313930363131303061393139303631343732653536356236303430383035313630653038313031393039313532383035663831353236303630363032303832303138313930353235663630343038333031383139303532393038323031383139303532363038303832303138313930353236306130383230313831393035323630633039303931303135323930353635623562383038323131313536313437343235373566383135353630303130313631343732663536356235303930353635623830313531353831313436313130306135373566383066643562383033353633666666666666666638313136383131343631316361643537356638306664356235663830356636303630383438363033313231353631343737383537356638306664356238333335393235303630323038343031333536313437386138313631343734363536356239313530363134373938363034303835303136313437353335363562393035303932353039323530393235363562356636303230383238343033313231353631343762313537356638306664356235303335393139303530353635623566383036303430383338353033313231353631343763393537356638306664356238323335363030313630303136303430316230333831313131353631343764653537356638306664356238333031363038303831383630333132313536313437656635373566383066643562393135303631343766643630323038343031363134373533353635623930353039323530393239303530353635623566383036303430383338353033313231353631343831373537356638306664356238323335393135303631343766643630323038343031363134373533353635623630303136303031363061303162303339313930393131363831353236303230303139303536356235663630323038323834303331323135363134383462353735663830666435623631313832653832363134373533353635623566383036303430383338353033313231353631343836353537356638306664356236313438366538333631343735333536356239343630323039333930393330313335393335303530353035363562363030313630303136303430316230333831313638313134363131303061353735663830666435623566363032303832383430333132313536313438613035373566383066643562383133353631313832653831363134383763353635623830333536316666666638313136383131343631316361643537356638306664356235663830356636303630383438363033313231353631343863653537356638306664356238333335363030313630303136303430316230333831313131353631343865333537356638306664356238343031363061303831383730333132313536313438663435373566383066643562393235303631343930323630323038353031363134386162353635623931353036303430383430313335363134393132383136313438376335363562383039313530353039323530393235303932353635623566363130313430383238343033313231353631343932653537356638306664356235303931393035303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363030363831313036313439353835373631343935383631343933343536356239303532353635623566356238333831313031353631343937363537383138313031353138333832303135323630323030313631343935653536356235303530356639313031353235363562356638313531383038343532363134393935383136303230383630313630323038363031363134393563353635623630316630313630316631393136393239303932303136303230303139323931353035303536356236303230383135323631343962623630323038323031383335313631343934383536356235663630323038333031353136306530363034303834303135323631343964363631303130303834303138323631343937653536356239303530363034303834303135313630303136303031363034303162303338303832313636303630383630313532383036303630383730313531313636303830383630313532383036303830383730313531313636306130383630313532383036306130383730313531313636306330383630313532383036306330383730313531313636306530383630313532353035303830393135303530393239313530353035363562356638303630323038333835303331323135363134613361353735663830666435623832333536303031363030313630343031623033383038323131313536313461353035373566383066643562383138353031393135303835363031663833303131323631346136333537356638306664356238313335383138313131313536313461373135373566383066643562383636303230383238353031303131313135363134613832353735663830666435623630323039323930393230313936393139353530393039333530353035303530353635623630303138313831316339303832313638303631346161383537363037663832313639313530356236303230383231303831303336313439326535373633346534383762373136306530316235663532363032323630303435323630323435666664356236303230383130313631306634633832383436313439343835363562363334653438376237313630653031623566353236303431363030343532363032343566666435623630343035313630363038313031363030313630303136303430316230333831313138323832313031373135363134623061353736313462306136313461643435363562363034303532393035363562363034303830353139303831303136303031363030313630343031623033383131313832383231303137313536313462306135373631346230613631346164343536356236303430353136303166383230313630316631393136383130313630303136303031363034303162303338313131383238323130313731353631346235613537363134623561363134616434353635623630343035323931393035303536356235663630303136303031363034303162303338323131313536313462376135373631346237613631346164343536356235303630316630313630316631393136363032303031393035363562356638323630316638333031313236313462393735373566383066643562383135313631346261613631346261353832363134623632353635623631346233323536356238313831353238343630323038333836303130313131313536313462626535373566383066643562363134626366383236303230383330313630323038373031363134393563353635623934393335303530353035303536356235663630323038323834303331323135363134626537353735663830666435623831353136303031363030313630343031623033383131313135363134626663353735663830666435623631346263663834383238353031363134623838353635623630323038313532356636313138326536303230383330313834363134393765353635623566363032303832383430333132313536313463326135373566383066643562353035313931393035303536356236303031363030313630613031623033383131363831313436313130306135373566383066643562356636303230383238343033313231353631346335353537356638306664356238313335363131383265383136313463333135363562356638303833333536303165313938343336303330313831313236313463373535373566383066643562383330313830333539313530363030313630303136303430316230333832313131353631346338653537356638306664356236303230303139313530363030353831393031623336303338323133313536313334373535373566383066643562363334653438376237313630653031623566353236303332363030343532363032343566666435623566383233353630356531393833333630333031383131323631346363643537356638306664356239313930393130313932393135303530353635623566383236303166383330313132363134636536353735663830666435623831333536313463663436313462613538323631346236323536356238313831353238343630323038333836303130313131313536313464303835373566383066643562383136303230383530313630323038333031333735663931383130313630323030313931393039313532393339323530353035303536356235663630363038323336303331323135363134643334353735663830666435623631346433633631346165383536356238323335363030313630303136303430316230333830383231313135363134643532353735663830666435623631346435653336383338373031363134636437353635623833353236303230383530313335393135303830383231313135363134643733353735663830666435623530363134643830333638323836303136313463643735363562363032303833303135323530363034303833303133353631346439343831363134383763353635623630343038323031353239323931353035303536356235663832353136313463636438313834363032303837303136313439356335363562363031663832313131353631303632343537383035663532363032303566323036303166383430313630303531633831303136303230383531303135363134646435353735303830356236303166383430313630303531633832303139313530356238313831313031353631316138653537356638313535363030313031363134646531353635623831353136303031363030313630343031623033383131313135363134653064353736313465306436313461643435363562363134653231383136313465316238343534363134613934353635623834363134646230353635623630323038303630316638333131363030313831313436313465353435373566383431353631346533643537353038353833303135313562356631393630303338363930316231633139313636303031383539303162313738353535363131313331353635623566383538313532363032303831323036303166313938363136393135623832383131303135363134653832353738383836303135313832353539343834303139343630303139303931303139303834303136313465363335363562353038353832313031353631346539663537383738353031353135663139363030333838393031623630663831363163313931363831353535623530353035303530353036303031393038313162303139303535353035363562363334653438376237313630653031623566353236303131363030343532363032343566666435623830383230313830383231313135363130663463353736313066346336313465616635363562356636336666666666666666383038333136383138313033363134656565353736313465656536313465616635363562363030313031393339323530353035303536356238303832303238313135383238323034383431343137363130663463353736313066346336313465616635363562356638303833333536303165313938343336303330313831313236313466323435373566383066643562383330313630323038313031393235303335393035303630303136303031363034303162303338313131313536313466343235373566383066643562383033363033383231333135363133343735353735663830666435623831383335323831383136303230383530313337353035663832383230313630323039303831303139313930393135323630316639303931303136303166313931363930393130313031393035363562356638333833383535323630323038303836303139353530383038353630303531623833303130313834356635623837383131303135363135303264353738343833303336303166313930313839353238313335333638383930303336303565313930313831313236313466623435373566383066643562383730313630363036313466633238323830363134663066353635623832383735323631346664323833383830313832383436313466353035363562393235303530353036313466653238363833303138333631346630663536356238363833303338383838303135323631346666343833383238343631346635303536356239323530353035303630343038303833303133353932353036313530303938333631343837633536356236303031363030313630343031623033393239303932313639343930393130313933393039333532393738333031393739303833303139303630303130313631346638663536356235303930393739363530353035303530353035303530353635623630323038313532383133353630323038323031353236303230383230313335363034303832303135323566363034303833303133353631353035653831363134633331353635623630303136303031363061303162303331363630363038333831303139313930393135323833303133353336383439303033363031653139303138313132363135303835353735663830666435623833303136303230383130313930333536303031363030313630343031623033383131313135363135306130353735663830666435623830363030353162333630333832313331353631353062313537356638306664356236303830383038353031353236313335663636306130383530313832383436313466373835363562356638323631353064663537363334653438376237313630653031623566353236303132363030343532363032343566666435623530303439303536356236303230383130313630303438333130363135306638353736313530663836313439333435363562393139303532393035363562356638303566363036303834383630333132313536313531313035373566383066643562383335313932353036303230383430313531363135313232383136313438376335363562363034303835303135313930393235303631343931323831363134383763353635623566383036303430383338353033313231353631353134343537356638306664356238323531393135303630323038333031353136313531353638313631343734363536356238303931353035303932353039323930353035363562356636303230383038333532356638343534363135313733383136313461393435363562383036303230383730313532363034303630303138303834313635663831313436313531393435373630303138313134363135316230353736313531646435363562363066663139383531363630343038613031353236303430383431353135363030353162386130313031393535303631353164643536356238393566353236303230356632303566356238353831313031353631353164343537383135343862383230313836303135323930383330313930383830313631353162393536356238613031363034303031393635303530356235303933393839373530353035303530353035303530353035363562383138333832333735663931303139303831353239313930353035363562363030313630303136303430316230333831383131363833383231363031393038303832313131353631323239613537363132323961363134656166353635623630303136303031363034303162303338323831313638323832313630333930383038323131313536313232396135373631323239613631346561663536356235663830363034303833383530333132313536313532346235373566383066643562383235313630303136303031363034303162303338303832313131353631353236313537356638306664356239303834303139303630363038323837303331323135363135323734353735663830666435623631353237633631346165383536356238323531383135323630323038333031353136313532386538313631346333313536356236303230383230313532363034303833303135313832383131313135363135326134353735663830666435623631353262303838383238363031363134623838353635623630343038333031353235303830393435303530353035303630323038333031353136313531353638313631343734363536356235663830363034303833383530333132313536313532646235373566383066643562383235313931353036303230383330313531363135313536383136313438376335363562393438353532363030313630303136303430316230333933383431363630323038363031353239313833313636303430383530313532383231363630363038343031353231363630383038323031353236306130303139303536356238313831303338313831313131353631306634633537363130663463363134656166353635623630303136303031363034303162303338313831313638333832313630323830383231363931393038323831313436313533353135373631353335313631346561663536356235303530393239313530353035363562356638323335363033653139383333363033303138313132363134636364353735663830666435623566383038333335363031653139383433363033303138313132363135333832353735663830666435623833303138303335393135303630303136303031363034303162303338323131313536313533396235373566383066643562363032303031393135303336383139303033383231333135363133343735353735663830666435623630323038313532356636313462636636303230383330313834383636313466353035363562356636303430383233363033313231353631353364323537356638306664356236313533646136313462313035363562363135336533383336313437353335363562383135323630323038303834303133353630303136303031363034303162303338303832313131353631353366663537356638306664356239303835303139303336363031663833303131323631353431313537356638306664356238313335383138313131313536313534323335373631353432333631346164343536356238303630303531623931353036313534333438343833303136313462333235363562383138313532393138333031383430313931383438313031393033363834313131353631353434643537356638306664356239333835303139333562383338353130313536313534373735373834333539323530363135343637383336313463333135363562383238323532393338353031393339303835303139303631353435323536356239343836303139343930393435323530393239353934353035303530353035303536356235663630343038333031363366666666666666663833353131363834353236303230383038343031353136303430363032303837303135323832383135313830383535323630363038383031393135303630323038333031393435303566393235303562383038333130313536313235373935373834353136303031363030313630613031623033313638323532393338333031393336303031393239303932303139313930383330313930363135346262353635623630323038313532383135313630323038323031353235663630323038333031353136306530363034303834303135323631353530613631303130303834303138323631343937653536356239303530363034303834303135313630316631393830383538343033303136303630383630313532363135353238383338333631343937653536356239323530363030313630303136303430316230333630363038373031353131363630383038363031353236303830383630313531393135303830383538343033303136306130383630313532363135353538383338333631353438393536356239323530363061303836303135313931353038303835383430333031363063303836303135323530363135353736383238323631353438393536356239313530353036306330383430313531363135353933363065303835303138323630303136303031363034303162303331363930353235363562353039333932353035303530353635623566383036303430383338353033313231353631353561633537356638306664356238323531393135303630323038333031353136303031363030313630343031623033383131313135363135356338353735663830666435623631353564343835383238363031363134623838353635623931353035303932353039323930353035363562356636303230383238343033313231353631353565653537356638306664356236313138326538323631343861623536356235663630323038323834303331323135363135363037353735663830666435623831333536306666383131363831313436313138326535373566383066643562356636303031363030313630343031623033383038333136383138313033363134656565353736313465656536313465616635366665613136343733366636633633343330303038313930303061", +// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. +type WarpBlockHash struct { + SourceChainID [32]byte + BlockHash [32]byte } -// NativeTokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use NativeTokenStakingManagerMetaData.ABI instead. -var NativeTokenStakingManagerABI = NativeTokenStakingManagerMetaData.ABI +// WarpMessage is an auto generated low-level Go binding around an user-defined struct. +type WarpMessage struct { + SourceChainID [32]byte + OriginSenderAddress common.Address + Payload []byte +} -// NativeTokenStakingManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use NativeTokenStakingManagerMetaData.Bin instead. -var NativeTokenStakingManagerBin = NativeTokenStakingManagerMetaData.Bin +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", +} -// DeployNativeTokenStakingManager deploys a new Ethereum contract, binding an instance of NativeTokenStakingManager to it. -func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *NativeTokenStakingManager, error) { - parsed, err := NativeTokenStakingManagerMetaData.GetAbi() +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -113,111 +137,111 @@ func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.Contr return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NativeTokenStakingManagerBin), backend, init) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil } -// NativeTokenStakingManager is an auto generated Go binding around an Ethereum contract. -type NativeTokenStakingManager struct { - NativeTokenStakingManagerCaller // Read-only binding to the contract - NativeTokenStakingManagerTransactor // Write-only binding to the contract - NativeTokenStakingManagerFilterer // Log filterer for contract events +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events } -// NativeTokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerCaller struct { +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// NativeTokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerTransactor struct { +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// NativeTokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type NativeTokenStakingManagerFilterer struct { +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// NativeTokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// AddressSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type NativeTokenStakingManagerSession struct { - Contract *NativeTokenStakingManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// NativeTokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type NativeTokenStakingManagerCallerSession struct { - Contract *NativeTokenStakingManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// NativeTokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type NativeTokenStakingManagerTransactorSession struct { - Contract *NativeTokenStakingManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// NativeTokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type NativeTokenStakingManagerRaw struct { - Contract *NativeTokenStakingManager // Generic contract binding to access the raw methods on +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on } -// NativeTokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerCallerRaw struct { - Contract *NativeTokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on } -// NativeTokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerTransactorRaw struct { - Contract *NativeTokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on } -// NewNativeTokenStakingManager creates a new instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManager(address common.Address, backend bind.ContractBackend) (*NativeTokenStakingManager, error) { - contract, err := bindNativeTokenStakingManager(address, backend, backend, backend) +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) if err != nil { return nil, err } - return &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil } -// NewNativeTokenStakingManagerCaller creates a new read-only instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*NativeTokenStakingManagerCaller, error) { - contract, err := bindNativeTokenStakingManager(address, caller, nil, nil) +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) if err != nil { return nil, err } - return &NativeTokenStakingManagerCaller{contract: contract}, nil + return &AddressCaller{contract: contract}, nil } -// NewNativeTokenStakingManagerTransactor creates a new write-only instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*NativeTokenStakingManagerTransactor, error) { - contract, err := bindNativeTokenStakingManager(address, nil, transactor, nil) +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) if err != nil { return nil, err } - return &NativeTokenStakingManagerTransactor{contract: contract}, nil + return &AddressTransactor{contract: contract}, nil } -// NewNativeTokenStakingManagerFilterer creates a new log filterer instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*NativeTokenStakingManagerFilterer, error) { - contract, err := bindNativeTokenStakingManager(address, nil, nil, filterer) +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) if err != nil { return nil, err } - return &NativeTokenStakingManagerFilterer{contract: contract}, nil + return &AddressFilterer{contract: contract}, nil } -// bindNativeTokenStakingManager binds a generic wrapper to an already deployed contract. -func bindNativeTokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := NativeTokenStakingManagerMetaData.GetAbi() +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() if err != nil { return nil, err } @@ -228,1036 +252,1152 @@ func bindNativeTokenStakingManager(address common.Address, caller bind.ContractC // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerCaller.contract.Call(opts, result, method, params...) +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transfer(opts) +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transact(opts, method, params...) +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _NativeTokenStakingManager.Contract.contract.Call(opts, result, method, params...) +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.contract.Transfer(opts) +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) +// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. +var ContextUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} - return out0, err +// ContextUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextUpgradeableMetaData.ABI instead. +var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI +// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. +type ContextUpgradeable struct { + ContextUpgradeableCaller // Read-only binding to the contract + ContextUpgradeableTransactor // Write-only binding to the contract + ContextUpgradeableFilterer // Log filterer for contract events } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { - return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) +// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) +// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - +// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) +// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextUpgradeableSession struct { + Contract *ContextUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) +// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextUpgradeableCallerSession struct { + Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - +// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextUpgradeableTransactorSession struct { + Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) +// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextUpgradeableRaw struct { + Contract *ContextUpgradeable // Generic contract binding to access the raw methods on } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) +// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextUpgradeableCallerRaw struct { + Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") +// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactorRaw struct { + Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} +// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { + contract, err := bindContextUpgradeable(address, backend, backend, backend) if err != nil { - return *new(uint8), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - + return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) +// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { + contract, err := bindContextUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableCaller{contract: contract}, nil } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) +// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { + contract, err := bindContextUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableTransactor{contract: contract}, nil } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") - +// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { + contract, err := bindContextUpgradeable(address, nil, nil, filterer) if err != nil { - return *new(uint16), err + return nil, err } + return &ContextUpgradeableFilterer{contract: contract}, nil +} - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) +// bindContextUpgradeable binds a generic wrapper to an already deployed contract. +func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} - return out0, err +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) +} +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transfer(opts) +} - if err != nil { - return *new(uint64), err - } +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) +} - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. +type ContextUpgradeableInitializedIterator struct { + Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log - return out0, err + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -} + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContextUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContextUpgradeableInitializedIterator) Error() error { + return it.fail } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContextUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. +type ContextUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { + logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { - return *new(uint8), err + return nil, err } + return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { - return out0, err + logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) +// IAllowListMetaData contains all meta data concerning the IAllowList contract. +var IAllowListMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } -// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. -// -// Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) NATIVEMINTER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "NATIVE_MINTER") +// IAllowListABI is the input ABI used to generate the binding from. +// Deprecated: Use IAllowListMetaData.ABI instead. +var IAllowListABI = IAllowListMetaData.ABI - if err != nil { - return *new(common.Address), err - } +// IAllowList is an auto generated Go binding around an Ethereum contract. +type IAllowList struct { + IAllowListCaller // Read-only binding to the contract + IAllowListTransactor // Write-only binding to the contract + IAllowListFilterer // Log filterer for contract events +} - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) +// IAllowListCaller is an auto generated read-only Go binding around an Ethereum contract. +type IAllowListCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - return out0, err +// IAllowListTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IAllowListTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} +// IAllowListFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IAllowListFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. -// -// Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) NATIVEMINTER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) +// IAllowListSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IAllowListSession struct { + Contract *IAllowList // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. -// -// Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) NATIVEMINTER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) +// IAllowListCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IAllowListCallerSession struct { + Contract *IAllowListCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") +// IAllowListTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IAllowListTransactorSession struct { + Contract *IAllowListTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} - if err != nil { - return *new([32]byte), err - } +// IAllowListRaw is an auto generated low-level Go binding around an Ethereum contract. +type IAllowListRaw struct { + Contract *IAllowList // Generic contract binding to access the raw methods on +} - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) +// IAllowListCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IAllowListCallerRaw struct { + Contract *IAllowListCaller // Generic read-only contract binding to access the raw methods on +} - return out0, err +// IAllowListTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IAllowListTransactorRaw struct { + Contract *IAllowListTransactor // Generic write-only contract binding to access the raw methods on +} +// NewIAllowList creates a new instance of IAllowList, bound to a specific deployed contract. +func NewIAllowList(address common.Address, backend bind.ContractBackend) (*IAllowList, error) { + contract, err := bindIAllowList(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IAllowList{IAllowListCaller: IAllowListCaller{contract: contract}, IAllowListTransactor: IAllowListTransactor{contract: contract}, IAllowListFilterer: IAllowListFilterer{contract: contract}}, nil } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +// NewIAllowListCaller creates a new read-only instance of IAllowList, bound to a specific deployed contract. +func NewIAllowListCaller(address common.Address, caller bind.ContractCaller) (*IAllowListCaller, error) { + contract, err := bindIAllowList(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IAllowListCaller{contract: contract}, nil } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +// NewIAllowListTransactor creates a new write-only instance of IAllowList, bound to a specific deployed contract. +func NewIAllowListTransactor(address common.Address, transactor bind.ContractTransactor) (*IAllowListTransactor, error) { + contract, err := bindIAllowList(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IAllowListTransactor{contract: contract}, nil } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") +// NewIAllowListFilterer creates a new log filterer instance of IAllowList, bound to a specific deployed contract. +func NewIAllowListFilterer(address common.Address, filterer bind.ContractFilterer) (*IAllowListFilterer, error) { + contract, err := bindIAllowList(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IAllowListFilterer{contract: contract}, nil +} +// bindIAllowList binds a generic wrapper to an already deployed contract. +func bindIAllowList(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IAllowListMetaData.GetAbi() if err != nil { - return *new([32]byte), err + return nil, err } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IAllowList *IAllowListRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAllowList.Contract.IAllowListCaller.contract.Call(opts, result, method, params...) +} - return out0, err +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IAllowList *IAllowListRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAllowList.Contract.IAllowListTransactor.contract.Transfer(opts) +} +// Transact invokes the (paid) contract method with params as input values. +func (_IAllowList *IAllowListRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAllowList.Contract.IAllowListTransactor.contract.Transact(opts, method, params...) } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IAllowList *IAllowListCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAllowList.Contract.contract.Call(opts, result, method, params...) } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IAllowList *IAllowListTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAllowList.Contract.contract.Transfer(opts) } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// Transact invokes the (paid) contract method with params as input values. +func (_IAllowList *IAllowListTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAllowList.Contract.contract.Transact(opts, method, params...) +} + +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. // -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_IAllowList *IAllowListCaller) ReadAllowList(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + err := _IAllowList.contract.Call(opts, &out, "readAllowList", addr) if err != nil { - return *new([32]byte), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. // -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_IAllowList *IAllowListSession) ReadAllowList(addr common.Address) (*big.Int, error) { + return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. // -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_IAllowList *IAllowListCallerSession) ReadAllowList(addr common.Address) (*big.Int, error) { + return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") +// Solidity: function setAdmin(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetAdmin(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setAdmin", addr) +} - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address addr) returns() +func (_IAllowList *IAllowListSession) SetAdmin(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) +} +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetAdmin(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) +// Solidity: function setEnabled(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetEnabled(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setEnabled", addr) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) +// Solidity: function setEnabled(address addr) returns() +func (_IAllowList *IAllowListSession) SetEnabled(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - +// Solidity: function setEnabled(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetEnabled(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) +// Solidity: function setManager(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetManager(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setManager", addr) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) +// Solidity: function setManager(address addr) returns() +func (_IAllowList *IAllowListSession) SetManager(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - +// Solidity: function setManager(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetManager(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) +// Solidity: function setNone(address addr) returns() +func (_IAllowList *IAllowListTransactor) SetNone(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _IAllowList.contract.Transact(opts, "setNone", addr) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) +// Solidity: function setNone(address addr) returns() +func (_IAllowList *IAllowListSession) SetNone(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) +// Solidity: function setNone(address addr) returns() +func (_IAllowList *IAllowListTransactorSession) SetNone(addr common.Address) (*types.Transaction, error) { + return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) +} - if err != nil { - return *new([32]byte), err +// IAllowListRoleSetIterator is returned from FilterRoleSet and is used to iterate over the raw logs and unpacked data for RoleSet events raised by the IAllowList contract. +type IAllowListRoleSetIterator struct { + Event *IAllowListRoleSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IAllowListRoleSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IAllowListRoleSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IAllowListRoleSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IAllowListRoleSetIterator) Error() error { + return it.fail } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAllowListRoleSetIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) +// IAllowListRoleSet represents a RoleSet event raised by the IAllowList contract. +type IAllowListRoleSet struct { + Role *big.Int + Account common.Address + Sender common.Address + OldRole *big.Int + Raw types.Log // Blockchain specific contextual infos } -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// FilterRoleSet is a free log retrieval operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. // -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_IAllowList *IAllowListFilterer) FilterRoleSet(opts *bind.FilterOpts, role []*big.Int, account []common.Address, sender []common.Address) (*IAllowListRoleSetIterator, error) { - if err != nil { - return *new(uint64), err + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) + logs, sub, err := _IAllowList.contract.FilterLogs(opts, "RoleSet", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &IAllowListRoleSetIterator{contract: _IAllowList.contract, event: "RoleSet", logs: logs, sub: sub}, nil } -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// WatchRoleSet is a free log subscription operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. // -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) -} +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_IAllowList *IAllowListFilterer) WatchRoleSet(opts *bind.WatchOpts, sink chan<- *IAllowListRoleSet, role []*big.Int, account []common.Address, sender []common.Address) (event.Subscription, error) { -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + logs, sub, err := _IAllowList.contract.WatchLogs(opts, "RoleSet", roleRule, accountRule, senderRule) if err != nil { - return *new(*big.Int), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IAllowListRoleSet) + if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} - return out0, err +// ParseRoleSet is a log parse operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_IAllowList *IAllowListFilterer) ParseRoleSet(log types.Log) (*IAllowListRoleSet, error) { + event := new(IAllowListRoleSet) + if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} +// INativeMinterMetaData contains all meta data concerning the INativeMinter contract. +var INativeMinterMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeCoinMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintNativeCoin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) +// INativeMinterABI is the input ABI used to generate the binding from. +// Deprecated: Use INativeMinterMetaData.ABI instead. +var INativeMinterABI = INativeMinterMetaData.ABI + +// INativeMinter is an auto generated Go binding around an Ethereum contract. +type INativeMinter struct { + INativeMinterCaller // Read-only binding to the contract + INativeMinterTransactor // Write-only binding to the contract + INativeMinterFilterer // Log filterer for contract events } -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) +// INativeMinterCaller is an auto generated read-only Go binding around an Ethereum contract. +type INativeMinterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) +// INativeMinterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type INativeMinterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) +// INativeMinterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type INativeMinterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) +// INativeMinterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type INativeMinterSession struct { + Contract *INativeMinter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +// INativeMinterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type INativeMinterCallerSession struct { + Contract *INativeMinterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// INativeMinterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type INativeMinterTransactorSession struct { + Contract *INativeMinterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// INativeMinterRaw is an auto generated low-level Go binding around an Ethereum contract. +type INativeMinterRaw struct { + Contract *INativeMinter // Generic contract binding to access the raw methods on } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +// INativeMinterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type INativeMinterCallerRaw struct { + Contract *INativeMinterCaller // Generic read-only contract binding to access the raw methods on } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// INativeMinterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type INativeMinterTransactorRaw struct { + Contract *INativeMinterTransactor // Generic write-only contract binding to access the raw methods on } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// NewINativeMinter creates a new instance of INativeMinter, bound to a specific deployed contract. +func NewINativeMinter(address common.Address, backend bind.ContractBackend) (*INativeMinter, error) { + contract, err := bindINativeMinter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &INativeMinter{INativeMinterCaller: INativeMinterCaller{contract: contract}, INativeMinterTransactor: INativeMinterTransactor{contract: contract}, INativeMinterFilterer: INativeMinterFilterer{contract: contract}}, nil } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) +// NewINativeMinterCaller creates a new read-only instance of INativeMinter, bound to a specific deployed contract. +func NewINativeMinterCaller(address common.Address, caller bind.ContractCaller) (*INativeMinterCaller, error) { + contract, err := bindINativeMinter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &INativeMinterCaller{contract: contract}, nil } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// NewINativeMinterTransactor creates a new write-only instance of INativeMinter, bound to a specific deployed contract. +func NewINativeMinterTransactor(address common.Address, transactor bind.ContractTransactor) (*INativeMinterTransactor, error) { + contract, err := bindINativeMinter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &INativeMinterTransactor{contract: contract}, nil } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// NewINativeMinterFilterer creates a new log filterer instance of INativeMinter, bound to a specific deployed contract. +func NewINativeMinterFilterer(address common.Address, filterer bind.ContractFilterer) (*INativeMinterFilterer, error) { + contract, err := bindINativeMinter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &INativeMinterFilterer{contract: contract}, nil } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +// bindINativeMinter binds a generic wrapper to an already deployed contract. +func bindINativeMinter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := INativeMinterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INativeMinter *INativeMinterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INativeMinter.Contract.INativeMinterCaller.contract.Call(opts, result, method, params...) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INativeMinter *INativeMinterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INativeMinter.Contract.INativeMinterTransactor.contract.Transfer(opts) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +// Transact invokes the (paid) contract method with params as input values. +func (_INativeMinter *INativeMinterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INativeMinter.Contract.INativeMinterTransactor.contract.Transact(opts, method, params...) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INativeMinter *INativeMinterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INativeMinter.Contract.contract.Call(opts, result, method, params...) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INativeMinter *INativeMinterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INativeMinter.Contract.contract.Transfer(opts) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +// Transact invokes the (paid) contract method with params as input values. +func (_INativeMinter *INativeMinterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INativeMinter.Contract.contract.Transact(opts, method, params...) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. // -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_INativeMinter *INativeMinterCaller) ReadAllowList(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { + var out []interface{} + err := _INativeMinter.contract.Call(opts, &out, "readAllowList", addr) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. // -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_INativeMinter *INativeMinterSession) ReadAllowList(addr common.Address) (*big.Int, error) { + return _INativeMinter.Contract.ReadAllowList(&_INativeMinter.CallOpts, addr) } -// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. +// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initialize", settings) +// Solidity: function readAllowList(address addr) view returns(uint256 role) +func (_INativeMinter *INativeMinterCallerSession) ReadAllowList(addr common.Address) (*big.Int, error) { + return _INativeMinter.Contract.ReadAllowList(&_INativeMinter.CallOpts, addr) } -// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. +// MintNativeCoin is a paid mutator transaction binding the contract method 0x4f5aaaba. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) +// Solidity: function mintNativeCoin(address addr, uint256 amount) returns() +func (_INativeMinter *INativeMinterTransactor) MintNativeCoin(opts *bind.TransactOpts, addr common.Address, amount *big.Int) (*types.Transaction, error) { + return _INativeMinter.contract.Transact(opts, "mintNativeCoin", addr, amount) } -// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. +// MintNativeCoin is a paid mutator transaction binding the contract method 0x4f5aaaba. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) +// Solidity: function mintNativeCoin(address addr, uint256 amount) returns() +func (_INativeMinter *INativeMinterSession) MintNativeCoin(addr common.Address, amount *big.Int) (*types.Transaction, error) { + return _INativeMinter.Contract.MintNativeCoin(&_INativeMinter.TransactOpts, addr, amount) } -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// MintNativeCoin is a paid mutator transaction binding the contract method 0x4f5aaaba. // -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID) +// Solidity: function mintNativeCoin(address addr, uint256 amount) returns() +func (_INativeMinter *INativeMinterTransactorSession) MintNativeCoin(addr common.Address, amount *big.Int) (*types.Transaction, error) { + return _INativeMinter.Contract.MintNativeCoin(&_INativeMinter.TransactOpts, addr, amount) } -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. // -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) +// Solidity: function setAdmin(address addr) returns() +func (_INativeMinter *INativeMinterTransactor) SetAdmin(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _INativeMinter.contract.Transact(opts, "setAdmin", addr) } -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. // -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) +// Solidity: function setAdmin(address addr) returns() +func (_INativeMinter *INativeMinterSession) SetAdmin(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetAdmin(&_INativeMinter.TransactOpts, addr) } -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. // -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +// Solidity: function setAdmin(address addr) returns() +func (_INativeMinter *INativeMinterTransactorSession) SetAdmin(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetAdmin(&_INativeMinter.TransactOpts, addr) } -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. // -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Solidity: function setEnabled(address addr) returns() +func (_INativeMinter *INativeMinterTransactor) SetEnabled(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _INativeMinter.contract.Transact(opts, "setEnabled", addr) } -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. // -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +// Solidity: function setEnabled(address addr) returns() +func (_INativeMinter *INativeMinterSession) SetEnabled(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetEnabled(&_INativeMinter.TransactOpts, addr) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. // -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +// Solidity: function setEnabled(address addr) returns() +func (_INativeMinter *INativeMinterTransactorSession) SetEnabled(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetEnabled(&_INativeMinter.TransactOpts, addr) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. // -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function setManager(address addr) returns() +func (_INativeMinter *INativeMinterTransactor) SetManager(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _INativeMinter.contract.Transact(opts, "setManager", addr) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. // -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +// Solidity: function setManager(address addr) returns() +func (_INativeMinter *INativeMinterSession) SetManager(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetManager(&_INativeMinter.TransactOpts, addr) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) +// Solidity: function setManager(address addr) returns() +func (_INativeMinter *INativeMinterTransactorSession) SetManager(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetManager(&_INativeMinter.TransactOpts, addr) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +// Solidity: function setNone(address addr) returns() +func (_INativeMinter *INativeMinterTransactor) SetNone(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _INativeMinter.contract.Transact(opts, "setNone", addr) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +// Solidity: function setNone(address addr) returns() +func (_INativeMinter *INativeMinterSession) SetNone(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetNone(&_INativeMinter.TransactOpts, addr) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +// Solidity: function setNone(address addr) returns() +func (_INativeMinter *INativeMinterTransactorSession) SetNone(addr common.Address) (*types.Transaction, error) { + return _INativeMinter.Contract.SetNone(&_INativeMinter.TransactOpts, addr) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// INativeMinterNativeCoinMintedIterator is returned from FilterNativeCoinMinted and is used to iterate over the raw logs and unpacked data for NativeCoinMinted events raised by the INativeMinter contract. +type INativeMinterNativeCoinMintedIterator struct { + Event *INativeMinterNativeCoinMinted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeMinterNativeCoinMintedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeMinterNativeCoinMinted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeMinterNativeCoinMinted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeMinterNativeCoinMintedIterator) Error() error { + return it.fail } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeMinterNativeCoinMintedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +// INativeMinterNativeCoinMinted represents a NativeCoinMinted event raised by the INativeMinter contract. +type INativeMinterNativeCoinMinted struct { + Sender common.Address + Recipient common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// FilterNativeCoinMinted is a free log retrieval operation binding the contract event 0x400cd392f3d56fd10bb1dbd5839fdda8298208ddaa97b368faa053e1850930ee. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +// Solidity: event NativeCoinMinted(address indexed sender, address indexed recipient, uint256 amount) +func (_INativeMinter *INativeMinterFilterer) FilterNativeCoinMinted(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*INativeMinterNativeCoinMintedIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _INativeMinter.contract.FilterLogs(opts, "NativeCoinMinted", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &INativeMinterNativeCoinMintedIterator{contract: _INativeMinter.contract, event: "NativeCoinMinted", logs: logs, sub: sub}, nil } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// WatchNativeCoinMinted is a free log subscription operation binding the contract event 0x400cd392f3d56fd10bb1dbd5839fdda8298208ddaa97b368faa053e1850930ee. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// NativeTokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegationEndedIterator struct { - Event *NativeTokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} +// Solidity: event NativeCoinMinted(address indexed sender, address indexed recipient, uint256 amount) +func (_INativeMinter *INativeMinterFilterer) WatchNativeCoinMinted(opts *bind.WatchOpts, sink chan<- *INativeMinterNativeCoinMinted, sender []common.Address, recipient []common.Address) (event.Subscription, error) { -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + logs, sub, err := _INativeMinter.contract.WatchLogs(opts, "NativeCoinMinted", senderRule, recipientRule) if err != nil { return nil, err } @@ -1267,8 +1407,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegationEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + event := new(INativeMinterNativeCoinMinted) + if err := _INativeMinter.contract.UnpackLog(event, "NativeCoinMinted", log); err != nil { return err } event.Raw = log @@ -1289,21 +1429,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega }), nil } -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// ParseNativeCoinMinted is a log parse operation binding the contract event 0x400cd392f3d56fd10bb1dbd5839fdda8298208ddaa97b368faa053e1850930ee. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*NativeTokenStakingManagerDelegationEnded, error) { - event := new(NativeTokenStakingManagerDelegationEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { +// Solidity: event NativeCoinMinted(address indexed sender, address indexed recipient, uint256 amount) +func (_INativeMinter *INativeMinterFilterer) ParseNativeCoinMinted(log types.Log) (*INativeMinterNativeCoinMinted, error) { + event := new(INativeMinterNativeCoinMinted) + if err := _INativeMinter.contract.UnpackLog(event, "NativeCoinMinted", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorAddedIterator struct { - Event *NativeTokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log +// INativeMinterRoleSetIterator is returned from FilterRoleSet and is used to iterate over the raw logs and unpacked data for RoleSet events raised by the INativeMinter contract. +type INativeMinterRoleSetIterator struct { + Event *INativeMinterRoleSet // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1317,7 +1457,7 @@ type NativeTokenStakingManagerDelegatorAddedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { +func (it *INativeMinterRoleSetIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1326,7 +1466,7 @@ func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) + it.Event = new(INativeMinterRoleSet) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1341,7 +1481,7 @@ func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) + it.Event = new(INativeMinterRoleSet) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1357,73 +1497,70 @@ func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Error() error { +func (it *INativeMinterRoleSetIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Close() error { +func (it *INativeMinterRoleSetIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// INativeMinterRoleSet represents a RoleSet event raised by the INativeMinter contract. +type INativeMinterRoleSet struct { + Role *big.Int + Account common.Address + Sender common.Address + OldRole *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// FilterRoleSet is a free log retrieval operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenStakingManagerDelegatorAddedIterator, error) { +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_INativeMinter *INativeMinterFilterer) FilterRoleSet(opts *bind.FilterOpts, role []*big.Int, account []common.Address, sender []common.Address) (*INativeMinterRoleSetIterator, error) { - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _INativeMinter.contract.FilterLogs(opts, "RoleSet", roleRule, accountRule, senderRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerDelegatorAddedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil + return &INativeMinterRoleSetIterator{contract: _INativeMinter.contract, event: "RoleSet", logs: logs, sub: sub}, nil } -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// WatchRoleSet is a free log subscription operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_INativeMinter *INativeMinterFilterer) WatchRoleSet(opts *bind.WatchOpts, sink chan<- *INativeMinterRoleSet, role []*big.Int, account []common.Address, sender []common.Address) (event.Subscription, error) { - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _INativeMinter.contract.WatchLogs(opts, "RoleSet", roleRule, accountRule, senderRule) if err != nil { return nil, err } @@ -1433,8 +1570,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorAdded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + event := new(INativeMinterRoleSet) + if err := _INativeMinter.contract.UnpackLog(event, "RoleSet", log); err != nil { return err } event.Raw = log @@ -1455,59 +1592,12308 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega }), nil } -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// ParseRoleSet is a log parse operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenStakingManagerDelegatorAdded, error) { - event := new(NativeTokenStakingManagerDelegatorAdded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { +// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) +func (_INativeMinter *INativeMinterFilterer) ParseRoleSet(log types.Log) (*INativeMinterRoleSet, error) { + event := new(INativeMinterRoleSet) + if err := _INativeMinter.contract.UnpackLog(event, "RoleSet", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRegisteredIterator struct { - Event *NativeTokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log +// INativeTokenStakingManagerMetaData contains all meta data concerning the INativeTokenStakingManager contract. +var INativeTokenStakingManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// INativeTokenStakingManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use INativeTokenStakingManagerMetaData.ABI instead. +var INativeTokenStakingManagerABI = INativeTokenStakingManagerMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// INativeTokenStakingManager is an auto generated Go binding around an Ethereum contract. +type INativeTokenStakingManager struct { + INativeTokenStakingManagerCaller // Read-only binding to the contract + INativeTokenStakingManagerTransactor // Write-only binding to the contract + INativeTokenStakingManagerFilterer // Log filterer for contract events } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// INativeTokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type INativeTokenStakingManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - default: - return false - } - } +// INativeTokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type INativeTokenStakingManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INativeTokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type INativeTokenStakingManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INativeTokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type INativeTokenStakingManagerSession struct { + Contract *INativeTokenStakingManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// INativeTokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type INativeTokenStakingManagerCallerSession struct { + Contract *INativeTokenStakingManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// INativeTokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type INativeTokenStakingManagerTransactorSession struct { + Contract *INativeTokenStakingManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// INativeTokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type INativeTokenStakingManagerRaw struct { + Contract *INativeTokenStakingManager // Generic contract binding to access the raw methods on +} + +// INativeTokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type INativeTokenStakingManagerCallerRaw struct { + Contract *INativeTokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// INativeTokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type INativeTokenStakingManagerTransactorRaw struct { + Contract *INativeTokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewINativeTokenStakingManager creates a new instance of INativeTokenStakingManager, bound to a specific deployed contract. +func NewINativeTokenStakingManager(address common.Address, backend bind.ContractBackend) (*INativeTokenStakingManager, error) { + contract, err := bindINativeTokenStakingManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &INativeTokenStakingManager{INativeTokenStakingManagerCaller: INativeTokenStakingManagerCaller{contract: contract}, INativeTokenStakingManagerTransactor: INativeTokenStakingManagerTransactor{contract: contract}, INativeTokenStakingManagerFilterer: INativeTokenStakingManagerFilterer{contract: contract}}, nil +} + +// NewINativeTokenStakingManagerCaller creates a new read-only instance of INativeTokenStakingManager, bound to a specific deployed contract. +func NewINativeTokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*INativeTokenStakingManagerCaller, error) { + contract, err := bindINativeTokenStakingManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerCaller{contract: contract}, nil +} + +// NewINativeTokenStakingManagerTransactor creates a new write-only instance of INativeTokenStakingManager, bound to a specific deployed contract. +func NewINativeTokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*INativeTokenStakingManagerTransactor, error) { + contract, err := bindINativeTokenStakingManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerTransactor{contract: contract}, nil +} + +// NewINativeTokenStakingManagerFilterer creates a new log filterer instance of INativeTokenStakingManager, bound to a specific deployed contract. +func NewINativeTokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*INativeTokenStakingManagerFilterer, error) { + contract, err := bindINativeTokenStakingManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerFilterer{contract: contract}, nil +} + +// bindINativeTokenStakingManager binds a generic wrapper to an already deployed contract. +func bindINativeTokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := INativeTokenStakingManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INativeTokenStakingManager *INativeTokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INativeTokenStakingManager.Contract.INativeTokenStakingManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INativeTokenStakingManager *INativeTokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.INativeTokenStakingManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_INativeTokenStakingManager *INativeTokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.INativeTokenStakingManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INativeTokenStakingManager *INativeTokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INativeTokenStakingManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ClaimDelegationFees(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ClaimDelegationFees(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteEndDelegation(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteEndDelegation(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteEndValidation(&_INativeTokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteEndValidation(&_INativeTokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32 validationID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32 validationID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32 validationID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeValidatorSet(&_INativeTokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.InitializeValidatorSet(&_INativeTokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ResendUpdateDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.ResendUpdateDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.SubmitUptimeProof(&_INativeTokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _INativeTokenStakingManager.Contract.SubmitUptimeProof(&_INativeTokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// INativeTokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegationEndedIterator struct { + Event *INativeTokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*INativeTokenStakingManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerDelegationEndedIterator{contract: _INativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerDelegationEnded) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*INativeTokenStakingManagerDelegationEnded, error) { + event := new(INativeTokenStakingManagerDelegationEnded) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegatorAddedIterator struct { + Event *INativeTokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*INativeTokenStakingManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerDelegatorAddedIterator{contract: _INativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerDelegatorAdded) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*INativeTokenStakingManagerDelegatorAdded, error) { + event := new(INativeTokenStakingManagerDelegatorAdded) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegatorRegisteredIterator struct { + Event *INativeTokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*INativeTokenStakingManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerDelegatorRegisteredIterator{contract: _INativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerDelegatorRegistered) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*INativeTokenStakingManagerDelegatorRegistered, error) { + event := new(INativeTokenStakingManagerDelegatorRegistered) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { + Event *INativeTokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*INativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _INativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerDelegatorRemovalInitialized) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*INativeTokenStakingManagerDelegatorRemovalInitialized, error) { + event := new(INativeTokenStakingManagerDelegatorRemovalInitialized) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerInitialValidatorCreatedIterator struct { + Event *INativeTokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*INativeTokenStakingManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _INativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerInitialValidatorCreated) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*INativeTokenStakingManagerInitialValidatorCreated, error) { + event := new(INativeTokenStakingManagerInitialValidatorCreated) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerUptimeUpdatedIterator struct { + Event *INativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*INativeTokenStakingManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerUptimeUpdatedIterator{contract: _INativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerUptimeUpdated) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*INativeTokenStakingManagerUptimeUpdated, error) { + event := new(INativeTokenStakingManagerUptimeUpdated) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidationPeriodCreatedIterator struct { + Event *INativeTokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*INativeTokenStakingManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _INativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerValidationPeriodCreated) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*INativeTokenStakingManagerValidationPeriodCreated, error) { + event := new(INativeTokenStakingManagerValidationPeriodCreated) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidationPeriodEndedIterator struct { + Event *INativeTokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*INativeTokenStakingManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerValidationPeriodEndedIterator{contract: _INativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerValidationPeriodEnded) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*INativeTokenStakingManagerValidationPeriodEnded, error) { + event := new(INativeTokenStakingManagerValidationPeriodEnded) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidationPeriodRegisteredIterator struct { + Event *INativeTokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*INativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _INativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerValidationPeriodRegistered) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*INativeTokenStakingManagerValidationPeriodRegistered, error) { + event := new(INativeTokenStakingManagerValidationPeriodRegistered) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidatorRemovalInitializedIterator struct { + Event *INativeTokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*INativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _INativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerValidatorRemovalInitialized) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*INativeTokenStakingManagerValidatorRemovalInitialized, error) { + event := new(INativeTokenStakingManagerValidatorRemovalInitialized) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INativeTokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidatorWeightUpdateIterator struct { + Event *INativeTokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INativeTokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INativeTokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the INativeTokenStakingManager contract. +type INativeTokenStakingManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*INativeTokenStakingManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &INativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _INativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INativeTokenStakingManagerValidatorWeightUpdate) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*INativeTokenStakingManagerValidatorWeightUpdate, error) { + event := new(INativeTokenStakingManagerValidatorWeightUpdate) + if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerMetaData contains all meta data concerning the IPoSValidatorManager contract. +var IPoSValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IPoSValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IPoSValidatorManagerMetaData.ABI instead. +var IPoSValidatorManagerABI = IPoSValidatorManagerMetaData.ABI + +// IPoSValidatorManager is an auto generated Go binding around an Ethereum contract. +type IPoSValidatorManager struct { + IPoSValidatorManagerCaller // Read-only binding to the contract + IPoSValidatorManagerTransactor // Write-only binding to the contract + IPoSValidatorManagerFilterer // Log filterer for contract events +} + +// IPoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPoSValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPoSValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPoSValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPoSValidatorManagerSession struct { + Contract *IPoSValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPoSValidatorManagerCallerSession struct { + Contract *IPoSValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPoSValidatorManagerTransactorSession struct { + Contract *IPoSValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPoSValidatorManagerRaw struct { + Contract *IPoSValidatorManager // Generic contract binding to access the raw methods on +} + +// IPoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPoSValidatorManagerCallerRaw struct { + Contract *IPoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IPoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPoSValidatorManagerTransactorRaw struct { + Contract *IPoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPoSValidatorManager creates a new instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*IPoSValidatorManager, error) { + contract, err := bindIPoSValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPoSValidatorManager{IPoSValidatorManagerCaller: IPoSValidatorManagerCaller{contract: contract}, IPoSValidatorManagerTransactor: IPoSValidatorManagerTransactor{contract: contract}, IPoSValidatorManagerFilterer: IPoSValidatorManagerFilterer{contract: contract}}, nil +} + +// NewIPoSValidatorManagerCaller creates a new read-only instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IPoSValidatorManagerCaller, error) { + contract, err := bindIPoSValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerCaller{contract: contract}, nil +} + +// NewIPoSValidatorManagerTransactor creates a new write-only instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoSValidatorManagerTransactor, error) { + contract, err := bindIPoSValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerTransactor{contract: contract}, nil +} + +// NewIPoSValidatorManagerFilterer creates a new log filterer instance of IPoSValidatorManager, bound to a specific deployed contract. +func NewIPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoSValidatorManagerFilterer, error) { + contract, err := bindIPoSValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerFilterer{contract: contract}, nil +} + +// bindIPoSValidatorManager binds a generic wrapper to an already deployed contract. +func bindIPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPoSValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoSValidatorManager.Contract.IPoSValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoSValidatorManager *IPoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoSValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// IPoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegationEndedIterator struct { + Event *IPoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegationEndedIterator{contract: _IPoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegationEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*IPoSValidatorManagerDelegationEnded, error) { + event := new(IPoSValidatorManagerDelegationEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorAddedIterator struct { + Event *IPoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IPoSValidatorManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegatorAddedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegatorAdded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*IPoSValidatorManagerDelegatorAdded, error) { + event := new(IPoSValidatorManagerDelegatorAdded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRegisteredIterator struct { + Event *IPoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegatorRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegatorRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*IPoSValidatorManagerDelegatorRegistered, error) { + event := new(IPoSValidatorManagerDelegatorRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRemovalInitializedIterator struct { + Event *IPoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerDelegatorRemovalInitialized, error) { + event := new(IPoSValidatorManagerDelegatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerInitialValidatorCreatedIterator struct { + Event *IPoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoSValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerInitialValidatorCreatedIterator{contract: _IPoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerInitialValidatorCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoSValidatorManagerInitialValidatorCreated, error) { + event := new(IPoSValidatorManagerInitialValidatorCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerUptimeUpdatedIterator struct { + Event *IPoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerUptimeUpdatedIterator{contract: _IPoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerUptimeUpdated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*IPoSValidatorManagerUptimeUpdated, error) { + event := new(IPoSValidatorManagerUptimeUpdated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodCreatedIterator struct { + Event *IPoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoSValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidationPeriodCreatedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidationPeriodCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoSValidatorManagerValidationPeriodCreated, error) { + event := new(IPoSValidatorManagerValidationPeriodCreated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodEndedIterator struct { + Event *IPoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IPoSValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidationPeriodEndedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidationPeriodEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IPoSValidatorManagerValidationPeriodEnded, error) { + event := new(IPoSValidatorManagerValidationPeriodEnded) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodRegisteredIterator struct { + Event *IPoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidationPeriodRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoSValidatorManagerValidationPeriodRegistered, error) { + event := new(IPoSValidatorManagerValidationPeriodRegistered) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorRemovalInitializedIterator struct { + Event *IPoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoSValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerValidatorRemovalInitialized, error) { + event := new(IPoSValidatorManagerValidatorRemovalInitialized) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorWeightUpdateIterator struct { + Event *IPoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoSValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &IPoSValidatorManagerValidatorWeightUpdateIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPoSValidatorManagerValidatorWeightUpdate) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoSValidatorManagerValidatorWeightUpdate, error) { + event := new(IPoSValidatorManagerValidatorWeightUpdate) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IRewardCalculatorMetaData contains all meta data concerning the IRewardCalculator contract. +var IRewardCalculatorMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IRewardCalculatorABI is the input ABI used to generate the binding from. +// Deprecated: Use IRewardCalculatorMetaData.ABI instead. +var IRewardCalculatorABI = IRewardCalculatorMetaData.ABI + +// IRewardCalculator is an auto generated Go binding around an Ethereum contract. +type IRewardCalculator struct { + IRewardCalculatorCaller // Read-only binding to the contract + IRewardCalculatorTransactor // Write-only binding to the contract + IRewardCalculatorFilterer // Log filterer for contract events +} + +// IRewardCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type IRewardCalculatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IRewardCalculatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IRewardCalculatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IRewardCalculatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IRewardCalculatorSession struct { + Contract *IRewardCalculator // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IRewardCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IRewardCalculatorCallerSession struct { + Contract *IRewardCalculatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IRewardCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IRewardCalculatorTransactorSession struct { + Contract *IRewardCalculatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IRewardCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type IRewardCalculatorRaw struct { + Contract *IRewardCalculator // Generic contract binding to access the raw methods on +} + +// IRewardCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IRewardCalculatorCallerRaw struct { + Contract *IRewardCalculatorCaller // Generic read-only contract binding to access the raw methods on +} + +// IRewardCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IRewardCalculatorTransactorRaw struct { + Contract *IRewardCalculatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIRewardCalculator creates a new instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculator(address common.Address, backend bind.ContractBackend) (*IRewardCalculator, error) { + contract, err := bindIRewardCalculator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IRewardCalculator{IRewardCalculatorCaller: IRewardCalculatorCaller{contract: contract}, IRewardCalculatorTransactor: IRewardCalculatorTransactor{contract: contract}, IRewardCalculatorFilterer: IRewardCalculatorFilterer{contract: contract}}, nil +} + +// NewIRewardCalculatorCaller creates a new read-only instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorCaller(address common.Address, caller bind.ContractCaller) (*IRewardCalculatorCaller, error) { + contract, err := bindIRewardCalculator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IRewardCalculatorCaller{contract: contract}, nil +} + +// NewIRewardCalculatorTransactor creates a new write-only instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*IRewardCalculatorTransactor, error) { + contract, err := bindIRewardCalculator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IRewardCalculatorTransactor{contract: contract}, nil +} + +// NewIRewardCalculatorFilterer creates a new log filterer instance of IRewardCalculator, bound to a specific deployed contract. +func NewIRewardCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*IRewardCalculatorFilterer, error) { + contract, err := bindIRewardCalculator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IRewardCalculatorFilterer{contract: contract}, nil +} + +// bindIRewardCalculator binds a generic wrapper to an already deployed contract. +func bindIRewardCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IRewardCalculatorMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IRewardCalculator *IRewardCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IRewardCalculator.Contract.IRewardCalculatorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IRewardCalculator *IRewardCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IRewardCalculator *IRewardCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IRewardCalculator *IRewardCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IRewardCalculator.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IRewardCalculator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IRewardCalculator.Contract.contract.Transact(opts, method, params...) +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorCaller) CalculateReward(opts *bind.CallOpts, stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + var out []interface{} + err := _IRewardCalculator.contract.Call(opts, &out, "calculateReward", stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) +} + +// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. +// +// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) +func (_IRewardCalculator *IRewardCalculatorCallerSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { + return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) +} + +// IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. +var IValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IValidatorManagerMetaData.ABI instead. +var IValidatorManagerABI = IValidatorManagerMetaData.ABI + +// IValidatorManager is an auto generated Go binding around an Ethereum contract. +type IValidatorManager struct { + IValidatorManagerCaller // Read-only binding to the contract + IValidatorManagerTransactor // Write-only binding to the contract + IValidatorManagerFilterer // Log filterer for contract events +} + +// IValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IValidatorManagerSession struct { + Contract *IValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IValidatorManagerCallerSession struct { + Contract *IValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IValidatorManagerTransactorSession struct { + Contract *IValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IValidatorManagerRaw struct { + Contract *IValidatorManager // Generic contract binding to access the raw methods on +} + +// IValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IValidatorManagerCallerRaw struct { + Contract *IValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IValidatorManagerTransactorRaw struct { + Contract *IValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIValidatorManager creates a new instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManager(address common.Address, backend bind.ContractBackend) (*IValidatorManager, error) { + contract, err := bindIValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IValidatorManager{IValidatorManagerCaller: IValidatorManagerCaller{contract: contract}, IValidatorManagerTransactor: IValidatorManagerTransactor{contract: contract}, IValidatorManagerFilterer: IValidatorManagerFilterer{contract: contract}}, nil +} + +// NewIValidatorManagerCaller creates a new read-only instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IValidatorManagerCaller, error) { + contract, err := bindIValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IValidatorManagerCaller{contract: contract}, nil +} + +// NewIValidatorManagerTransactor creates a new write-only instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IValidatorManagerTransactor, error) { + contract, err := bindIValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IValidatorManagerTransactor{contract: contract}, nil +} + +// NewIValidatorManagerFilterer creates a new log filterer instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IValidatorManagerFilterer, error) { + contract, err := bindIValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IValidatorManagerFilterer{contract: contract}, nil +} + +// bindIValidatorManager binds a generic wrapper to an already deployed contract. +func bindIValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IValidatorManager *IValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IValidatorManager.Contract.IValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IValidatorManager *IValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IValidatorManager *IValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IValidatorManager *IValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IValidatorManager *IValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IValidatorManager *IValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// IValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IValidatorManager contract. +type IValidatorManagerInitialValidatorCreatedIterator struct { + Event *IValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IValidatorManager contract. +type IValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerInitialValidatorCreatedIterator{contract: _IValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerInitialValidatorCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IValidatorManagerInitialValidatorCreated, error) { + event := new(IValidatorManagerInitialValidatorCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodCreatedIterator struct { + Event *IValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodCreatedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IValidatorManagerValidationPeriodCreated, error) { + event := new(IValidatorManagerValidationPeriodCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodEndedIterator struct { + Event *IValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodEndedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodEnded) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IValidatorManagerValidationPeriodEnded, error) { + event := new(IValidatorManagerValidationPeriodEnded) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodRegisteredIterator struct { + Event *IValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodRegisteredIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodRegistered) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IValidatorManagerValidationPeriodRegistered, error) { + event := new(IValidatorManagerValidationPeriodRegistered) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IValidatorManager contract. +type IValidatorManagerValidatorRemovalInitializedIterator struct { + Event *IValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IValidatorManager contract. +type IValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidatorRemovalInitializedIterator{contract: _IValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidatorRemovalInitialized) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IValidatorManagerValidatorRemovalInitialized, error) { + event := new(IValidatorManagerValidatorRemovalInitialized) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IValidatorManager contract. +type IValidatorManagerValidatorWeightUpdateIterator struct { + Event *IValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IValidatorManager contract. +type IValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidatorWeightUpdateIterator{contract: _IValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidatorWeightUpdate) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IValidatorManagerValidatorWeightUpdate, error) { + event := new(IValidatorManagerValidatorWeightUpdate) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. +var IWarpMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWarpMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use IWarpMessengerMetaData.ABI instead. +var IWarpMessengerABI = IWarpMessengerMetaData.ABI + +// IWarpMessenger is an auto generated Go binding around an Ethereum contract. +type IWarpMessenger struct { + IWarpMessengerCaller // Read-only binding to the contract + IWarpMessengerTransactor // Write-only binding to the contract + IWarpMessengerFilterer // Log filterer for contract events +} + +// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWarpMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWarpMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWarpMessengerSession struct { + Contract *IWarpMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWarpMessengerCallerSession struct { + Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWarpMessengerTransactorSession struct { + Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWarpMessengerRaw struct { + Contract *IWarpMessenger // Generic contract binding to access the raw methods on +} + +// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWarpMessengerCallerRaw struct { + Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactorRaw struct { + Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { + contract, err := bindIWarpMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil +} + +// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { + contract, err := bindIWarpMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerCaller{contract: contract}, nil +} + +// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { + contract, err := bindIWarpMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerTransactor{contract: contract}, nil +} + +// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { + contract, err := bindIWarpMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWarpMessengerFilterer{contract: contract}, nil +} + +// bindIWarpMessenger binds a generic wrapper to an already deployed contract. +func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWarpMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) + + outstruct := new(struct { + WarpBlockHash WarpBlockHash + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) + + outstruct := new(struct { + Message WarpMessage + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessageIterator struct { + Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWarpMessengerSendWarpMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWarpMessengerSendWarpMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessage struct { + Sender common.Address + MessageID [32]byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil +} + +// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// InitializableMetaData contains all meta data concerning the Initializable contract. +var InitializableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// InitializableABI is the input ABI used to generate the binding from. +// Deprecated: Use InitializableMetaData.ABI instead. +var InitializableABI = InitializableMetaData.ABI + +// Initializable is an auto generated Go binding around an Ethereum contract. +type Initializable struct { + InitializableCaller // Read-only binding to the contract + InitializableTransactor // Write-only binding to the contract + InitializableFilterer // Log filterer for contract events +} + +// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. +type InitializableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type InitializableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type InitializableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type InitializableSession struct { + Contract *Initializable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type InitializableCallerSession struct { + Contract *InitializableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type InitializableTransactorSession struct { + Contract *InitializableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. +type InitializableRaw struct { + Contract *Initializable // Generic contract binding to access the raw methods on +} + +// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type InitializableCallerRaw struct { + Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on +} + +// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type InitializableTransactorRaw struct { + Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. +func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { + contract, err := bindInitializable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil +} + +// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { + contract, err := bindInitializable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &InitializableCaller{contract: contract}, nil +} + +// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { + contract, err := bindInitializable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &InitializableTransactor{contract: contract}, nil +} + +// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. +func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { + contract, err := bindInitializable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &InitializableFilterer{contract: contract}, nil +} + +// bindInitializable binds a generic wrapper to an already deployed contract. +func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := InitializableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transact(opts, method, params...) +} + +// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. +type InitializableInitializedIterator struct { + Event *InitializableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *InitializableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *InitializableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *InitializableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// InitializableInitialized represents a Initialized event raised by the Initializable contract. +type InitializableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { + + logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { + + logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. +var NativeTokenStakingManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615a07380380615a0783398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158ba8061014d5f395ff3fe6080604052600436106101f1575f3560e01c80638280a25a11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b80638280a25a1461045257806393e245981461046657806398f3e2b414610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360305d621161015957806360305d62146103ab57806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d5780635297fae61461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506102146103a6366004614a43565b61107c565b3480156103b6575f80fd5b506103bf601481565b60405163ffffffff9091168152602001610257565b3480156103df575f80fd5b506103f36103ee366004614a7f565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b50610249603081565b348015610471575f80fd5b506102146104803660046149a4565b6113ca565b348015610490575f80fd5b5061021461049f366004614a43565b611495565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614aab565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157e583398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f8051602061580583398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614b0c565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b79565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614bf9565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206158658339815191526020526040808220815160e0810190925280545f8051602061580583398151915293929190829060ff16600581111561069757610697614b23565b60058111156106a8576106a8614b23565b81526020016001820180546106bc90614c64565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c64565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614b23565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614daa565b6040518263ffffffff1660e01b815260040161088b9190614de3565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614df5565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206158058339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614df5565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e20565b6001600160a01b031614610a12576109ed6060840160408501614e20565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e3b565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e3b565b8363ffffffff16818110610a5957610a59614e80565b9050602002810190610a6b9190614e94565b610a7490614eff565b80516040519192505f916008880191610a8c91614f7a565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614de3565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f7a565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614df5565b90508086600801835f0151604051610b5b9190614f7a565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614b23565b021790555060208201516001820190610bf69082614fd4565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b9116856150a3565b8251604051919550610cac91614f7a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d01906150b6565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150d8565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614de3565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614df5565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b919061521a565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614daa565b90505f600282604051610e5f9190614f7a565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614df5565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614b23565b14610f4c578060405163170cc93360e21b815260040161063c9190614c96565b6108cb8383612405565b5f805f805160206157e583398151915260030154610f7490846152a5565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157e58339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614b23565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061584583398151915255565b50565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff1660038111156110c9576110c9614b23565b60038111156110da576110da614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614b23565b14611188578251604051633b0d540d60e21b815261063c91906004016152c4565b60048151600581111561119d5761119d614b23565b036111b3576111ab85612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d88a6122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614de3565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152de565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150d8565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b5f805160206157e58339815191525f6113e283611db9565b51905060048160058111156113f9576113f9614b23565b14611419578060405163170cc93360e21b815260040161063c9190614c96565b5f8381526005830160205260409020546001600160a01b0316331461145f57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b61149d6128d7565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff1660038111156114ea576114ea614b23565b60038111156114fb576114fb614b23565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561157457611574614b23565b14611595578051604051633b0d540d60e21b815261063c91906004016152c4565b60046115a48260400151611db9565b5160058111156115b6576115b6614b23565b146116b5575f6115c5856122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016116049190614de3565b606060405180830381865af415801561161f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164391906152de565b50915091508184604001511461166f5760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156116b157604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6116be83612d45565b50506116d660015f8051602061584583398151915255565b5050565b5f805160206158058339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614de3565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b9190615313565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c64565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614b23565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061584583398151915255565b9392505050565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff16600381111561195057611950614b23565b600381111561196157611961614b23565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614b23565b141580156119fb57506003815160038111156119f8576119f8614b23565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152c4565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614daa565b6040518263ffffffff1660e01b8152600401611b279190614de3565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614df5565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206158058339815191529190611bb590614c64565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614b23565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615341565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614df5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061584583398151915255565b919050565b611dc16148f4565b5f8281525f80516020615865833981519152602052604090819020815160e0810190925280545f80516020615805833981519152929190829060ff166005811115611e0e57611e0e614b23565b6005811115611e1f57611e1f614b23565b8152602001600182018054611e3390614c64565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c64565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020615805833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153cb565b90815260200160405180910390205491505092915050565b5f8381525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e58339815191529284929091829060ff166003811115611fb157611fb1614b23565b6003811115611fc257611fc2614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614b23565b14612070578251604051633b0d540d60e21b815261063c91906004016152c4565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361143a565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153da565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614b23565b0361224f5760028401546080840151612143916001600160401b0316906153da565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd91906153fa565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614b23565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614c96565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f919081019061541a565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612477919081019061541a565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614df5565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614de3565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd91906154aa565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157e5833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157e583398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361143a565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153da565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614df5565b905080846008015f8a81526020019081526020015f205f8282546128c591906150a3565b90915550501515979650505050505050565b5f8051602061584583398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206158058339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614de3565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a89190615313565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614b23565b6005811115612a1157612a11614b23565b8152602001600182018054612a2590614c64565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c64565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614b23565b14158015612b285750600181516005811115612b2557612b25614b23565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614c96565b600381516005811115612b5e57612b5e614b23565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f7a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614b23565b021790555060208201516001820190612be49082614fd4565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614b23565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b6116d66001600160a01b03831682613aa5565b60015f8051602061584583398151915255565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff166003811115612d9257612d92614b23565b6003811115612da357612da3614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153da565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150d8565b612efa91906152a5565b915081866008015f8681526020019081526020015f205f828254612f1e91906150a3565b90915550612f2e905082846154cd565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157e583398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157e58339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614b23565b146131fe57805160405163170cc93360e21b815261063c9190600401614c96565b5f82826080015161320f91906153da565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154e0565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614b23565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f80516020615865833981519152602052604081206002015481905f8051602061580583398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614daa565b6040518263ffffffff1660e01b815260040161358b9190614de3565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614df5565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157e583398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614b23565b148061367a575060048251600581111561367857613678614b23565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614b23565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614c96565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614df5565b95945050505050565b6137c96148f4565b5f8281525f805160206158658339815191526020526040808220815160e0810190925280545f8051602061580583398151915293929190829060ff16600581111561381657613816614b23565b600581111561382757613827614b23565b815260200160018201805461383b90614c64565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c64565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614b23565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614b23565b0217905550602082015160018201906139b09082614fd4565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061580583398151915242613b9b6060860160408701614a7f565b6001600160401b0316111580613bd55750613bb96202a300426150a3565b613bc96060860160408701614a7f565b6001600160401b031610155b15613c0f57613bea6060850160408601614a7f565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f606086018661550b565b614477565b613c34613c1f608086018661550b565b6030613c43602086018661551f565b905014613c7557613c57602085018561551f565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f848061551f565b90505f03613cac57613c91848061551f565b604051633e08a12560e11b815260040161063c929190615561565b5f60088201613cbb868061551f565b604051613cc99291906153cb565b90815260200160405180910390205414613d0257613ce7848061551f565b60405163a41f772f60e01b815260040161063c929190615561565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a8061551f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b61551f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a7f565b6001600160401b03168152602001613df560608b018b61550b565b613dfe90615574565b8152602001613e1060808b018b61550b565b613e1990615574565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e479190615696565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e88919081019061574d565b5f82815260068601602052604090209193509150613ea68282614fd4565b508160088401613eb6888061551f565b604051613ec49291906153cb565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614de3565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614df5565b6040805160e081019091529091508060018152602001613f60898061551f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614b23565b0217905550602082015160018201906140089082614fd4565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a6888061551f565b6040516140b49291906153cb565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a7f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a7f565b6141b160e0860160c08701615790565b6141c2610100870160e088016157a9565b6101008701356141da61014089016101208a01614e20565b614609565b5f805160206158058339815191525f6001600160401b0380841690851611156142135761420c83856153fa565b9050614220565b61421d84846153fa565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b0316906150a3565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153da565b6001600160401b03169052505b60608101516142d79060646154e0565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150d8565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d91906150a3565b9052506040810180516001600160401b038716919061436d9083906154cd565b9052506001840154604082015160649161439291600160401b90910460ff16906150d8565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206158658339815191526020526040812060020180545f80516020615805833981519152919060089061444c90600160401b90046001600160401b03166157c9565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e3b565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e3b565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e3b565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e3b565b90508110156116d6576145466020830183614e3b565b6145516001846154cd565b81811061456057614560614e80565b90506020020160208101906145759190614e20565b6001600160a01b031661458b6020840184614e3b565b8381811061459b5761459b614e80565b90506020020160208101906145b09190614e20565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157e583398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f8051602061580583398151915290815560146147fa60608401604085016157a9565b60ff161180614819575061481460608301604084016157a9565b60ff16155b1561484d5761482e60608301604084016157a9565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d60608301604084016157a9565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a7f565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c64565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b5f8060408385031215614a54575f80fd5b614a5d83614956565b946020939093013593505050565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a8f575f80fd5b81356118fc81614a6b565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614abd575f80fd5b83356001600160401b03811115614ad2575f80fd5b840160a08187031215614ae3575f80fd5b9250614af160208501614a9a565b91506040840135614b0181614a6b565b809150509250925092565b5f6101408284031215614b1d575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b4757614b47614b23565b9052565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152614b8b602082018351614b37565b5f602083015160e06040840152614ba6610100840182614b4b565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c0a575f80fd5b82356001600160401b0380821115614c20575f80fd5b818501915085601f830112614c33575f80fd5b813581811115614c41575f80fd5b866020828501011115614c52575f80fd5b60209290920196919550909350505050565b600181811c90821680614c7857607f821691505b602082108103614b1d57634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b37565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cda57614cda614ca4565b60405290565b604080519081016001600160401b0381118282101715614cda57614cda614ca4565b604051601f8201601f191681016001600160401b0381118282101715614d2a57614d2a614ca4565b604052919050565b5f6001600160401b03821115614d4a57614d4a614ca4565b50601f01601f191660200190565b5f82601f830112614d67575f80fd5b8151614d7a614d7582614d32565b614d02565b818152846020838601011115614d8e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215614dba575f80fd5b81516001600160401b03811115614dcf575f80fd5b614ddb84828501614d58565b949350505050565b602081525f6118fc6020830184614b4b565b5f60208284031215614e05575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e30575f80fd5b81356118fc81614e0c565b5f808335601e19843603018112614e50575f80fd5b8301803591506001600160401b03821115614e69575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614ea8575f80fd5b9190910192915050565b5f82601f830112614ec1575f80fd5b8135614ecf614d7582614d32565b818152846020838601011115614ee3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f0f575f80fd5b614f17614cb8565b82356001600160401b0380821115614f2d575f80fd5b614f3936838701614eb2565b83526020850135915080821115614f4e575f80fd5b50614f5b36828601614eb2565b6020830152506040830135614f6f81614a6b565b604082015292915050565b5f82518060208501845e5f920191825250919050565b601f82111561064557805f5260205f20601f840160051c81016020851015614fb55750805b601f840160051c820191505b81811015611b67575f8155600101614fc1565b81516001600160401b03811115614fed57614fed614ca4565b61500181614ffb8454614c64565b84614f90565b602080601f831160018114615034575f841561501d5750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b8281101561506257888601518255948401946001909101908401615043565b508582101561507f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa61508f565b5f63ffffffff8083168181036150ce576150ce61508f565b6001019392505050565b8082028115828204841417610faa57610faa61508f565b5f808335601e19843603018112615104575f80fd5b83016020810192503590506001600160401b03811115615122575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561520d57848303601f19018952813536889003605e19018112615194575f80fd5b870160606151a282806150ef565b8287526151b28388018284615130565b925050506151c2868301836150ef565b868303888801526151d4838284615130565b9250505060408083013592506151e983614a6b565b6001600160401b03929092169490910193909352978301979083019060010161516f565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561523e81614e0c565b6001600160a01b031660608381019190915283013536849003601e19018112615265575f80fd5b83016020810190356001600160401b03811115615280575f80fd5b8060051b3603821315615291575f80fd5b6080808501526137b860a085018284615158565b5f826152bf57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152d8576152d8614b23565b91905290565b5f805f606084860312156152f0575f80fd5b83519250602084015161530281614a6b565b6040850151909250614b0181614a6b565b5f8060408385031215615324575f80fd5b82519150602083015161533681614949565b809150509250929050565b5f60208083525f845461535381614c64565b806020870152604060018084165f81146153745760018114615390576153bd565b60ff19851660408a0152604084151560051b8a010195506153bd565b895f5260205f205f5b858110156153b45781548b8201860152908301908801615399565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c361508f565b6001600160401b038281168282160390808211156123c3576123c361508f565b5f806040838503121561542b575f80fd5b82516001600160401b0380821115615441575f80fd5b9084019060608287031215615454575f80fd5b61545c614cb8565b82518152602083015161546e81614e0c565b6020820152604083015182811115615484575f80fd5b61549088828601614d58565b604083015250809450505050602083015161533681614949565b5f80604083850312156154bb575f80fd5b82519150602083015161533681614a6b565b81810381811115610faa57610faa61508f565b6001600160401b038181168382160280821691908281146155035761550361508f565b505092915050565b5f8235603e19833603018112614ea8575f80fd5b5f808335601e19843603018112615534575f80fd5b8301803591506001600160401b0382111561554d575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614ddb602083018486615130565b5f60408236031215615584575f80fd5b61558c614ce0565b61559583614956565b81526020808401356001600160401b03808211156155b1575f80fd5b9085019036601f8301126155c3575f80fd5b8135818111156155d5576155d5614ca4565b8060051b91506155e6848301614d02565b81815291830184019184810190368411156155ff575f80fd5b938501935b83851015615629578435925061561983614e0c565b8282529385019390850190615604565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b0316825293830193600192909201919083019061566d565b60208152815160208201525f602083015160e060408401526156bc610100840182614b4b565b90506040840151601f19808584030160608601526156da8383614b4b565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261570a838361563b565b925060a08601519150808584030160c086015250615728828261563b565b91505060c084015161574560e08501826001600160401b03169052565b509392505050565b5f806040838503121561575e575f80fd5b8251915060208301516001600160401b0381111561577a575f80fd5b61578685828601614d58565b9150509250929050565b5f602082840312156157a0575f80fd5b6118fc82614a9a565b5f602082840312156157b9575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150ce576150ce61508f56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220855edb82145aa3d8c8d870b47e0fa3a47f89c96fb3e2f4d442472531d9cad99864736f6c63430008190033", +} + +// NativeTokenStakingManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use NativeTokenStakingManagerMetaData.ABI instead. +var NativeTokenStakingManagerABI = NativeTokenStakingManagerMetaData.ABI + +// NativeTokenStakingManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use NativeTokenStakingManagerMetaData.Bin instead. +var NativeTokenStakingManagerBin = NativeTokenStakingManagerMetaData.Bin + +// DeployNativeTokenStakingManager deploys a new Ethereum contract, binding an instance of NativeTokenStakingManager to it. +func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *NativeTokenStakingManager, error) { + parsed, err := NativeTokenStakingManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) + NativeTokenStakingManagerBin = strings.ReplaceAll(NativeTokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NativeTokenStakingManagerBin), backend, init) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil +} + +// NativeTokenStakingManager is an auto generated Go binding around an Ethereum contract. +type NativeTokenStakingManager struct { + NativeTokenStakingManagerCaller // Read-only binding to the contract + NativeTokenStakingManagerTransactor // Write-only binding to the contract + NativeTokenStakingManagerFilterer // Log filterer for contract events +} + +// NativeTokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// NativeTokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// NativeTokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type NativeTokenStakingManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// NativeTokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type NativeTokenStakingManagerSession struct { + Contract *NativeTokenStakingManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// NativeTokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type NativeTokenStakingManagerCallerSession struct { + Contract *NativeTokenStakingManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// NativeTokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type NativeTokenStakingManagerTransactorSession struct { + Contract *NativeTokenStakingManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// NativeTokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type NativeTokenStakingManagerRaw struct { + Contract *NativeTokenStakingManager // Generic contract binding to access the raw methods on +} + +// NativeTokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerCallerRaw struct { + Contract *NativeTokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// NativeTokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerTransactorRaw struct { + Contract *NativeTokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewNativeTokenStakingManager creates a new instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManager(address common.Address, backend bind.ContractBackend) (*NativeTokenStakingManager, error) { + contract, err := bindNativeTokenStakingManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil +} + +// NewNativeTokenStakingManagerCaller creates a new read-only instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*NativeTokenStakingManagerCaller, error) { + contract, err := bindNativeTokenStakingManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerCaller{contract: contract}, nil +} + +// NewNativeTokenStakingManagerTransactor creates a new write-only instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*NativeTokenStakingManagerTransactor, error) { + contract, err := bindNativeTokenStakingManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerTransactor{contract: contract}, nil +} + +// NewNativeTokenStakingManagerFilterer creates a new log filterer instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*NativeTokenStakingManagerFilterer, error) { + contract, err := bindNativeTokenStakingManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerFilterer{contract: contract}, nil +} + +// bindNativeTokenStakingManager binds a generic wrapper to an already deployed contract. +func bindNativeTokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := NativeTokenStakingManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _NativeTokenStakingManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { + return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) +} + +// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. +// +// Solidity: function NATIVE_MINTER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) NATIVEMINTER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "NATIVE_MINTER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. +// +// Solidity: function NATIVE_MINTER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) NATIVEMINTER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) +} + +// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. +// +// Solidity: function NATIVE_MINTER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) NATIVEMINTER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. +// +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initialize", settings) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. +// +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. +// +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. +// +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// NativeTokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegationEndedIterator struct { + Event *NativeTokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerDelegationEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*NativeTokenStakingManagerDelegationEnded, error) { + event := new(NativeTokenStakingManagerDelegationEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorAddedIterator struct { + Event *NativeTokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenStakingManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerDelegatorAddedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerDelegatorAdded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenStakingManagerDelegatorAdded, error) { + event := new(NativeTokenStakingManagerDelegatorAdded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRegisteredIterator struct { + Event *NativeTokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerDelegatorRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerDelegatorRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*NativeTokenStakingManagerDelegatorRegistered, error) { + event := new(NativeTokenStakingManagerDelegatorRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { + Event *NativeTokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerDelegatorRemovalInitialized, error) { + event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialValidatorCreatedIterator struct { + Event *NativeTokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*NativeTokenStakingManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerInitialValidatorCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*NativeTokenStakingManagerInitialValidatorCreated, error) { + event := new(NativeTokenStakingManagerInitialValidatorCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitializedIterator struct { + Event *NativeTokenStakingManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialized(log types.Log) (*NativeTokenStakingManagerInitialized, error) { + event := new(NativeTokenStakingManagerInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerUptimeUpdatedIterator struct { + Event *NativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerUptimeUpdatedIterator{contract: _NativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerUptimeUpdated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*NativeTokenStakingManagerUptimeUpdated, error) { + event := new(NativeTokenStakingManagerUptimeUpdated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodCreatedIterator struct { + Event *NativeTokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*NativeTokenStakingManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerValidationPeriodCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*NativeTokenStakingManagerValidationPeriodCreated, error) { + event := new(NativeTokenStakingManagerValidationPeriodCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodEndedIterator struct { + Event *NativeTokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*NativeTokenStakingManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerValidationPeriodEndedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerValidationPeriodEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*NativeTokenStakingManagerValidationPeriodEnded, error) { + event := new(NativeTokenStakingManagerValidationPeriodEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodRegisteredIterator struct { + Event *NativeTokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerValidationPeriodRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*NativeTokenStakingManagerValidationPeriodRegistered, error) { + event := new(NativeTokenStakingManagerValidationPeriodRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorRemovalInitializedIterator struct { + Event *NativeTokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*NativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerValidatorRemovalInitialized, error) { + event := new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// NativeTokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorWeightUpdateIterator struct { + Event *NativeTokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*NativeTokenStakingManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*NativeTokenStakingManagerValidatorWeightUpdate, error) { + event := new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerMetaData contains all meta data concerning the PoSValidatorManager contract. +var PoSValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// PoSValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use PoSValidatorManagerMetaData.ABI instead. +var PoSValidatorManagerABI = PoSValidatorManagerMetaData.ABI + +// PoSValidatorManager is an auto generated Go binding around an Ethereum contract. +type PoSValidatorManager struct { + PoSValidatorManagerCaller // Read-only binding to the contract + PoSValidatorManagerTransactor // Write-only binding to the contract + PoSValidatorManagerFilterer // Log filterer for contract events +} + +// PoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type PoSValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PoSValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PoSValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PoSValidatorManagerSession struct { + Contract *PoSValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PoSValidatorManagerCallerSession struct { + Contract *PoSValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PoSValidatorManagerTransactorSession struct { + Contract *PoSValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type PoSValidatorManagerRaw struct { + Contract *PoSValidatorManager // Generic contract binding to access the raw methods on +} + +// PoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PoSValidatorManagerCallerRaw struct { + Contract *PoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// PoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PoSValidatorManagerTransactorRaw struct { + Contract *PoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPoSValidatorManager creates a new instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*PoSValidatorManager, error) { + contract, err := bindPoSValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &PoSValidatorManager{PoSValidatorManagerCaller: PoSValidatorManagerCaller{contract: contract}, PoSValidatorManagerTransactor: PoSValidatorManagerTransactor{contract: contract}, PoSValidatorManagerFilterer: PoSValidatorManagerFilterer{contract: contract}}, nil +} + +// NewPoSValidatorManagerCaller creates a new read-only instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoSValidatorManagerCaller, error) { + contract, err := bindPoSValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PoSValidatorManagerCaller{contract: contract}, nil +} + +// NewPoSValidatorManagerTransactor creates a new write-only instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoSValidatorManagerTransactor, error) { + contract, err := bindPoSValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PoSValidatorManagerTransactor{contract: contract}, nil +} + +// NewPoSValidatorManagerFilterer creates a new log filterer instance of PoSValidatorManager, bound to a specific deployed contract. +func NewPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoSValidatorManagerFilterer, error) { + contract, err := bindPoSValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PoSValidatorManagerFilterer{contract: contract}, nil +} + +// bindPoSValidatorManager binds a generic wrapper to an already deployed contract. +func bindPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PoSValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PoSValidatorManager *PoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoSValidatorManager.Contract.PoSValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PoSValidatorManager *PoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PoSValidatorManager *PoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PoSValidatorManager *PoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoSValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoSValidatorManager *PoSValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) +} + +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) +} + +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoSValidatorManager *PoSValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoSValidatorManager *PoSValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoSValidatorManager *PoSValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoSValidatorManager *PoSValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "valueToWeight", value) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) +} + +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_PoSValidatorManager *PoSValidatorManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { + var out []interface{} + err := _PoSValidatorManager.contract.Call(opts, &out, "weightToValue", weight) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_PoSValidatorManager *PoSValidatorManagerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) +} + +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. +// +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) +} + +// PoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegationEndedIterator struct { + Event *PoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegationEndedIterator{contract: _PoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegationEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*PoSValidatorManagerDelegationEnded, error) { + event := new(PoSValidatorManagerDelegationEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorAddedIterator struct { + Event *PoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegatorAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegatorAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegatorAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*PoSValidatorManagerDelegatorAddedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegatorAddedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil +} + +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegatorAdded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*PoSValidatorManagerDelegatorAdded, error) { + event := new(PoSValidatorManagerDelegatorAdded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRegisteredIterator struct { + Event *PoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRegisteredIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegatorRegisteredIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegatorRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*PoSValidatorManagerDelegatorRegistered, error) { + event := new(PoSValidatorManagerDelegatorRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRemovalInitializedIterator struct { + Event *PoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the PoSValidatorManager contract. +type PoSValidatorManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte + ValidationID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRemovalInitializedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*PoSValidatorManagerDelegatorRemovalInitialized, error) { + event := new(PoSValidatorManagerDelegatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitialValidatorCreatedIterator struct { + Event *PoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoSValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerInitialValidatorCreatedIterator{contract: _PoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerInitialValidatorCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoSValidatorManagerInitialValidatorCreated, error) { + event := new(PoSValidatorManagerInitialValidatorCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitializedIterator struct { + Event *PoSValidatorManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerInitialized represents a Initialized event raised by the PoSValidatorManager contract. +type PoSValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoSValidatorManagerInitializedIterator, error) { + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PoSValidatorManagerInitializedIterator{contract: _PoSValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoSValidatorManagerInitialized, error) { + event := new(PoSValidatorManagerInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the PoSValidatorManager contract. +type PoSValidatorManagerUptimeUpdatedIterator struct { + Event *PoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerUptimeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerUptimeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerUptimeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerUptimeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the PoSValidatorManager contract. +type PoSValidatorManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerUptimeUpdatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerUptimeUpdatedIterator{contract: _PoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil +} + +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerUptimeUpdated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*PoSValidatorManagerUptimeUpdated, error) { + event := new(PoSValidatorManagerUptimeUpdated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodCreatedIterator struct { + Event *PoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoSValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidationPeriodCreatedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidationPeriodCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoSValidatorManagerValidationPeriodCreated, error) { + event := new(PoSValidatorManagerValidationPeriodCreated) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodEndedIterator struct { + Event *PoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoSValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidationPeriodEndedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidationPeriodEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoSValidatorManagerValidationPeriodEnded, error) { + event := new(PoSValidatorManagerValidationPeriodEnded) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodRegisteredIterator struct { + Event *PoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidationPeriodRegisteredIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidationPeriodRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoSValidatorManagerValidationPeriodRegistered, error) { + event := new(PoSValidatorManagerValidationPeriodRegistered) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorRemovalInitializedIterator struct { + Event *PoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoSValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoSValidatorManagerValidatorRemovalInitialized, error) { + event := new(PoSValidatorManagerValidatorRemovalInitialized) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorWeightUpdateIterator struct { + Event *PoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoSValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoSValidatorManager contract. +type PoSValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoSValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &PoSValidatorManagerValidatorWeightUpdateIterator{contract: _PoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoSValidatorManagerValidatorWeightUpdate) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoSValidatorManagerValidatorWeightUpdate, error) { + event := new(PoSValidatorManagerValidatorWeightUpdate) + if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. +var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. +var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI + +// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeable struct { + ReentrancyGuardUpgradeableCaller // Read-only binding to the contract + ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract + ReentrancyGuardUpgradeableFilterer // Log filterer for contract events +} + +// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardUpgradeableSession struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardUpgradeableCallerSession struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardUpgradeableTransactorSession struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableRaw struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCallerRaw struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactorRaw struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { + contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { + contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil +} + +// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. +func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitializedIterator struct { + Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReentrancyGuardUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) + it.Event = new(ReentrancyGuardUpgradeableInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1515,115 +13901,661 @@ func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { it.Event.Raw = log return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. +var ValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorManagerMetaData.ABI instead. +var ValidatorManagerABI = ValidatorManagerMetaData.ABI + +// ValidatorManager is an auto generated Go binding around an Ethereum contract. +type ValidatorManager struct { + ValidatorManagerCaller // Read-only binding to the contract + ValidatorManagerTransactor // Write-only binding to the contract + ValidatorManagerFilterer // Log filterer for contract events +} + +// ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorManagerSession struct { + Contract *ValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorManagerCallerSession struct { + Contract *ValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorManagerTransactorSession struct { + Contract *ValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorManagerRaw struct { + Contract *ValidatorManager // Generic contract binding to access the raw methods on +} + +// ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorManagerCallerRaw struct { + Contract *ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactorRaw struct { + Contract *ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorManager creates a new instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManager(address common.Address, backend bind.ContractBackend) (*ValidatorManager, error) { + contract, err := bindValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil +} + +// NewValidatorManagerCaller creates a new read-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ValidatorManagerCaller, error) { + contract, err := bindValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorManagerCaller{contract: contract}, nil +} + +// NewValidatorManagerTransactor creates a new write-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorManagerTransactor, error) { + contract, err := bindValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorManagerTransactor{contract: contract}, nil +} + +// NewValidatorManagerFilterer creates a new log filterer instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorManagerFilterer, error) { + contract, err := bindValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorManagerFilterer{contract: contract}, nil +} + +// bindValidatorManager binds a generic wrapper to an already deployed contract. +func bindValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorManager *ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.Contract.ValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorManager *ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorManager *ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorManager *ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) } -// NativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) } -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRegisteredIterator, error) { +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) +} - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) +} - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegatorRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +} - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +} - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) } -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*NativeTokenStakingManagerDelegatorRegistered, error) { - event := new(NativeTokenStakingManagerDelegatorRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) } -// NativeTokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *NativeTokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreatedIterator struct { + Event *ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1637,7 +14569,7 @@ type NativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { +func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1646,7 +14578,7 @@ func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() b if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(ValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1661,7 +14593,7 @@ func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() b // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(ValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1677,60 +14609,61 @@ func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() b } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { +func (it *ValidatorManagerInitialValidatorCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { +func (it *ValidatorManagerInitialValidatorCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte +// ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreated struct { ValidationID [32]byte + NodeID common.Hash + Weight *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ValidatorManagerInitialValidatorCreatedIterator, error) { - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil + return &ValidatorManagerInitialValidatorCreatedIterator{contract: _ValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } @@ -1740,8 +14673,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return err } event.Raw = log @@ -1762,21 +14695,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega }), nil } -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ValidatorManagerInitialValidatorCreated, error) { + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialValidatorCreatedIterator struct { - Event *NativeTokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ValidatorManager contract. +type ValidatorManagerInitializedIterator struct { + Event *ValidatorManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1790,7 +14723,7 @@ type NativeTokenStakingManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { +func (it *ValidatorManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1799,7 +14732,7 @@ func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) + it.Event = new(ValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1814,7 +14747,7 @@ func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) + it.Event = new(ValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1830,61 +14763,41 @@ func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { +func (it *ValidatorManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Close() error { +func (it *ValidatorManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*NativeTokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) +// ValidatorManagerInitialized represents a Initialized event raised by the ValidatorManager contract. +type ValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatorManagerInitializedIterator, error) { + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &NativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &ValidatorManagerInitializedIterator{contract: _ValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialized) (event.Subscription, error) { - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -1894,8 +14807,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(ValidatorManagerInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -1916,21 +14829,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*NativeTokenStakingManagerInitialValidatorCreated, error) { - event := new(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ValidatorManagerInitialized, error) { + event := new(ValidatorManagerInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitializedIterator struct { - Event *NativeTokenStakingManagerInitialized // Event containing the contract specifics and raw log +// ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreatedIterator struct { + Event *ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1944,7 +14857,7 @@ type NativeTokenStakingManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { +func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1953,7 +14866,7 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) + it.Event = new(ValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1968,7 +14881,7 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) + it.Event = new(ValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1984,41 +14897,71 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitializedIterator) Error() error { +func (it *ValidatorManagerValidationPeriodCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerInitializedIterator) Close() error { +func (it *ValidatorManagerValidationPeriodCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ValidatorManagerValidationPeriodCreatedIterator, error) { - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &ValidatorManagerValidationPeriodCreatedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialized) (event.Subscription, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "Initialized") + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } @@ -2028,8 +14971,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return err } event.Raw = log @@ -2050,21 +14993,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialized(log types.Log) (*NativeTokenStakingManagerInitialized, error) { - event := new(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ValidatorManagerValidationPeriodCreated, error) { + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdatedIterator struct { - Event *NativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log +// ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEndedIterator struct { + Event *ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2078,7 +15021,7 @@ type NativeTokenStakingManagerUptimeUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { +func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2087,7 +15030,7 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) + it.Event = new(ValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2102,7 +15045,7 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) + it.Event = new(ValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2118,52 +15061,60 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { +func (it *ValidatorManagerValidationPeriodEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { +func (it *ValidatorManagerValidationPeriodEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdated struct { +// ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEnded struct { ValidationID [32]byte - Uptime uint64 + Status uint8 Raw types.Log // Blockchain specific contextual infos } -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ValidatorManagerValidationPeriodEndedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerUptimeUpdatedIterator{contract: _NativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil + return &ValidatorManagerValidationPeriodEndedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil } -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } @@ -2173,8 +15124,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptime select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerUptimeUpdated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return err } event.Raw = log @@ -2195,21 +15146,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptime }), nil } -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*NativeTokenStakingManagerUptimeUpdated, error) { - event := new(NativeTokenStakingManagerUptimeUpdated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ValidatorManagerValidationPeriodEnded, error) { + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodCreatedIterator struct { - Event *NativeTokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log +// ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegisteredIterator struct { + Event *ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2223,7 +15174,7 @@ type NativeTokenStakingManagerValidationPeriodCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2232,7 +15183,7 @@ func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) + it.Event = new(ValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2247,7 +15198,7 @@ func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) + it.Event = new(ValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2263,71 +15214,53 @@ func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*NativeTokenStakingManagerValidationPeriodCreatedIterator, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ValidatorManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &ValidatorManagerValidationPeriodRegisteredIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } @@ -2337,8 +15270,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return err } event.Raw = log @@ -2359,21 +15292,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*NativeTokenStakingManagerValidationPeriodCreated, error) { - event := new(NativeTokenStakingManagerValidationPeriodCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ValidatorManagerValidationPeriodRegistered, error) { + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodEndedIterator struct { - Event *NativeTokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log +// ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitializedIterator struct { + Event *ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2387,7 +15320,7 @@ type NativeTokenStakingManagerValidationPeriodEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2396,7 +15329,7 @@ func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) + it.Event = new(ValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2411,7 +15344,7 @@ func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) + it.Event = new(ValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2427,60 +15360,62 @@ func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*NativeTokenStakingManagerValidationPeriodEndedIterator, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ValidatorManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerValidationPeriodEndedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &ValidatorManagerValidatorRemovalInitializedIterator{contract: _ValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } @@ -2490,8 +15425,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -2512,22 +15447,22 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*NativeTokenStakingManagerValidationPeriodEnded, error) { - event := new(NativeTokenStakingManagerValidationPeriodEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ValidatorManagerValidatorRemovalInitialized, error) { + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *NativeTokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - +// ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdateIterator struct { + Event *ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2540,7 +15475,7 @@ type NativeTokenStakingManagerValidationPeriodRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2549,7 +15484,7 @@ func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bo if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) + it.Event = new(ValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2564,7 +15499,7 @@ func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) + it.Event = new(ValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2580,53 +15515,62 @@ func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { +func (it *ValidatorManagerValidatorWeightUpdateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { +func (it *ValidatorManagerValidatorWeightUpdateIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos +// ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ValidatorManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &ValidatorManagerValidatorWeightUpdateIterator{contract: _ValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } @@ -2636,8 +15580,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return err } event.Raw = log @@ -2658,324 +15602,533 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*NativeTokenStakingManagerValidationPeriodRegistered, error) { - event := new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ValidatorManagerValidatorWeightUpdate, error) { + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *NativeTokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log +// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. +var ValidatorMessagesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x6120f3610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e19190611982565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119b6565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e53660046119ef565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611a8b565b610255610250366004611c26565b61154a565b6040516100e1929190611d22565b610145610271366004611d3a565b611737565b610145610284366004611d64565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611daa565b6102e6906008611dbd565b61ffff168582815181106102fc576102fc611dd4565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611daa565b61035f906008611dbd565b63ffffffff1686610371836002611de8565b8151811061038157610381611dd4565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611daa565b6103e0906008611dbd565b876103ec836006611de8565b815181106103fc576103fc611dd4565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611daa565b610436906008611dbd565b6001600160401b03168861044b836026611de8565b8151811061045b5761045b611dd4565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611daa565b6104d6906008611dbd565b61ffff168482815181106104ec576104ec611dd4565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611daa565b61054f906008611dbd565b63ffffffff1685610561836002611de8565b8151811061057157610571611dd4565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611daa565b6105d0906008611dbd565b866105dc836006611de8565b815181106105ec576105ec611dd4565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611daa565b610664906008611dbd565b61ffff1685828151811061067a5761067a611dd4565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611daa565b6106dd906008611dbd565b63ffffffff16866106ef836002611de8565b815181106106ff576106ff611dd4565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611daa565b610760906008611dbd565b8761076c836006611de8565b8151811061077c5761077c611dd4565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611dd4565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611dfb565b6107f16060890189611e14565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e14565b90508110156109a2578161088e6060860186611e14565b8381811061089e5761089e611dd4565b90506020028101906108b09190611e60565b6108ba9080611e7e565b90506108c96060870187611e14565b848181106108d9576108d9611dd4565b90506020028101906108eb9190611e60565b6108f59080611e7e565b6109026060890189611e14565b8681811061091257610912611dd4565b90506020028101906109249190611e60565b610932906020810190611e7e565b61093f60608b018b611e14565b8881811061094f5761094f611dd4565b90506020028101906109619190611e60565b610972906060810190604001611ec0565b6040516020016109889796959493929190611ef0565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611daa565b610a02906008611dbd565b61ffff16868281518110610a1857610a18611dd4565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611daa565b610a7b906008611dbd565b63ffffffff1687610a8d836002611de8565b81518110610a9d57610a9d611dd4565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611daa565b610afe906008611dbd565b88610b0a836006611de8565b81518110610b1a57610b1a611dd4565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611daa565b610b54906008611dbd565b6001600160401b031689610b69836026611de8565b81518110610b7957610b79611dd4565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611daa565b610bb3906008611dbd565b6001600160401b03168a610bc883602e611de8565b81518110610bd857610bd8611dd4565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611daa565b610c32906008611dbd565b61ffff1686610c4763ffffffff871684611de8565b81518110610c5757610c57611dd4565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f4f565b9250505f805b6004811015610d0857610cbd816003611daa565b610cc8906008611dbd565b63ffffffff16868563ffffffff1683610ce19190611de8565b81518110610cf157610cf1611dd4565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f4f565b9250505f805b6020811015610d9857610d5581601f611daa565b610d60906008611dbd565b86610d7163ffffffff871684611de8565b81518110610d8157610d81611dd4565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f4f565b9250505f805b6004811015610e0c57610dc1816003611daa565b610dcc906008611dbd565b63ffffffff16868563ffffffff1683610de59190611de8565b81518110610df557610df5611dd4565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f4f565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611de8565b81518110610e9757610e97611dd4565b602001015160f81c60f81b828281518110610eb457610eb4611dd4565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f4f565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611de8565b81518110610f3557610f35611dd4565b602001015160f81c60f81b828281518110610f5257610f52611dd4565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f4f565b9350505f805b6008811015610fe957610f9d816007611daa565b610fa8906008611dbd565b6001600160401b031687610fc263ffffffff881684611de8565b81518110610fd257610fd2611dd4565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f4f565b9350505f805f5b600481101561106a5761101f816003611daa565b61102a906008611dbd565b63ffffffff16888763ffffffff16836110439190611de8565b8151811061105357611053611dd4565b016020015160f81c901b919091179060010161100b565b50611076600486611f4f565b94505f5b60048110156110d95761108e816003611daa565b611099906008611dbd565b63ffffffff16888763ffffffff16836110b29190611de8565b815181106110c2576110c2611dd4565b016020015160f81c901b929092179160010161107a565b506110e5600486611f4f565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611de8565b8151811061118e5761118e611dd4565b602001015160f81c60f81b8282815181106111ab576111ab611dd4565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611dd4565b6001600160a01b039092166020928302919091019091015261120860148a611f4f565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611daa565b611259906008611dbd565b63ffffffff16898863ffffffff16836112729190611de8565b8151811061128257611282611dd4565b016020015160f81c901b919091179060010161123a565b506112a5600487611f4f565b95505f5b6004811015611308576112bd816003611daa565b6112c8906008611dbd565b63ffffffff16898863ffffffff16836112e19190611de8565b815181106112f1576112f1611dd4565b016020015160f81c901b92909217916001016112a9565b50611314600487611f4f565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611de8565b815181106113bd576113bd611dd4565b602001015160f81c60f81b8282815181106113da576113da611dd4565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611dd4565b6001600160a01b039092166020928302919091019091015261143760148b611f4f565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f4f565b61147b906014611f6c565b61148685607a611f4f565b6114909190611f4f565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611daa565b6114ee906008611dbd565b6001600160401b03168a61150863ffffffff8b1684611de8565b8151811061151857611518611dd4565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611f94565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611dd4565b602002602001015160405160200161160c929190612015565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612041565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611dd4565b602002602001015160405160200161169e929190612015565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf918391602001612074565b60405160208183030381529060405290506002816040516116f0919061209b565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e91906120a6565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6119946020830184611954565b9392505050565b80356001600160401b03811681146119b1575f80fd5b919050565b5f805f606084860312156119c8575f80fd5b833592506119d86020850161199b565b91506119e66040850161199b565b90509250925092565b5f602082840312156119ff575f80fd5b81356001600160401b03811115611a14575f80fd5b820160808185031215611994575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a805784516001600160a01b03168252938301936001929092019190830190611a57565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ab1610100840182611954565b90506040840151601f1980858403016060860152611acf8383611954565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611aff8383611a25565b925060a08601519150808584030160c086015250611b1d8282611a25565b91505060c0840151611b3a60e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119b1575f80fd5b5f60408284031215611b68575f80fd5b611b7061181f565b9050813563ffffffff81168114611b85575f80fd5b81526020828101356001600160401b0380821115611ba1575f80fd5b818501915085601f830112611bb4575f80fd5b813581811115611bc657611bc661180b565b8060051b9150611bd7848301611869565b8181529183018401918481019088841115611bf0575f80fd5b938501935b83851015611c1557611c0685611b42565b82529385019390850190611bf5565b808688015250505050505092915050565b5f60208284031215611c36575f80fd5b81356001600160401b0380821115611c4c575f80fd5b9083019060e08286031215611c5f575f80fd5b611c67611847565b82358152602083013582811115611c7c575f80fd5b611c8887828601611899565b602083015250604083013582811115611c9f575f80fd5b611cab87828601611899565b604083015250611cbd6060840161199b565b6060820152608083013582811115611cd3575f80fd5b611cdf87828601611b58565b60808301525060a083013582811115611cf6575f80fd5b611d0287828601611b58565b60a083015250611d1460c0840161199b565b60c082015295945050505050565b828152604060208201525f6119356040830184611954565b5f8060408385031215611d4b575f80fd5b82359150611d5b6020840161199b565b90509250929050565b5f8060408385031215611d75575f80fd5b8235915060208301358015158114611d8b575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611d96565b808202811582820484141761177b5761177b611d96565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611d96565b5f60208284031215611e0b575f80fd5b61199482611b42565b5f808335601e19843603018112611e29575f80fd5b8301803591506001600160401b03821115611e42575f80fd5b6020019150600581901b3603821315611e59575f80fd5b9250929050565b5f8235605e19833603018112611e74575f80fd5b9190910192915050565b5f808335601e19843603018112611e93575f80fd5b8301803591506001600160401b03821115611eac575f80fd5b602001915036819003821315611e59575f80fd5b5f60208284031215611ed0575f80fd5b6119948261199b565b5f81518060208401855e5f93019283525090919050565b5f611efb828a611ed9565b60e089901b6001600160e01b0319168152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611d96565b63ffffffff818116838216028082169190828114611f8c57611f8c611d96565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152611fdc611fd6602a85018a611ed9565b88611ed9565b60c09690961b6001600160c01b031916865260e094851b811660088701529290931b909116600c84015250506010019695505050505050565b5f6120208285611ed9565b60609390931b6bffffffffffffffffffffffff191683525050601401919050565b5f61204c8286611ed9565b6001600160e01b031960e095861b811682529390941b90921660048401525050600801919050565b5f61207f8285611ed9565b60c09390931b6001600160c01b03191683525050600801919050565b5f6119948284611ed9565b5f602082840312156120b6575f80fd5b505191905056fea26469706673582212207d656061d8f95ab589d4afa49d2d1306b172ed85e5bb91ff860b1398145156c164736f6c63430008190033", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// ValidatorMessagesABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorMessagesMetaData.ABI instead. +var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorMessagesMetaData.Bin instead. +var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin + +// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. +func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false +// ValidatorMessages is an auto generated Go binding around an Ethereum contract. +type ValidatorMessages struct { + ValidatorMessagesCaller // Read-only binding to the contract + ValidatorMessagesTransactor // Write-only binding to the contract + ValidatorMessagesFilterer // Log filterer for contract events +} + +// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorMessagesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorMessagesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorMessagesSession struct { + Contract *ValidatorMessages // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorMessagesCallerSession struct { + Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorMessagesTransactorSession struct { + Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorMessagesRaw struct { + Contract *ValidatorMessages // Generic contract binding to access the raw methods on +} + +// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorMessagesCallerRaw struct { + Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactorRaw struct { + Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { + contract, err := bindValidatorMessages(address, backend, backend, backend) + if err != nil { + return nil, err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} - default: - return false - } +// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { + contract, err := bindValidatorMessages(address, caller, nil, nil) + if err != nil { + return nil, err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &ValidatorMessagesCaller{contract: contract}, nil +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { + contract, err := bindValidatorMessages(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesTransactor{contract: contract}, nil +} + +// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { + contract, err := bindValidatorMessages(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorMessagesFilterer{contract: contract}, nil +} + +// bindValidatorMessages binds a generic wrapper to an already deployed contract. +func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) + + if err != nil { + return *new([32]byte), *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) + + return out0, out1, err + +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) + + if err != nil { + return *new([]byte), err } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + } -// NativeTokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*NativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { - return nil, err + return *new(ValidatorMessagesValidationPeriod), err } - return &NativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) + + return out0, err + } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { - return nil, err + return *new([32]byte), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerValidatorRemovalInitialized, error) { - event := new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) } -// NativeTokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorWeightUpdateIterator struct { - Event *NativeTokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) - default: - return false - } + if err != nil { + return *new([32]byte), *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(bool)).(*bool) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} + return out0, out1, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// NativeTokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*NativeTokenStakingManagerValidatorWeightUpdateIterator, error) { +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { - return nil, err + return *new([32]byte), *new(uint64), *new(uint64), err } - return &NativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return out0, out1, out2, err + } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { - return nil, err + return *new([32]byte), *new(uint64), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return out0, out1, err + } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*NativeTokenStakingManagerValidatorWeightUpdate, error) { - event := new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) } diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 451aadd9f..727e110d5 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -68,6 +68,17 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } +// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorMessagesValidationPeriod struct { + SubnetID [32]byte + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner + Weight uint64 +} + // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -77,135 +88,126 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. -var PoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]}]", - Bin: "0x363038303630343035323334383031353631303030663537356638306664356235303630343035313631333662353338303338303631333662353833333938313031363034303831393035323631303032653931363130313037353635623630303138313630303138313131313536313030343235373631303034323631303132633536356230333631303034663537363130303466363130303535353635623530363130313430353635623766663063353765313638343064663034306631353038386463326638316665333931633339323362656337336532336139363632656663396332323963366130303830353436383031303030303030303030303030303030303930303436306666313631353631303061353537363034303531363366393265653861393630653031623831353236303034303136303430353138303931303339306664356238303534363030313630303136303430316230333930383131363134363130313034353738303534363030313630303136303430316230333139313636303031363030313630343031623033393038313137383235353630343035313930383135323766633766353035623266333731616532313735656534393133663434393965316632363333613762353933363332316565643163646165623631313531383164323930363032303031363034303531383039313033393061313562353035363562356636303230383238343033313231353631303131373537356638306664356238313531363030323831313036313031323535373566383066643562393339323530353035303536356236333465343837623731363065303162356635323630323136303034353236303234356666643562363133353638383036313031346435663339356666336665363038303630343035323334383031353631303030663537356638306664356235303630303433363130363130313332353735663335363065303163383036333962613936623836313136313030623435373830363363393734643162363131363130303739353738303633633937346431623631343631303238623537383036336435383863313866313436313032393335373830363364356632306666363134363130326136353738303633646639336438646531343631303263363537383036336632666465333862313436313032643035373830363366643761633565373134363130326533353735663830666435623830363339626139366238363134363130323164353738303633613361363565343831343631303233303537383036336237373162336263313436313032343335373830363362633566626665633134363130323531353738303633626565306130336631343631303237383537356638306664356238303633373135303138613631313631303066613537383036333731353031386136313436313031626535373830363337333232313466383134363130316336353738303633383238306132356131343631303164623537383036333864613563623562313436313031663535373830363339376662373064343134363130323061353735663830666435623830363330333232656439383134363130313336353738303633323064393162376131343631303134623537383036333436376566303666313436313031356535373830363336303330356436323134363130313731353738303633363634333561626631343631303139333537356235663830666435623631303134393631303134343336363030343631323761653536356236313032663635363562303035623631303134393631303135393336363030343631323764643536356236313035376235363562363130313439363130313663333636303034363132383262353635623631306235353536356236313031373936303134383135363562363034303531363366666666666666663930393131363831353236303230303135623630343035313830393130333930663335623631303161363631303161313336363030343631323761653536356236313062363335363562363034303531363030313630303136303430316230333930393131363831353236303230303136313031386135363562363130313439363130623737353635623631303163643566383135363562363034303531393038313532363032303031363130313861353635623631303165333630333038313536356236303430353136306666393039313136383135323630323030313631303138613536356236313031666436313062386135363562363034303531363130313861393139303631323834343536356236313031343936313032313833363630303436313237616535363562363130626238353635623631303163643631303232623336363030343631323836653536356236313062636435363562363130313439363130323365333636303034363132383262353635623631306265393536356236313031666436303035363030313630393931623031383135363562363130316364376665393235343664363938393530646464333839313064326531356564316439323363643061376233646465396532613661336633383035363535353963623030383135363562363130313439363130323836333636303034363132376165353635623631306464623536356236313031653336303134383135363562363130313439363130326131333636303034363132386337353635623631306566383536356236313032623936313032623433363630303436313237616535363562363131303035353635623630343035313631303138613931393036313239383435363562363130316136363230326133303038313536356236313031343936313032646533363630303436313261303435363562363131313437353635623631303163643631303266313336363030343631326132363536356236313131383435363562356636313032666636313131626335363562356638333831353236303037383230313630323035323630343038303832323038313531363065303831303139303932353238303534393339343530393139323930393139303832393036306666313636303035383131313135363130333338353736313033333836313239303335363562363030353831313131353631303334393537363130333439363132393033353635623831353236303230303136303031383230313830353436313033356439303631326139313536356238303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363130333839393036313261393135363562383031353631303364343537383036303166313036313033616235373631303130303830383335343034303238333532393136303230303139313631303364343536356238323031393139303566353236303230356632303930356238313534383135323930363030313031393036303230303138303833313136313033623735373832393030333630316631363832303139313562353035303530393138333532353035303630303238323031353436303031363030313630343031623033383038323136363032303834303135323630303136303430316238323034383131363630343038343031353236303031363038303162383230343831313636303630383430313532363030313630633031623930393130343831313636303830383330313532363030333932383330313534313636306130393039313031353239303931353038313531363030353831313131353631303433663537363130343366363132393033353635623134363130343762353735663833383135323630303738333031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313034373239313630666631363930363030343031363132616339353635623630343035313830393130333930666435623630363038313031353136303430353136333432613265306235363065313162383135323630303438313031383539303532363030313630303136303430316230333930393131363630323438323031353235663630343438323031353236303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3930363338353435633136613930363036343031356636303430353138303833303338313836356166343135383031353631303466323537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313035313939313930383130313930363132626461353635623630343035313832363366666666666666663136363065303162383135323630303430313631303533353931393036313263306235363562363032303630343035313830383330333831356638373561663131353830313536313035353135373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130353735393139303631326331643536356235303530353035303536356235663631303538343631313162633536356236303039383130313534393039313530363066663136313536313035616435373630343035313633376661623831653536306530316238313532363030343031363034303531383039313033393066643562363030353630303136303939316230313630303136303031363061303162303331363633343231336366373836303430353138313633666666666666666631363630653031623831353236303034303136303230363034303531383038333033383138363561666131353830313536313035663035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130363134393139303631326331643536356238333630323030313335313436313036336435373630343035313633373262306137653736306531316238313532363032303834303133353630303438323031353236303234303136313034373235363562333036313036346536303630383530313630343038363031363132613034353635623630303136303031363061303162303331363134363130363836353736313036366336303630383430313630343038353031363132613034353635623630343035313633326638383132306436306532316238313532363030343031363130343732393139303631323834343536356235663631303639343630363038353031383536313263333435363562393035303930353035663830356238323831363366666666666666663136313031353631303937623537356636313036623736303630383830313838363132633334353635623833363366666666666666663136383138313130363130366364353736313036636436313263373935363562393035303630323030323831303139303631303664663931393036313263386435363562363130366538393036313263663835363562383035313630343035313931393235303566393136303038383830313931363130373030393136313264373135363562393038313532363032303031363034303531383039313033393032303534313436313037333035373830353136303430353136336134316637373266363065303162383135323631303437323931393036303034303136313263306235363562356636303032383835663031333538343630343035313630323030313631303735663932393139303931383235323630653031623630303136303031363065303162303331393136363032303832303135323630323430313930353635623630343038303531363031663139383138343033303138313532393038323930353236313037373939313631326437313536356236303230363034303531383038333033383138353561666131353830313536313037393435373364356638303365336435666664356235303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631303762373931393036313263316435363562393035303830383636303038303138333566303135313630343035313631303763663931393036313264373135363562393038313532363034303830353136303230393238313930303338333031383132303933393039333535363065303833303138313532363030323833353238343531383238343031353238343831303138303531363030313630303136303430316230333930383131363835383430313532356636303630383630313831393035323931353138313136363038303836303135323432313636306130383530313532363063303834303138313930353238343831353236303037386130313930393235323930323038313531383135343832393036306666313931363630303138333630303538313131313536313038353135373631303835313631323930333536356230323137393035353530363032303832303135313630303138323031393036313038366139303832363132646364353635623530363034303832383130313531363030323833303138303534363036303836303135313630383038373031353136306130383830313531363030313630303136303430316230333935383631363630303136303031363038303162303331393930393431363933393039333137363030313630343031623932383631363932393039323032393139303931313736303031363030313630383031623033313636303031363038303162393138353136393139303931303236303031363030313630633031623033313631373630303136306330316239313834313639313930393130323137393035353630633039303933303135313630303339303932303138303534363030313630303136303430316230333139313639323834313639323930393231373930393135353833303135313631303930653931313638353631326561303536356238323531363034303531393139353530363130393166393136313264373135363562363034303830353139313832393030333832323039303834303135313630303136303031363034303162303331363832353239303832393037663964343766656639646130373736363135343665363436643631383330626663626461393035303663326535656564333831393565383263346562316362646639303630323030313630343035313830393130333930613335303530383036313039373439303631326562333536356239303530363130363962353635623530363030343833303138313930353536303031383330313534363036343930363130393966393036303031363034303162393030343630666631363833363132656435353635623130313536313039633135373630343035313633353934333331376636306530316238313532363030343831303138323930353236303234303136313034373235363562356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363331653664393738393631303965353837363131316530353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363130613035393139303631326330623536356236303230363034303531383038333033383138363561663431353830313536313061323035373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130613434393139303631326331643536356239303530356637335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f3633383632626661363338383630343035313832363366666666666666663136363065303162383135323630303430313631306137653931393036313330306635363562356636303430353138303833303338313836356166343135383031353631306139383537336435663830336533643566666435623530353035303530363034303531336435663832336536303166336439303831303136303166313931363832303136303430353236313061626639313930383130313930363132626461353635623930353035663630303238323630343035313631306164323931393036313264373135363562363032303630343035313830383330333831383535616661313538303135363130616564353733643566383033653364356666643562353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313062313039313930363132633164353635623930353038323831313436313062336335373630343035313633313837326663386436306530316238313532363030343831303138323930353236303234383130313834393035323630343430313631303437323536356235303530353036303039393039323031383035343630666631393136363030313137393035353530353035303530353635623631306235653831363131326562353635623530353035303536356235663631306236643832363131303035353635623630383030313531393239313530353035363562363130623766363131363961353635623631306238383566363131366363353635623536356237663930313664303964373264343066646165326664386365616336623632333463373730363231346664333963316364316536303961303532386331393933303035343630303136303031363061303162303331363930353635623631306263303631313639613536356236313062633938313631313733633536356235303530353635623566363130626436363131363961353635623631306265303833383336313161313435363562393035303562393239313530353035363562356636313062663236313131626335363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f36333265343363656235363130633139383636313131653035363562363034303031353136303430353138323633666666666666666631363630653031623831353236303034303136313063333939313930363132633062353635623630343038303531383038333033383138363561663431353830313536313063353335373364356638303365336435666664356235303530353035303630343035313364363031663139363031663832303131363832303138303630343035323530383130313930363130633737393139303631333062323536356239313530393135303830363130633964353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313034373235363562356638323831353236303036383430313630323035323630343039303230383035343631306362373930363132613931353635623930353035663033363130636462353736303430353136333038393933386233363065313162383135323630303438313031383339303532363032343031363130343732353635623630303135663833383135323630303738353031363032303532363034303930323035343630666631363630303538313131313536313064303135373631306430313631323930333536356231343631306433343537356638323831353236303037383430313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130343732393136306666313639303630303430313631326163393536356235663832383135323630303638343031363032303532363034303831323036313064346339313631323732323536356235663832383135323630303738343031363032303930383135323630343039313832393032303830353436306666313931363630303239303831313738323535303138303534363030313630303136303430316230333432383138313136363030313630633031623032363030313630303136306330316230333930393331363932393039323137393238333930353538343531363030313630383031623930393330343136383235323931383130313931393039313532383339313766663866643163393066623963666132636132333538666466353830366230383661643433333135643932623232316339323965666337663130356365373536383931303136303430353138303931303339306132353035303530353035363562356636313064653436313131626335363562356638333831353236303036383230313630323035323630343039303230383035343931393235303930363130653032393036313261393135363562393035303566303336313065323635373630343035313633303839393338623336306531316238313532363030343831303138333930353236303234303136313034373235363562363030313566383338313532363030373833303136303230353236303430393032303534363066663136363030353831313131353631306534633537363130653463363132393033353635623134363130653766353735663832383135323630303738323031363032303532363034303930383139303230353439303531363331373063633933333630653231623831353236313034373239313630666631363930363030343031363132616339353635623566383238313532363030363832303136303230353236303430393038313930323039303531363365653562343865623630653031623831353236303035363030313630393931623031393136336565356234386562393136313065623839313930363030343031363133306433353635623630323036303430353138303833303338313566383735616631313538303135363130656434353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631306235653931393036313263316435363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030383035343630303136303430316238313034363066663136313539303630303136303031363034303162303331363566383131353830313536313066336335373530383235623930353035663832363030313630303136303430316230333136363030313134383031353631306635373537353033303362313535623930353038313135383031353631306636353537353038303135356231353631306638333537363034303531363366393265653861393630653031623831353236303034303136303430353138303931303339306664356238343534363030313630303136303430316230333139313636303031313738353535383331353631306661633537383435343630666636303430316231393136363030313630343031623137383535353562363130666236383738373631316665313536356238333135363130666663353738343534363066663630343031623139313638353535363034303531363030313831353237666337663530356232663337316165323137356565343931336634343939653166323633336137623539333633323165656431636461656236313135313831643239303630323030313630343035313830393130333930613135623530353035303530353035303530353635623631313030643631323735393536356235663631313031363631313162633536356235663834383135323630303738323031363032303532363034303930383139303230383135313630653038313031393039323532383035343932393335303930393138323930363066663136363030353831313131353631313034643537363131303464363132393033353635623630303538313131313536313130356535373631313035653631323930333536356238313532363032303031363030313832303138303534363131303732393036313261393135363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631313039653930363132613931353635623830313536313130653935373830363031663130363131306330353736313031303038303833353430343032383335323931363032303031393136313130653935363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363131306363353738323930303336303166313638323031393135623530353035303931383335323530353036303032383230313534363030313630303136303430316230333830383231363630323038343031353236303031363034303162383230343831313636303430383430313532363030313630383031623832303438313136363036303834303135323630303136306330316239303931303438313136363038303833303135323630303339303932303135343930393131363630613039303931303135323933393235303530353035363562363131313466363131363961353635623630303136303031363061303162303338313136363131313738353735663630343035313633316534666264663736306530316238313532363030343031363130343732393139303631323834343536356236313131383138313631313663633536356235303536356235663830363131313865363131316263353635623930353038303630303830313834383436303430353136313131613439323931393036313331356435363562393038313532363032303031363034303531383039313033393032303534393135303530393239313530353035363562376665393235343664363938393530646464333839313064326531356564316439323363643061376233646465396532613661336633383035363535353963623030393035363562363034303830353136303630383038323031383335323566383038333532363032303833303135323931383130313931393039313532363034303531363330366638323533353630653431623831353236336666666666666666383331363630303438323031353235663930383139303630303536303031363039393162303139303633366638323533353039303630323430313566363034303531383038333033383138363561666131353830313536313132343435373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363131323662393139303831303139303631333136633536356239313530393135303830363131323864353736303430353136333662326631396539363065303162383135323630303430313630343035313830393130333930666435623831353131353631313262333537383135313630343035313633366261353839613536306530316238313532363030343831303139313930393135323630323430313631303437323536356236303230383230313531363030313630303136306130316230333136313536313132653435373831363032303031353136303430353136323464653735643630653331623831353236303034303136313034373239313930363132383434353635623530393239313530353035363562356636313132663436313237353935363562356636313132666436313131626335363562393035303566383037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f363332653433636562353631313332343838363131316530353635623630343030313531363034303531383236336666666666666666313636306530316238313532363030343031363131333434393139303631326330623536356236303430383035313830383330333831383635616634313538303135363131333565353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631313338323931393036313330623235363562393135303931353038303135363131336139353736303430353136333264303731333533363065303162383135323831313531353630303438323031353236303234303136313034373235363562356638323831353236303037383430313630323035323630343038303832323038313531363065303831303139303932353238303534383239303630666631363630303538313131313536313133646135373631313364613631323930333536356236303035383131313135363131336562353736313133656236313239303335363562383135323630323030313630303138323031383035343631313366663930363132613931353635623830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436313134326239303631326139313536356238303135363131343736353738303630316631303631313434643537363130313030383038333534303430323833353239313630323030313931363131343736353635623832303139313930356635323630323035663230393035623831353438313532393036303031303139303630323030313830383331313631313435393537383239303033363031663136383230313931356235303530353039313833353235303530363030323832303135343630303136303031363034303162303338303832313636303230383430313532363030313630343031623832303438313136363034303834303135323630303136303830316238323034383131363630363038343031353236303031363063303162393039313034383131363630383038333031353236303033393238333031353431363630613039303931303135323930393135303831353136303035383131313135363131346531353736313134653136313239303335363562313431353830313536313135303235373530363030313831353136303035383131313135363131346666353736313134666636313239303335363562313431353562313536313135323335373830353136303430353136333137306363393333363065323162383135323631303437323931393036303034303136313261633935363562363030333831353136303035383131313135363131353338353736313135333836313239303335363562303336313135343635373630303438313532363131353462353635623630303538313532356238333630303830313831363032303031353136303430353136313135363139313930363132643731353635623930383135323630343038303531363032303932383139303033383330313930323035663930383139303535383538313532363030373837303139303932353239303230383135313831353438333932393139303832393036306666313931363630303138333630303538313131313536313135613535373631313561353631323930333536356230323137393035353530363032303832303135313630303138323031393036313135626539303832363132646364353635623530363034303832303135313630303238323031383035343630363038353031353136303830383630313531363061303837303135313630303136303031363034303162303339353836313636303031363030313630383031623033313939303934313639333930393331373630303136303430316239323836313639323930393230323931393039313137363030313630303136303830316230333136363030313630383031623931383531363931393039313032363030313630303136306330316230333136313736303031363063303162393138343136393139303931303231373930353536306330393039323031353136303033393039313031383035343630303136303031363034303162303331393136393139303932313631373930353538303531363030353831313131353631313636333537363131363633363132393033353635623630343035313834393037663163303865353936353666316131386463326461373638323663646335323830356334336538393761313763353066616566623861623363313532366363313639303566393061333931393639313935353039303933353035303530353035363562333336313136613336313062386135363562363030313630303136306130316230333136313436313062383835373333363034303531363331313863646161373630653031623831353236303034303136313034373239313930363132383434353635623766393031366430396437326434306664616532666438636561633662363233346337373036323134666433396331636431653630396130353238633139393330303830353436303031363030313630613031623033313938313136363030313630303136306130316230333834383131363931383231373834353536303430353139323136393138323930376638626530303739633533313635393134313334346364316664306134663238343139343937663937323261336461616665336234313836663662363435376530393035663930613335303530353035363562363131373434363132373539353635623566363131373464363131316263353635623566383438313532363030373832303136303230353236303430383038323230383135313630653038313031393039323532383035343933393435303931393239303931393038323930363066663136363030353831313131353631313738363537363131373836363132393033353635623630303538313131313536313137393735373631313739373631323930333536356238313532363032303031363030313832303138303534363131376162393036313261393135363562383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343631313764373930363132613931353635623830313536313138323235373830363031663130363131376639353736313031303038303833353430343032383335323931363032303031393136313138323235363562383230313931393035663532363032303566323039303562383135343831353239303630303130313930363032303031383038333131363131383035353738323930303336303166313638323031393135623530353035303931383335323530353036303032383238313031353436303031363030313630343031623033383038323136363032303835303135323630303136303430316238323034383131363630343038353031353236303031363038303162383230343831313636303630383530313532363030313630633031623930393130343831313636303830383430313532363030333930393330313534393039323136363061303930393130313532393039313530383135313630303538313131313536313138393035373631313839303631323930333536356231343631313863333537356638343831353236303037383330313630323035323630343039303831393032303534393035313633313730636339333336306532316238313532363130343732393136306666313639303630303430313631326163393536356236303033383135323432363030313630303136303430316230333136363063303832303135323566383438313532363030373833303136303230353236303430393032303831353138313534383339323931393038323930363066663139313636303031383336303035383131313135363131393037353736313139303736313239303335363562303231373930353535303630323038323031353136303031383230313930363131393230393038323631326463643536356235303630343038323031353136303032383230313830353436303630383530313531363038303836303135313630613038373031353136303031363030313630343031623033393538363136363030313630303136303830316230333139393039343136393339303933313736303031363034303162393238363136393239303932303239313930393131373630303136303031363038303162303331363630303136303830316239313835313639313930393130323630303136303031363063303162303331363137363030313630633031623931383431363931393039313032313739303535363063303930393230313531363030333930393130313830353436303031363030313630343031623033313931363931393039323136313739303535356636313139626438353832363131666662353635623630383038343031353136303430383035313630303136303031363034303162303339303932313638323532343236303230383330313532393139333530383339323530383739313766313364353833393463663236396434386263663932373935396132396135666665653763393932346461666666383932376563646633633438666661376336373931303136303430353138303931303339306133353039333932353035303530353635623566363131613164363131316263353635623630303930313534363066663136363131613431353736303430353136333766616238316535363065303162383135323630303430313630343035313830393130333930666435623566363131613461363131316263353635623930353034323631316135643630363038363031363034303837303136313331663935363562363030313630303136303430316230333136313131353830363131613937353735303631316137623632303261333030343236313265613035363562363131613862363036303836303136303430383730313631333166393536356236303031363030313630343031623033313631303135356231353631316164313537363131616163363036303835303136303430383630313631333166393536356236303430353136333538373964613133363065313162383135323630303136303031363034303162303339303931313636303034383230313532363032343031363130343732353635623631316165363631316165313630363038363031383636313332313235363562363132316335353635623631316166363631316165313630383038363031383636313332313235363562363033303631316230353630323038363031383636313332323635363562393035303134363131623337353736313162313936303230383530313835363133323236353635623630343035313633323634373562326636306531316238313532363130343732393235303630303430313930383135323630323030313930353635623631316234313834383036313332323635363562393035303566303336313162366535373631316235333834383036313332323635363562363034303531363333653038613132353630653131623831353236303034303136313034373239323931393036313332363835363562356636303038383230313631316237643836383036313332323635363562363034303531363131623862393239313930363133313564353635623930383135323630323030313630343035313830393130333930323035343134363131626334353736313162613938343830363133323236353635623630343035313633613431663737326636306530316238313532363030343031363130343732393239313930363133323638353635623631316263653833356636313233326535363562363034303830353136306530383130313930393135323831353438313532356639303831393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f393036336530343762323833393036303230383130313631316330623861383036313332323635363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303139313930393135323530353035303930383235323530363032303930383130313930363131633533393038623031386236313332323635363562383038303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393339323931393038313831353236303230303138333833383038323834333735663932303139313930393135323530353035303930383235323530363032303031363131633963363036303862303136303430386330313631333166393536356236303031363030313630343031623033313638313532363032303031363131636237363036303862303138623631333231323536356236313163633039303631333237623536356238313532363032303031363131636432363038303862303138623631333231323536356236313163646239303631333237623536356238313532363032303031383836303031363030313630343031623033313638313532353036303430353138323633666666666666666631363630653031623831353236303034303136313164303939313930363133336138353635623566363034303531383038333033383138363561663431353830313536313164323335373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363131643461393139303831303139303631333435663536356235663832383135323630303638363031363032303532363034303930323039313933353039313530363131643638383238323631326463643536356235303831363030383834303136313164373838383830363133323236353635623630343035313631316438363932393139303631333135643536356239303831353236303430353139303831393030333630323030313831323039313930393135353633656535623438656236306530316238313532356639303630303536303031363039393162303139303633656535623438656239303631316463323930383539303630303430313631326330623536356236303230363034303531383038333033383135663837356166313135383031353631316464653537336435663830336533643566666435623530353035303530363034303531336436303166313936303166383230313136383230313830363034303532353038313031393036313165303239313930363132633164353635623630343038303531363065303831303139303931353239303931353038303630303138313532363032303031363131653232383938303631333232363536356238303830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039333932393139303831383135323630323030313833383338303832383433373566393230313832393035323530393338353532353035303530363030313630303136303430316230333839313636303230383038343031383239303532363034303830383530313834393035323630363038353031393239303932353236303830383430313833393035323630613039303933303138323930353238363832353236303037383830313930393235323230383135313831353438323930363066663139313636303031383336303035383131313135363131656231353736313165623136313239303335363562303231373930353535303630323038323031353136303031383230313930363131656361393038323631326463643536356235303630343038323031353136303032383230313830353436303630383530313531363038303836303135313630613038373031353136303031363030313630343031623033393538363136363030313630303136303830316230333139393039343136393339303933313736303031363034303162393238363136393239303932303239313930393131373630303136303031363038303162303331363630303136303830316239313835313639313930393130323630303136303031363063303162303331363137363030313630633031623931383431363931393039313032313739303535363063303930393230313531363030333930393130313830353436303031363030313630343031623033313931363931393039323136313739303535383036313166363738383830363133323236353635623630343035313631316637353932393139303631333135643536356236303430353138303931303339303230383437666237373239376533626566633639316266633836346138316532343166383365326566373232623665376265636161326563656332353063366435326234333038393862363034303031363032303831303139303631316662333931393036313331663935363562363034303830353136303031363030313630343031623033393338343136383135323932393039313136363032303833303135323031363034303531383039313033393061343530393039353934353035303530353035303536356236313166653936313235353335363562363131666632383236313235396335363562363130626339383136313235623535363562356638303566363132303036363131316263353635623566383638313532363030373832303136303230353236303430393032303630303230313534393039313530363030313630383031623930303436303031363030313630343031623033313636313230333638353832363132333265353635623566363132303430383736313235633635363562356638383831353236303037383530313630323035323630343038303832323036303032303138303534363766666666666666666666666666666666363038303162313931363630303136303830316236303031363030313630343031623033386338313136393138323032393239303932313739303932353539313531363334326132653062353630653131623831353236303034383130313863393035323931383431363630323438333031353236303434383230313532393139323530393036303035363030313630393931623031393036336565356234386562393037335f5f2466643063313437623430333165656636303739623034393863626166613836356630245f5f39303633383534356331366139303630363430313566363034303531383038333033383138363561663431353830313536313230653935373364356638303365336435666664356235303530353035303630343035313364356638323365363031663364393038313031363031663139313638323031363034303532363132313130393139303831303139303631326264613536356236303430353138323633666666666666666631363630653031623831353236303034303136313231326339313930363132633062353635623630323036303430353138303833303338313566383735616631313538303135363132313438353733643566383033653364356666643562353035303530353036303430353133643630316631393630316638323031313638323031383036303430353235303831303139303631323136633931393036313263316435363562363034303830353136303031363030313630343031623033386138313136383235323630323038323031383439303532383235313933393435303835313639323862393237663037646535666633356136373461383030356536363166333333336339303763613633333334363238303837363264313964633762336162623161386331646639323832393030333031393061333930393435303932353035303530356239323530393239303530353635623631323164323630323038323031383236313238326235363562363366666666666666663136313538303135363132316632353735303631323165643630323038323031383236313263333435363562313531353930353035623135363132323339353736313232303436303230383230313832363132383262353635623631323231313630323038333031383336313263333435363562363034303531363363303861306631643630653031623831353236336666666666666666393039333136363030343834303135323630323438333031353235303630343430313631303437323536356236313232343636303230383230313832363132633334353635623930353036313232353536303230383330313833363132383262353635623633666666666666666631363131313536313232366535373631323230343630323038323031383236313238326235363562363030313562363132323765363032303833303138333631326333343536356239303530383131303135363130626339353736313232393436303230383330313833363132633334353635623631323239663630303138343631333461323536356238313831313036313232616535373631323261653631326337393536356239303530363032303032303136303230383130313930363132326333393139303631326130343536356236303031363030313630613031623033313636313232643936303230383430313834363132633334353635623833383138313130363132326539353736313232653936313263373935363562393035303630323030323031363032303831303139303631323266653931393036313261303435363562363030313630303136306130316230333136313031353631323332363537363034303531363330646263386435663630653331623831353236303034303136303430353138303931303339306664356236303031303136313232373135363562356636313233333736313131626335363562393035303566383236303031363030313630343031623033313638343630303136303031363034303162303331363131313536313233363535373631323335653833383536313334623535363562393035303631323337323536356236313233366638343834363133346235353635623930353035623630343038303531363038303831303138323532363030323834303135343830383235323630303338353031353436303230383330313532363030343835303135343932383230313932393039323532363030353834303135343630303136303031363034303162303331363630363038323031353234323931313538303631323364343537353036303031383430313534383135313631323364303931363030313630303136303430316230333136393036313265613035363562383231303135356231353631323366613537363030313630303136303430316230333833313636303630383230313532383138313532363034303831303135313630323038323031353236313234313935363562383238313630363030313831383135313631323430633931393036313334643535363562363030313630303136303430316230333136393035323530356236303630383130313531363132343239393036303634363133346635353635623630323038323031353136303031383630313534363030313630303136303430316230333932393039323136393136313234353439313930363030313630343031623930303436306666313636313265643535363562313031353631323438343537363036303831303135313630343035313633646661653838303136306530316238313532363030313630303136303430316230333930393131363630303438323031353236303234303136313034373235363562383536303031363030313630343031623033313638313630343030313831383135313631323439663931393036313265613035363562393035323530363034303831303138303531363030313630303136303430316230333837313639313930363132346266393038333930363133346132353635623930353235303630303138343031353436303430383230313531363036343931363132346534393136303031363034303162393039313034363066663136393036313265643535363562313031353631323530623537383036303430303135313630343035313633353934333331376636306530316238313532363030343031363130343732393138313532363032303031393035363562383035313630303238353031353536303230383130313531363030333835303135353630343038313031353136303034383530313535363036303031353136303035393039333031383035343630303136303031363034303162303331393136363030313630303136303430316230333930393431363933393039333137393039323535353035303530353035363562376666306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030353436303031363034303162393030343630666631363631306238383537363034303531363331616663643739663630653331623831353236303034303136303430353138303931303339306664356236313235613436313235353335363562363132356163363132363266353635623631313138313831363132363337353635623631323562643631323535333536356236313131383138313631323731613536356235663830363132356430363131316263353635623566383438313532363030373832303136303230353236303430393032303630303230313830353439313932353039303630303839303631323630343930363030313630343031623930303436303031363030313630343031623033313636313335323035363562393139303631303130303061383135343831363030313630303136303430316230333032313931363930383336303031363030313630343031623033313630323137393035353931353035303931393035303536356236313062383836313235353335363562363132363366363132353533353635623566363132363438363131316263353635623832333538313535393035303630313436313236363036303630383430313630343038353031363133353362353635623630666631363131383036313236376635373530363132363761363036303833303136303430383430313631333533623536356236306666313631353562313536313236623335373631323639343630363038333031363034303834303136313335336235363562363034303531363334613539626266663630653131623831353236306666393039313136363030343832303135323630323430313631303437323536356236313236633336303630383330313630343038343031363133353362353635623630303138323031383035343630666639323930393231363630303136303430316230323630666636303430316231393930393231363931393039313137393035353631323666343630343038333031363032303834303136313331663935363562363030313931393039313031383035343630303136303031363034303162303331393136363030313630303136303430316230333930393231363931393039313137393035353530353635623631313134663631323535333536356235303830353436313237326539303631326139313536356235663832353538303630316631303631323733643537353035303536356236303166303136303230393030343930356635323630323035663230393038313031393036313131383139313930363132373936353635623630343038303531363065303831303139303931353238303566383135323630363036303230383230313831393035323566363034303833303138313930353239303832303138313930353236303830383230313831393035323630613038323031383139303532363063303930393130313532393035363562356238303832313131353631323761613537356638313535363030313031363132373937353635623530393035363562356636303230383238343033313231353631323762653537356638306664356235303335393139303530353635623830333536336666666666666666383131363831313436313237643835373566383066643562393139303530353635623566383036303430383338353033313231353631323765653537356638306664356238323335363030313630303136303430316230333831313131353631323830333537356638306664356238333031363038303831383630333132313536313238313435373566383066643562393135303631323832323630323038343031363132376335353635623930353039323530393239303530353635623566363032303832383430333132313536313238336235373566383066643562363130626530383236313237633535363562363030313630303136306130316230333931393039313136383135323630323030313930353635623830333536303031363030313630343031623033383131363831313436313237643835373566383066643562356638303630343038333835303331323135363132383766353735663830666435623832333536303031363030313630343031623033383131313135363132383934353735663830666435623833303136306130383138363033313231353631323861353537356638306664356239313530363132383232363032303834303136313238353835363562363030313630303136306130316230333831313638313134363131313831353735663830666435623566383038323834303336303830383131323135363132386439353735663830666435623630363038313132313536313238653635373566383066643562353038323931353036303630383330313335363132386638383136313238623335363562383039313530353039323530393239303530353635623633346534383762373136306530316235663532363032313630303435323630323435666664356236303036383131303631323933333537363334653438376237313630653031623566353236303231363030343532363032343566666435623930353235363562356635623833383131303135363132393531353738313831303135313833383230313532363032303031363132393339353635623530353035663931303135323536356235663831353138303834353236313239373038313630323038363031363032303836303136313239333735363562363031663031363031663139313639323930393230313630323030313932393135303530353635623630323038313532363132393936363032303832303138333531363132393137353635623566363032303833303135313630653036303430383430313532363132396231363130313030383430313832363132393539353635623930353036303430383430313531363030313630303136303430316230333830383231363630363038363031353238303630363038373031353131363630383038363031353238303630383038373031353131363630613038363031353238303630613038373031353131363630633038363031353238303630633038373031353131363630653038363031353235303530383039313530353039323931353035303536356235663630323038323834303331323135363132613134353735663830666435623831333536313261316638313631323862333536356239333932353035303530353635623566383036303230383338353033313231353631326133373537356638306664356238323335363030313630303136303430316230333830383231313135363132613464353735663830666435623831383530313931353038353630316638333031313236313261363035373566383066643562383133353831383131313135363132613665353735663830666435623836363032303832383530313031313131353631326137663537356638306664356236303230393239303932303139363931393535303930393335303530353035303536356236303031383138313163393038323136383036313261613535373630376638323136393135303562363032303832313038313033363132616333353736333465343837623731363065303162356635323630323236303034353236303234356666643562353039313930353035363562363032303831303136313062653338323834363132393137353635623633346534383762373136306530316235663532363034313630303435323630323435666664356236303430353136303630383130313630303136303031363034303162303338313131383238323130313731353631326230643537363132623064363132616437353635623630343035323930353635623630343038303531393038313031363030313630303136303430316230333831313138323832313031373135363132623064353736313262306436313261643735363562363034303531363031663832303136303166313931363831303136303031363030313630343031623033383131313832383231303137313536313262356435373631326235643631326164373536356236303430353239313930353035363562356636303031363030313630343031623033383231313135363132623764353736313262376436313261643735363562353036303166303136303166313931363630323030313930353635623566383236303166383330313132363132623961353735663830666435623831353136313262616436313262613838323631326236353536356236313262333535363562383138313532383436303230383338363031303131313135363132626331353735663830666435623631326264323832363032303833303136303230383730313631323933373536356239343933353035303530353035363562356636303230383238343033313231353631326265613537356638306664356238313531363030313630303136303430316230333831313131353631326266663537356638306664356236313262643238343832383530313631326238623536356236303230383135323566363130626530363032303833303138343631323935393536356235663630323038323834303331323135363132633264353735663830666435623530353139313930353035363562356638303833333536303165313938343336303330313831313236313263343935373566383066643562383330313830333539313530363030313630303136303430316230333832313131353631326336323537356638306664356236303230303139313530363030353831393031623336303338323133313536313231626535373566383066643562363334653438376237313630653031623566353236303332363030343532363032343566666435623566383233353630356531393833333630333031383131323631326361313537356638306664356239313930393130313932393135303530353635623566383236303166383330313132363132636261353735663830666435623831333536313263633836313262613838323631326236353536356238313831353238343630323038333836303130313131313536313263646335373566383066643562383136303230383530313630323038333031333735663931383130313630323030313931393039313532393339323530353035303536356235663630363038323336303331323135363132643038353735663830666435623631326431303631326165623536356238323335363030313630303136303430316230333830383231313135363132643236353735663830666435623631326433323336383338373031363132636162353635623833353236303230383530313335393135303830383231313135363132643437353735663830666435623530363132643534333638323836303136313263616235363562363032303833303135323530363132643636363034303834303136313238353835363562363034303832303135323932393135303530353635623566383235313631326361313831383436303230383730313631323933373536356236303166383231313135363130623565353738303566353236303230356632303630316638343031363030353163383130313630323038353130313536313264613735373530383035623630316638343031363030353163383230313931353035623831383131303135363132646336353735663831353536303031303136313264623335363562353035303530353035303536356238313531363030313630303136303430316230333831313131353631326465363537363132646536363132616437353635623631326466613831363132646634383435343631326139313536356238343631326438323536356236303230383036303166383331313630303138313134363132653264353735663834313536313265313635373530383538333031353135623566313936303033383639303162316331393136363030313835393031623137383535353631326538343536356235663835383135323630323038313230363031663139383631363931356238323831313031353631326535623537383838363031353138323535393438343031393436303031393039313031393038343031363132653363353635623530383538323130313536313265373835373837383530313531356631393630303338383930316236306638313631633139313638313535356235303530363030313834363030313162303138353535356235303530353035303530353035363562363334653438376237313630653031623566353236303131363030343532363032343566666435623830383230313830383231313135363130626533353736313062653336313265386335363562356636336666666666666666383038333136383138313033363132656362353736313265636236313265386335363562363030313031393339323530353035303536356238303832303238313135383238323034383431343137363130626533353736313062653336313265386335363562356638303833333536303165313938343336303330313831313236313266303135373566383066643562383330313630323038313031393235303335393035303630303136303031363034303162303338313131313536313266316635373566383066643562383033363033383231333135363132316265353735663830666435623831383335323831383136303230383530313337353035663832383230313630323039303831303139313930393135323630316639303931303136303166313931363930393130313031393035363562356638333833383535323630323038303836303139353530383038353630303531623833303130313834356635623837383131303135363133303032353738343833303336303166313930313839353238313335333638383930303336303565313930313831313236313266393135373566383066643562383730313630363036313266396638323830363132656563353635623832383735323631326661663833383830313832383436313266326435363562393235303530353036313266626638363833303138333631326565633536356238363833303338383838303135323631326664313833383238343631326632643536356239323530353035303630343036303031363030313630343031623033363132666561383238353031363132383538353635623136393530313934393039343532353039373833303139373930383330313930363030313031363132663663353635623530393039373936353035303530353035303530353035363562363032303831353238313335363032303832303135323630323038323031333536303430383230313532356636303430383330313335363133303333383136313238623335363562363030313630303136306130316230333136363036303833383130313931393039313532383330313335333638343930303336303165313930313831313236313330356135373566383066643562383330313630323038313031393033353630303136303031363034303162303338313131313536313330373535373566383066643562383036303035316233363033383231333135363133303836353735663830666435623630383038303835303135323631333039613630613038353031383238343631326635353536356239353934353035303530353035303536356238303531383031353135383131343631323764383537356638306664356235663830363034303833383530333132313536313330633335373566383066643562383235313931353036313238323236303230383430313631333061333536356235663630323038303833353235663834353436313330653538313631326139313536356238303630323038373031353236303430363030313830383431363566383131343631333130363537363030313831313436313331323235373631333134663536356236306666313938353136363034303861303135323630343038343135313536303035316238613031303139353530363133313466353635623839356635323630323035663230356635623835383131303135363133313436353738313534386238323031383630313532393038333031393038383031363133313262353635623861303136303430303139363530353035623530393339383937353035303530353035303530353035303536356238313833383233373566393130313930383135323931393035303536356235663830363034303833383530333132313536313331376435373566383066643562383235313630303136303031363034303162303338303832313131353631333139333537356638306664356239303834303139303630363038323837303331323135363133316136353735663830666435623631333161653631326165623536356238323531383135323630323038333031353136313331633038313631323862333536356236303230383230313532363034303833303135313832383131313135363133316436353735663830666435623631333165323838383238363031363132623862353635623630343038333031353235303933353036313238323239313530353036303230383430313631333061333536356235663630323038323834303331323135363133323039353735663830666435623631306265303832363132383538353635623566383233353630336531393833333630333031383131323631326361313537356638306664356235663830383333353630316531393834333630333031383131323631333233623537356638306664356238333031383033353931353036303031363030313630343031623033383231313135363133323534353735663830666435623630323030313931353033363831393030333832313331353631323162653537356638306664356236303230383135323566363132626432363032303833303138343836363132663264353635623566363034303832333630333132313536313332386235373566383066643562363133323933363132623133353635623631333239633833363132376335353635623831353236303230383038343031333536303031363030313630343031623033383038323131313536313332623835373566383066643562393038353031393033363630316638333031313236313332636135373566383066643562383133353831383131313135363133326463353736313332646336313261643735363562383036303035316239313530363133326564383438333031363132623335353635623831383135323931383330313834303139313834383130313930333638343131313536313333303635373566383066643562393338353031393335623833383531303135363133333330353738343335393235303631333332303833363132386233353635623832383235323933383530313933393038353031393036313333306235363562393438363031393439303934353235303932393539343530353035303530353035363562356636303430383330313633666666666666666638333531313638343532363032303830383430313531363034303630323038373031353238323831353138303835353236303630383830313931353036303230383330313934353035663932353035623830383331303135363133333964353738343531363030313630303136306130316230333136383235323933383330313933363030313932393039323031393139303833303139303631333337343536356235303936393535303530353035303530353035363562363032303831353238313531363032303832303135323566363032303833303135313630653036303430383430313532363133336365363130313030383430313832363132393539353635623930353036303430383430313531363031663139383038353834303330313630363038363031353236313333656338333833363132393539353635623932353036303031363030313630343031623033363036303837303135313136363038303836303135323630383038363031353139313530383038353834303330313630613038363031353236313334316338333833363133333432353635623932353036306130383630313531393135303830383538343033303136306330383630313532353036313334336138323832363133333432353635623931353035303630633038343031353136313334353736306530383530313832363030313630303136303430316230333136393035323536356235303933393235303530353035363562356638303630343038333835303331323135363133343730353735663830666435623832353139313530363032303833303135313630303136303031363034303162303338313131313536313334386335373566383066643562363133343938383538323836303136313262386235363562393135303530393235303932393035303536356238313831303338313831313131353631306265333537363130626533363132653863353635623630303136303031363034303162303338323831313638323832313630333930383038323131313536313132653435373631313265343631326538633536356236303031363030313630343031623033383138313136383338323136303139303830383231313135363131326534353736313132653436313265386335363562363030313630303136303430316230333831383131363833383231363032383038323136393139303832383131343631333531383537363133353138363132653863353635623530353039323931353035303536356235663630303136303031363034303162303338303833313638313831303336313265636235373631326563623631326538633536356235663630323038323834303331323135363133353462353735663830666435623831333536306666383131363831313436313261316635373566383066646665613136343733366636633633343330303038313930303061", +// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. +type WarpBlockHash struct { + SourceChainID [32]byte + BlockHash [32]byte } -// PoAValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use PoAValidatorManagerMetaData.ABI instead. -var PoAValidatorManagerABI = PoAValidatorManagerMetaData.ABI - -// PoAValidatorManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use PoAValidatorManagerMetaData.Bin instead. -var PoAValidatorManagerBin = PoAValidatorManagerMetaData.Bin - -// DeployPoAValidatorManager deploys a new Ethereum contract, binding an instance of PoAValidatorManager to it. -func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *PoAValidatorManager, error) { - parsed, err := PoAValidatorManagerMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } +// WarpMessage is an auto generated low-level Go binding around an user-defined struct. +type WarpMessage struct { + SourceChainID [32]byte + OriginSenderAddress common.Address + Payload []byte +} - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoAValidatorManagerBin), backend, init) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil +// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. +var ContextUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", } -// PoAValidatorManager is an auto generated Go binding around an Ethereum contract. -type PoAValidatorManager struct { - PoAValidatorManagerCaller // Read-only binding to the contract - PoAValidatorManagerTransactor // Write-only binding to the contract - PoAValidatorManagerFilterer // Log filterer for contract events +// ContextUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextUpgradeableMetaData.ABI instead. +var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI + +// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. +type ContextUpgradeable struct { + ContextUpgradeableCaller // Read-only binding to the contract + ContextUpgradeableTransactor // Write-only binding to the contract + ContextUpgradeableFilterer // Log filterer for contract events } -// PoAValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type PoAValidatorManagerCaller struct { +// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextUpgradeableCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// PoAValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type PoAValidatorManagerTransactor struct { +// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// PoAValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type PoAValidatorManagerFilterer struct { +// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextUpgradeableFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// PoAValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type PoAValidatorManagerSession struct { - Contract *PoAValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ContextUpgradeableSession struct { + Contract *ContextUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// PoAValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type PoAValidatorManagerCallerSession struct { - Contract *PoAValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ContextUpgradeableCallerSession struct { + Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// PoAValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type PoAValidatorManagerTransactorSession struct { - Contract *PoAValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ContextUpgradeableTransactorSession struct { + Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// PoAValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type PoAValidatorManagerRaw struct { - Contract *PoAValidatorManager // Generic contract binding to access the raw methods on +// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextUpgradeableRaw struct { + Contract *ContextUpgradeable // Generic contract binding to access the raw methods on } -// PoAValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type PoAValidatorManagerCallerRaw struct { - Contract *PoAValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextUpgradeableCallerRaw struct { + Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on } -// PoAValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type PoAValidatorManagerTransactorRaw struct { - Contract *PoAValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactorRaw struct { + Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on } -// NewPoAValidatorManager creates a new instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManager(address common.Address, backend bind.ContractBackend) (*PoAValidatorManager, error) { - contract, err := bindPoAValidatorManager(address, backend, backend, backend) +// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { + contract, err := bindContextUpgradeable(address, backend, backend, backend) if err != nil { return nil, err } - return &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil + return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil } -// NewPoAValidatorManagerCaller creates a new read-only instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoAValidatorManagerCaller, error) { - contract, err := bindPoAValidatorManager(address, caller, nil, nil) +// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { + contract, err := bindContextUpgradeable(address, caller, nil, nil) if err != nil { return nil, err } - return &PoAValidatorManagerCaller{contract: contract}, nil + return &ContextUpgradeableCaller{contract: contract}, nil } -// NewPoAValidatorManagerTransactor creates a new write-only instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoAValidatorManagerTransactor, error) { - contract, err := bindPoAValidatorManager(address, nil, transactor, nil) +// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { + contract, err := bindContextUpgradeable(address, nil, transactor, nil) if err != nil { return nil, err } - return &PoAValidatorManagerTransactor{contract: contract}, nil + return &ContextUpgradeableTransactor{contract: contract}, nil } -// NewPoAValidatorManagerFilterer creates a new log filterer instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoAValidatorManagerFilterer, error) { - contract, err := bindPoAValidatorManager(address, nil, nil, filterer) +// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { + contract, err := bindContextUpgradeable(address, nil, nil, filterer) if err != nil { return nil, err } - return &PoAValidatorManagerFilterer{contract: contract}, nil + return &ContextUpgradeableFilterer{contract: contract}, nil } -// bindPoAValidatorManager binds a generic wrapper to an already deployed contract. -func bindPoAValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := PoAValidatorManagerMetaData.GetAbi() +// bindContextUpgradeable binds a generic wrapper to an already deployed contract. +func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextUpgradeableMetaData.GetAbi() if err != nil { return nil, err } @@ -216,594 +218,475 @@ func bindPoAValidatorManager(address common.Address, caller bind.ContractCaller, // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_PoAValidatorManager *PoAValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoAValidatorManager.Contract.PoAValidatorManagerCaller.contract.Call(opts, result, method, params...) +func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_PoAValidatorManager *PoAValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transfer(opts) +func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_PoAValidatorManager *PoAValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transact(opts, method, params...) +func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_PoAValidatorManager *PoAValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoAValidatorManager.Contract.contract.Call(opts, result, method, params...) +func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.contract.Transfer(opts) +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.contract.Transact(opts, method, params...) +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") +// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. +type ContextUpgradeableInitializedIterator struct { + Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log - if err != nil { - return *new(uint32), err + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContextUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContextUpgradeableInitializedIterator) Error() error { + return it.fail } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContextUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) +// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. +type ContextUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { + logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { - return *new(uint8), err + return nil, err } + return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { - return out0, err + logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) +// IPoAValidatorManagerMetaData contains all meta data concerning the IPoAValidatorManager contract. +var IPoAValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") +// IPoAValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IPoAValidatorManagerMetaData.ABI instead. +var IPoAValidatorManagerABI = IPoAValidatorManagerMetaData.ABI - if err != nil { - return *new(uint8), err - } +// IPoAValidatorManager is an auto generated Go binding around an Ethereum contract. +type IPoAValidatorManager struct { + IPoAValidatorManagerCaller // Read-only binding to the contract + IPoAValidatorManagerTransactor // Write-only binding to the contract + IPoAValidatorManagerFilterer // Log filterer for contract events +} - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) +// IPoAValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPoAValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - return out0, err +// IPoAValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPoAValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} +// IPoAValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPoAValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) +// IPoAValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPoAValidatorManagerSession struct { + Contract *IPoAValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) +// IPoAValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPoAValidatorManagerCallerSession struct { + Contract *IPoAValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - +// IPoAValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPoAValidatorManagerTransactorSession struct { + Contract *IPoAValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) +// IPoAValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPoAValidatorManagerRaw struct { + Contract *IPoAValidatorManager // Generic contract binding to access the raw methods on } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) +// IPoAValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPoAValidatorManagerCallerRaw struct { + Contract *IPoAValidatorManagerCaller // Generic read-only contract binding to access the raw methods on } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") +// IPoAValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPoAValidatorManagerTransactorRaw struct { + Contract *IPoAValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} +// NewIPoAValidatorManager creates a new instance of IPoAValidatorManager, bound to a specific deployed contract. +func NewIPoAValidatorManager(address common.Address, backend bind.ContractBackend) (*IPoAValidatorManager, error) { + contract, err := bindIPoAValidatorManager(address, backend, backend, backend) if err != nil { - return *new([32]byte), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - + return &IPoAValidatorManager{IPoAValidatorManagerCaller: IPoAValidatorManagerCaller{contract: contract}, IPoAValidatorManagerTransactor: IPoAValidatorManagerTransactor{contract: contract}, IPoAValidatorManagerFilterer: IPoAValidatorManagerFilterer{contract: contract}}, nil } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) +// NewIPoAValidatorManagerCaller creates a new read-only instance of IPoAValidatorManager, bound to a specific deployed contract. +func NewIPoAValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IPoAValidatorManagerCaller, error) { + contract, err := bindIPoAValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPoAValidatorManagerCaller{contract: contract}, nil } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) +// NewIPoAValidatorManagerTransactor creates a new write-only instance of IPoAValidatorManager, bound to a specific deployed contract. +func NewIPoAValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoAValidatorManagerTransactor, error) { + contract, err := bindIPoAValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPoAValidatorManagerTransactor{contract: contract}, nil } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - +// NewIPoAValidatorManagerFilterer creates a new log filterer instance of IPoAValidatorManager, bound to a specific deployed contract. +func NewIPoAValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoAValidatorManagerFilterer, error) { + contract, err := bindIPoAValidatorManager(address, nil, nil, filterer) if err != nil { - return *new([32]byte), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - + return &IPoAValidatorManagerFilterer{contract: contract}, nil } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) +// bindIPoAValidatorManager binds a generic wrapper to an already deployed contract. +func bindIPoAValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPoAValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoAValidatorManager *IPoAValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoAValidatorManager.Contract.IPoAValidatorManagerCaller.contract.Call(opts, result, method, params...) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoAValidatorManager *IPoAValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.IPoAValidatorManagerTransactor.contract.Transfer(opts) +} - if err != nil { - return *new(common.Address), err - } +// Transact invokes the (paid) contract method with params as input values. +func (_IPoAValidatorManager *IPoAValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.IPoAValidatorManagerTransactor.contract.Transact(opts, method, params...) +} - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoAValidatorManager *IPoAValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoAValidatorManager.Contract.contract.Call(opts, result, method, params...) +} - return out0, err +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.contract.Transfer(opts) +} +// Transact invokes the (paid) contract method with params as input values. +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.contract.Transact(opts, method, params...) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.CompleteEndValidation(&_IPoAValidatorManager.TransactOpts, messageIndex) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.CompleteEndValidation(&_IPoAValidatorManager.TransactOpts, messageIndex) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.CompleteValidatorRegistration(&_IPoAValidatorManager.TransactOpts, messageIndex) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.CompleteValidatorRegistration(&_IPoAValidatorManager.TransactOpts, messageIndex) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.InitializeEndValidation(&_IPoAValidatorManager.TransactOpts, validationID) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. // -// Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.InitializeEndValidation(&_IPoAValidatorManager.TransactOpts, validationID) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. // -// Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerSession) Owner() (common.Address, error) { - return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _IPoAValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. // -// Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) Owner() (common.Address, error) { - return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_IPoAValidatorManager *IPoAValidatorManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.InitializeValidatorRegistration(&_IPoAValidatorManager.TransactOpts, registrationInput, weight) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.InitializeValidatorRegistration(&_IPoAValidatorManager.TransactOpts, registrationInput, weight) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.InitializeValidatorSet(&_IPoAValidatorManager.TransactOpts, subnetConversionData, messsageIndex) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.InitializeValidatorSet(&_IPoAValidatorManager.TransactOpts, subnetConversionData, messsageIndex) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.ResendEndValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. -// -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initialize", settings, initialOwner) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. -// -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. -// -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. -// -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. -// -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. -// -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) RenounceOwnership() (*types.Transaction, error) { - return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.ResendEndValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) } // ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. // // Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) } // ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. // // Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +func (_IPoAValidatorManager *IPoAValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) } // ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. // // Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) +func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IPoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) -} - -// PoAValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialValidatorCreatedIterator struct { - Event *PoAValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// IPoAValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerInitialValidatorCreatedIterator struct { + Event *IPoAValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -817,7 +700,7 @@ type PoAValidatorManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { +func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -826,7 +709,7 @@ func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialValidatorCreated) + it.Event = new(IPoAValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -841,7 +724,7 @@ func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialValidatorCreated) + it.Event = new(IPoAValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -857,19 +740,19 @@ func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Error() error { +func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Close() error { +func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialValidatorCreated struct { +// IPoAValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerInitialValidatorCreated struct { ValidationID [32]byte NodeID common.Hash Weight *big.Int @@ -879,7 +762,7 @@ type PoAValidatorManagerInitialValidatorCreated struct { // FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // // Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoAValidatorManagerInitialValidatorCreatedIterator, error) { +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoAValidatorManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { @@ -890,17 +773,17 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorC nodeIDRule = append(nodeIDRule, nodeIDItem) } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } - return &PoAValidatorManagerInitialValidatorCreatedIterator{contract: _PoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &IPoAValidatorManagerInitialValidatorCreatedIterator{contract: _IPoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } // WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // // Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { @@ -911,7 +794,7 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCr nodeIDRule = append(nodeIDRule, nodeIDItem) } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } @@ -921,8 +804,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerInitialValidatorCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(IPoAValidatorManagerInitialValidatorCreated) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return err } event.Raw = log @@ -946,18 +829,18 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCr // ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // // Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoAValidatorManagerInitialValidatorCreated, error) { - event := new(PoAValidatorManagerInitialValidatorCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoAValidatorManagerInitialValidatorCreated, error) { + event := new(IPoAValidatorManagerInitialValidatorCreated) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitializedIterator struct { - Event *PoAValidatorManagerInitialized // Event containing the contract specifics and raw log +// IPoAValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidationPeriodCreatedIterator struct { + Event *IPoAValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -971,7 +854,7 @@ type PoAValidatorManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerInitializedIterator) Next() bool { +func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -980,7 +863,7 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) + it.Event = new(IPoAValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -995,7 +878,7 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) + it.Event = new(IPoAValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1011,41 +894,71 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerInitializedIterator) Error() error { +func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerInitializedIterator) Close() error { +func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerInitialized represents a Initialized event raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// IPoAValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoAValidatorManagerInitializedIterator, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoAValidatorManagerValidationPeriodCreatedIterator, error) { - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "Initialized") + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } - return &PoAValidatorManagerInitializedIterator{contract: _PoAValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &IPoAValidatorManagerValidationPeriodCreatedIterator{contract: _IPoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialized) (event.Subscription, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "Initialized") + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } @@ -1055,8 +968,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts * select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(IPoAValidatorManagerValidationPeriodCreated) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return err } event.Raw = log @@ -1077,21 +990,21 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts * }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoAValidatorManagerInitialized, error) { - event := new(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoAValidatorManagerValidationPeriodCreated, error) { + event := new(IPoAValidatorManagerValidationPeriodCreated) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferredIterator struct { - Event *PoAValidatorManagerOwnershipTransferred // Event containing the contract specifics and raw log +// IPoAValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidationPeriodEndedIterator struct { + Event *IPoAValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1105,7 +1018,7 @@ type PoAValidatorManagerOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { +func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1114,7 +1027,7 @@ func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) + it.Event = new(IPoAValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1129,7 +1042,7 @@ func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) + it.Event = new(IPoAValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1145,60 +1058,60 @@ func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Error() error { +func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { +func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerOwnershipTransferred represents a OwnershipTransferred event raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// IPoAValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PoAValidatorManagerOwnershipTransferredIterator, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IPoAValidatorManagerValidationPeriodEndedIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } - return &PoAValidatorManagerOwnershipTransferredIterator{contract: _PoAValidatorManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &IPoAValidatorManagerValidationPeriodEndedIterator{contract: _IPoAValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } @@ -1208,8 +1121,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerOwnershipTransferred) - if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(IPoAValidatorManagerValidationPeriodEnded) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return err } event.Raw = log @@ -1230,21 +1143,21 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferr }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseOwnershipTransferred(log types.Log) (*PoAValidatorManagerOwnershipTransferred, error) { - event := new(PoAValidatorManagerOwnershipTransferred) - if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IPoAValidatorManagerValidationPeriodEnded, error) { + event := new(IPoAValidatorManagerValidationPeriodEnded) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodCreatedIterator struct { - Event *PoAValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log +// IPoAValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidationPeriodRegisteredIterator struct { + Event *IPoAValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1258,7 +1171,7 @@ type PoAValidatorManagerValidationPeriodCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { +func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1267,7 +1180,7 @@ func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodCreated) + it.Event = new(IPoAValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1282,7 +1195,7 @@ func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodCreated) + it.Event = new(IPoAValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1298,71 +1211,53 @@ func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Error() error { +func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Close() error { +func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos +// IPoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoAValidatorManagerValidationPeriodCreatedIterator, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoAValidatorManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } - return &PoAValidatorManagerValidationPeriodCreatedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &IPoAValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } @@ -1372,8 +1267,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + event := new(IPoAValidatorManagerValidationPeriodRegistered) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return err } event.Raw = log @@ -1394,21 +1289,21 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCr }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoAValidatorManagerValidationPeriodCreated, error) { - event := new(PoAValidatorManagerValidationPeriodCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoAValidatorManagerValidationPeriodRegistered, error) { + event := new(IPoAValidatorManagerValidationPeriodRegistered) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodEndedIterator struct { - Event *PoAValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log +// IPoAValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidatorRemovalInitializedIterator struct { + Event *IPoAValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1422,7 +1317,7 @@ type PoAValidatorManagerValidationPeriodEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { +func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1431,7 +1326,7 @@ func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodEnded) + it.Event = new(IPoAValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1446,7 +1341,7 @@ func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodEnded) + it.Event = new(IPoAValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1462,60 +1357,62 @@ func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Error() error { +func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Close() error { +func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos +// IPoAValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoAValidatorManagerValidationPeriodEndedIterator, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoAValidatorManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } - return &PoAValidatorManagerValidationPeriodEndedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &IPoAValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } @@ -1525,8 +1422,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodEn select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodEnded) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + event := new(IPoAValidatorManagerValidatorRemovalInitialized) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -1547,21 +1444,21 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodEn }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoAValidatorManagerValidationPeriodEnded, error) { - event := new(PoAValidatorManagerValidationPeriodEnded) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoAValidatorManagerValidatorRemovalInitialized, error) { + event := new(IPoAValidatorManagerValidatorRemovalInitialized) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodRegisteredIterator struct { - Event *PoAValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log +// IPoAValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidatorWeightUpdateIterator struct { + Event *IPoAValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1575,7 +1472,7 @@ type PoAValidatorManagerValidationPeriodRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1584,7 +1481,7 @@ func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodRegistered) + it.Event = new(IPoAValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1599,7 +1496,7 @@ func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodRegistered) + it.Event = new(IPoAValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1615,53 +1512,62 @@ func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Error() error { +func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { +func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos +// IPoAValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IPoAValidatorManager contract. +type IPoAValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoAValidatorManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoAValidatorManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } - return &PoAValidatorManagerValidationPeriodRegisteredIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &IPoAValidatorManagerValidatorWeightUpdateIterator{contract: _IPoAValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } @@ -1671,8 +1577,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRe select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodRegistered) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + event := new(IPoAValidatorManagerValidatorWeightUpdate) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return err } event.Raw = log @@ -1693,59 +1599,315 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRe }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoAValidatorManagerValidationPeriodRegistered, error) { - event := new(PoAValidatorManagerValidationPeriodRegistered) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoAValidatorManagerValidatorWeightUpdate, error) { + event := new(IPoAValidatorManagerValidatorWeightUpdate) + if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorRemovalInitializedIterator struct { - Event *PoAValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log +// IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. +var IValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// IValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IValidatorManagerMetaData.ABI instead. +var IValidatorManagerABI = IValidatorManagerMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// IValidatorManager is an auto generated Go binding around an Ethereum contract. +type IValidatorManager struct { + IValidatorManagerCaller // Read-only binding to the contract + IValidatorManagerTransactor // Write-only binding to the contract + IValidatorManagerFilterer // Log filterer for contract events } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// IValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) +// IValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IValidatorManagerSession struct { + Contract *IValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IValidatorManagerCallerSession struct { + Contract *IValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IValidatorManagerTransactorSession struct { + Contract *IValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IValidatorManagerRaw struct { + Contract *IValidatorManager // Generic contract binding to access the raw methods on +} + +// IValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IValidatorManagerCallerRaw struct { + Contract *IValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IValidatorManagerTransactorRaw struct { + Contract *IValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIValidatorManager creates a new instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManager(address common.Address, backend bind.ContractBackend) (*IValidatorManager, error) { + contract, err := bindIValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IValidatorManager{IValidatorManagerCaller: IValidatorManagerCaller{contract: contract}, IValidatorManagerTransactor: IValidatorManagerTransactor{contract: contract}, IValidatorManagerFilterer: IValidatorManagerFilterer{contract: contract}}, nil +} + +// NewIValidatorManagerCaller creates a new read-only instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IValidatorManagerCaller, error) { + contract, err := bindIValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IValidatorManagerCaller{contract: contract}, nil +} + +// NewIValidatorManagerTransactor creates a new write-only instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IValidatorManagerTransactor, error) { + contract, err := bindIValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IValidatorManagerTransactor{contract: contract}, nil +} + +// NewIValidatorManagerFilterer creates a new log filterer instance of IValidatorManager, bound to a specific deployed contract. +func NewIValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IValidatorManagerFilterer, error) { + contract, err := bindIValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IValidatorManagerFilterer{contract: contract}, nil +} + +// bindIValidatorManager binds a generic wrapper to an already deployed contract. +func bindIValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IValidatorManager *IValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IValidatorManager.Contract.IValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IValidatorManager *IValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IValidatorManager *IValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IValidatorManager *IValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IValidatorManager *IValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IValidatorManager *IValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { + return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_IValidatorManager *IValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) +} + +// IValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IValidatorManager contract. +type IValidatorManagerInitialValidatorCreatedIterator struct { + Event *IValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1761,62 +1923,61 @@ func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Error() error { +func (it *IValidatorManagerInitialValidatorCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Close() error { +func (it *IValidatorManagerInitialValidatorCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// IValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IValidatorManager contract. +type IValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoAValidatorManagerValidatorRemovalInitializedIterator, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IValidatorManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } - return &PoAValidatorManagerValidatorRemovalInitializedIterator{contract: _PoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + return &IValidatorManagerInitialValidatorCreatedIterator{contract: _IValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } @@ -1826,8 +1987,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalIn select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidatorRemovalInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + event := new(IValidatorManagerInitialValidatorCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return err } event.Raw = log @@ -1848,21 +2009,21 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalIn }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoAValidatorManagerValidatorRemovalInitialized, error) { - event := new(PoAValidatorManagerValidatorRemovalInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_IValidatorManager *IValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IValidatorManagerInitialValidatorCreated, error) { + event := new(IValidatorManagerInitialValidatorCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorWeightUpdateIterator struct { - Event *PoAValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log +// IValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodCreatedIterator struct { + Event *IValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1876,7 +2037,7 @@ type PoAValidatorManagerValidatorWeightUpdateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { +func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1885,7 +2046,7 @@ func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorWeightUpdate) + it.Event = new(IValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1900,7 +2061,7 @@ func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorWeightUpdate) + it.Event = new(IValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1916,62 +2077,71 @@ func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Error() error { +func (it *IValidatorManagerValidationPeriodCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Close() error { +func (it *IValidatorManagerValidationPeriodCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// IValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoAValidatorManagerValidatorWeightUpdateIterator, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IValidatorManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } - return &PoAValidatorManagerValidatorWeightUpdateIterator{contract: _PoAValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + return &IValidatorManagerValidationPeriodCreatedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } @@ -1981,8 +2151,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpd select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidatorWeightUpdate) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + event := new(IValidatorManagerValidationPeriodCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return err } event.Raw = log @@ -2003,14 +2173,5953 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpd }), nil } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoAValidatorManagerValidatorWeightUpdate, error) { - event := new(PoAValidatorManagerValidatorWeightUpdate) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IValidatorManagerValidationPeriodCreated, error) { + event := new(IValidatorManagerValidationPeriodCreated) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodEndedIterator struct { + Event *IValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodEndedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodEnded) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IValidatorManagerValidationPeriodEnded, error) { + event := new(IValidatorManagerValidationPeriodEnded) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } + +// IValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodRegisteredIterator struct { + Event *IValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IValidatorManager contract. +type IValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidationPeriodRegisteredIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidationPeriodRegistered) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IValidatorManagerValidationPeriodRegistered, error) { + event := new(IValidatorManagerValidationPeriodRegistered) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IValidatorManager contract. +type IValidatorManagerValidatorRemovalInitializedIterator struct { + Event *IValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IValidatorManager contract. +type IValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidatorRemovalInitializedIterator{contract: _IValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidatorRemovalInitialized) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IValidatorManagerValidatorRemovalInitialized, error) { + event := new(IValidatorManagerValidatorRemovalInitialized) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IValidatorManager contract. +type IValidatorManagerValidatorWeightUpdateIterator struct { + Event *IValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IValidatorManager contract. +type IValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &IValidatorManagerValidatorWeightUpdateIterator{contract: _IValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IValidatorManagerValidatorWeightUpdate) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IValidatorManagerValidatorWeightUpdate, error) { + event := new(IValidatorManagerValidatorWeightUpdate) + if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. +var IWarpMessengerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWarpMessengerABI is the input ABI used to generate the binding from. +// Deprecated: Use IWarpMessengerMetaData.ABI instead. +var IWarpMessengerABI = IWarpMessengerMetaData.ABI + +// IWarpMessenger is an auto generated Go binding around an Ethereum contract. +type IWarpMessenger struct { + IWarpMessengerCaller // Read-only binding to the contract + IWarpMessengerTransactor // Write-only binding to the contract + IWarpMessengerFilterer // Log filterer for contract events +} + +// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWarpMessengerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWarpMessengerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWarpMessengerSession struct { + Contract *IWarpMessenger // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWarpMessengerCallerSession struct { + Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWarpMessengerTransactorSession struct { + Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWarpMessengerRaw struct { + Contract *IWarpMessenger // Generic contract binding to access the raw methods on +} + +// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWarpMessengerCallerRaw struct { + Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on +} + +// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWarpMessengerTransactorRaw struct { + Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { + contract, err := bindIWarpMessenger(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil +} + +// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { + contract, err := bindIWarpMessenger(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerCaller{contract: contract}, nil +} + +// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { + contract, err := bindIWarpMessenger(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWarpMessengerTransactor{contract: contract}, nil +} + +// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. +func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { + contract, err := bindIWarpMessenger(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWarpMessengerFilterer{contract: contract}, nil +} + +// bindIWarpMessenger binds a generic wrapper to an already deployed contract. +func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWarpMessengerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. +// +// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { + return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) + + outstruct := new(struct { + WarpBlockHash WarpBlockHash + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. +// +// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { + WarpBlockHash WarpBlockHash + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + var out []interface{} + err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) + + outstruct := new(struct { + Message WarpMessage + Valid bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) + outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) + + return *outstruct, err + +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. +// +// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) +func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { + Message WarpMessage + Valid bool +}, error) { + return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. +// +// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) +func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { + return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) +} + +// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessageIterator struct { + Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWarpMessengerSendWarpMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWarpMessengerSendWarpMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWarpMessengerSendWarpMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. +type IWarpMessengerSendWarpMessage struct { + Sender common.Address + MessageID [32]byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil +} + +// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var messageIDRule []interface{} + for _, messageIDItem := range messageID { + messageIDRule = append(messageIDRule, messageIDItem) + } + + logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. +// +// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) +func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { + event := new(IWarpMessengerSendWarpMessage) + if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// InitializableMetaData contains all meta data concerning the Initializable contract. +var InitializableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", +} + +// InitializableABI is the input ABI used to generate the binding from. +// Deprecated: Use InitializableMetaData.ABI instead. +var InitializableABI = InitializableMetaData.ABI + +// Initializable is an auto generated Go binding around an Ethereum contract. +type Initializable struct { + InitializableCaller // Read-only binding to the contract + InitializableTransactor // Write-only binding to the contract + InitializableFilterer // Log filterer for contract events +} + +// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. +type InitializableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type InitializableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type InitializableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type InitializableSession struct { + Contract *Initializable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type InitializableCallerSession struct { + Contract *InitializableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type InitializableTransactorSession struct { + Contract *InitializableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. +type InitializableRaw struct { + Contract *Initializable // Generic contract binding to access the raw methods on +} + +// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type InitializableCallerRaw struct { + Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on +} + +// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type InitializableTransactorRaw struct { + Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. +func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { + contract, err := bindInitializable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil +} + +// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { + contract, err := bindInitializable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &InitializableCaller{contract: contract}, nil +} + +// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { + contract, err := bindInitializable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &InitializableTransactor{contract: contract}, nil +} + +// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. +func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { + contract, err := bindInitializable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &InitializableFilterer{contract: contract}, nil +} + +// bindInitializable binds a generic wrapper to an already deployed contract. +func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := InitializableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transact(opts, method, params...) +} + +// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. +type InitializableInitializedIterator struct { + Event *InitializableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *InitializableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *InitializableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *InitializableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// InitializableInitialized represents a Initialized event raised by the Initializable contract. +type InitializableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { + + logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { + + logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OwnableUpgradeableMetaData contains all meta data concerning the OwnableUpgradeable contract. +var OwnableUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// OwnableUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableUpgradeableMetaData.ABI instead. +var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI + +// OwnableUpgradeable is an auto generated Go binding around an Ethereum contract. +type OwnableUpgradeable struct { + OwnableUpgradeableCaller // Read-only binding to the contract + OwnableUpgradeableTransactor // Write-only binding to the contract + OwnableUpgradeableFilterer // Log filterer for contract events +} + +// OwnableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableUpgradeableSession struct { + Contract *OwnableUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableUpgradeableCallerSession struct { + Contract *OwnableUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableUpgradeableTransactorSession struct { + Contract *OwnableUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableUpgradeableRaw struct { + Contract *OwnableUpgradeable // Generic contract binding to access the raw methods on +} + +// OwnableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableUpgradeableCallerRaw struct { + Contract *OwnableUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableUpgradeableTransactorRaw struct { + Contract *OwnableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnableUpgradeable creates a new instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeable(address common.Address, backend bind.ContractBackend) (*OwnableUpgradeable, error) { + contract, err := bindOwnableUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &OwnableUpgradeable{OwnableUpgradeableCaller: OwnableUpgradeableCaller{contract: contract}, OwnableUpgradeableTransactor: OwnableUpgradeableTransactor{contract: contract}, OwnableUpgradeableFilterer: OwnableUpgradeableFilterer{contract: contract}}, nil +} + +// NewOwnableUpgradeableCaller creates a new read-only instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*OwnableUpgradeableCaller, error) { + contract, err := bindOwnableUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableUpgradeableCaller{contract: contract}, nil +} + +// NewOwnableUpgradeableTransactor creates a new write-only instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableUpgradeableTransactor, error) { + contract, err := bindOwnableUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableUpgradeableTransactor{contract: contract}, nil +} + +// NewOwnableUpgradeableFilterer creates a new log filterer instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableUpgradeableFilterer, error) { + contract, err := bindOwnableUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableUpgradeableFilterer{contract: contract}, nil +} + +// bindOwnableUpgradeable binds a generic wrapper to an already deployed contract. +func bindOwnableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OwnableUpgradeable.Contract.OwnableUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OwnableUpgradeable *OwnableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OwnableUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableSession) Owner() (common.Address, error) { + return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableCallerSession) Owner() (common.Address, error) { + return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) +} + +// OwnableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OwnableUpgradeable contract. +type OwnableUpgradeableInitializedIterator struct { + Event *OwnableUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableUpgradeableInitialized represents a Initialized event raised by the OwnableUpgradeable contract. +type OwnableUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { + + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &OwnableUpgradeableInitializedIterator{contract: _OwnableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableUpgradeableInitialized) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log types.Log) (*OwnableUpgradeableInitialized, error) { + event := new(OwnableUpgradeableInitialized) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OwnableUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OwnableUpgradeable contract. +type OwnableUpgradeableOwnershipTransferredIterator struct { + Event *OwnableUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the OwnableUpgradeable contract. +type OwnableUpgradeableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OwnableUpgradeableOwnershipTransferredIterator{contract: _OwnableUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableUpgradeableOwnershipTransferred) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableUpgradeableOwnershipTransferred, error) { + event := new(OwnableUpgradeableOwnershipTransferred) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. +var PoAValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516137cb3803806137cb83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61367e8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461287e565b610312565b005b6101496101593660046128ad565b6105a2565b61014961016c3660046128fb565b610ba8565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461287e565b610bb6565b6040516001600160401b03909116815260200161018a565b610149610bca565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461287e565b610bdd565b6101cd61025a36600461292a565b610bf2565b61014961026d3660046128fb565b610c0e565b6102216005600160991b0181565b6101cd5f8051602061360983398151915281565b6101496102a236600461287e565b610e03565b6101e3601481565b6101496102bd366004612983565b610f40565b6102d56102d036600461287e565b61104e565b60405161018a9190612a21565b6101a66202a30081565b6101496102fa366004612aa1565b61119d565b6101cd61030d366004612ac3565b6111da565b5f8181525f805160206136298339815191526020526040808220815160e0810190925280545f8051602061360983398151915293929190829060ff16600581111561035f5761035f6129bf565b6005811115610370576103706129bf565b815260200160018201805461038490612b2e565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612b2e565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610466576104666129bf565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b60405180910390fd5b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c7a565b6040518263ffffffff1660e01b815260040161055c9190612cb3565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612cc5565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206136098339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612cc5565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612aa1565b6001600160a01b0316146106d8576106b36060840160408501612aa1565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612cdc565b905090505f805b828163ffffffff1610156109ce575f6107096060880188612cdc565b8363ffffffff1681811061071f5761071f612d21565b90506020028101906107319190612d35565b61073a90612da0565b80516040519192505f91600888019161075291612e19565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612cb3565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612e19565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612cc5565b90508086600801835f01516040516108219190612e19565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156108a3576108a36129bf565b0217905550602082015160018201906108bc9082612e7a565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610961911685612f4d565b825160405191955061097291612e19565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109c790612f60565b90506106ed565b506004830181905560018301546064906109f290600160401b900460ff1683612f82565b1015610a1457604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610a3887611235565b604001516040518263ffffffff1660e01b8152600401610a589190612cb3565b602060405180830381865af4158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190612cc5565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ad191906130bc565b5f60405180830381865af4158015610aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b129190810190612c7a565b90505f600282604051610b259190612e19565b602060405180830381855afa158015610b40573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b639190612cc5565b9050828114610b8f57604051631872fc8d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610bb18161134b565b505050565b5f610bc08261104e565b6080015192915050565b610bd26116fe565b610bdb5f611759565b565b610be56116fe565b610bee816117c9565b5050565b5f610bfb6116fe565b610c058383611aad565b90505b92915050565b5f805160206136098339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb5610c4186611235565b604001516040518263ffffffff1660e01b8152600401610c619190612cb3565b6040805180830381865af4158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f919061315f565b9150915080610cc557604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610cdf90612b2e565b90505f03610d035760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610d2957610d296129bf565b14610d5c575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b5f8281526006840160205260408120610d74916127f2565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206136098339815191529190610e4a90612b2e565b90505f03610e6e5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e9457610e946129bf565b14610ec7575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f009190600401613180565b6020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190612cc5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f845750825b90505f826001600160401b03166001148015610f9f5750303b155b905081158015610fad575080155b15610fcb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ff557845460ff60401b1916600160401b1785555b610fff8787612095565b831561104557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611056612829565b5f8281525f80516020613629833981519152602052604090819020815160e0810190925280545f80516020613609833981519152929190829060ff1660058111156110a3576110a36129bf565b60058111156110b4576110b46129bf565b81526020016001820180546110c890612b2e565b80601f01602080910402602001604051908101604052809291908181526020018280546110f490612b2e565b801561113f5780601f106111165761010080835404028352916020019161113f565b820191905f5260205f20905b81548152906001019060200180831161112257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6111a56116fe565b6001600160a01b0381166111ce57604051631e4fbdf760e01b81525f6004820152602401610499565b6111d781611759565b50565b6040515f905f80516020613609833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061121d908690869061320a565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112c09190810190613219565b91509150806112e257604051636b2f19e960e01b815260040160405180910390fd5b815115611308578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b031615611344576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f611354612829565b5f805160206136098339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561138788611235565b604001516040518263ffffffff1660e01b81526004016113a79190612cb3565b6040805180830381865af41580156113c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e5919061315f565b91509150801561140c57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561143d5761143d6129bf565b600581111561144e5761144e6129bf565b815260200160018201805461146290612b2e565b80601f016020809104026020016040519081016040528092919081815260200182805461148e90612b2e565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115611544576115446129bf565b141580156115655750600181516005811115611562576115626129bf565b14155b1561158657805160405163170cc93360e21b81526104999190600401612b66565b60038151600581111561159b5761159b6129bf565b036115a957600481526115ae565b600581525b8360080181602001516040516115c49190612e19565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115611608576116086129bf565b0217905550602082015160018201906116219082612e7a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116c7576116c76129bf565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bdb5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117d1612829565b5f8281525f805160206136298339815191526020526040808220815160e0810190925280545f8051602061360983398151915293929190829060ff16600581111561181e5761181e6129bf565b600581111561182f5761182f6129bf565b815260200160018201805461184390612b2e565b80601f016020809104026020016040519081016040528092919081815260200182805461186f90612b2e565b80156118ba5780601f10611891576101008083540402835291602001916118ba565b820191905f5260205f20905b81548152906001019060200180831161189d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611928576119286129bf565b1461195b575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561199f5761199f6129bf565b0217905550602082015160018201906119b89082612e7a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a5685826120af565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611af157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061360983398151915242611b1060608601604087016132a6565b6001600160401b0316111580611b4a5750611b2e6202a30042612f4d565b611b3e60608601604087016132a6565b6001600160401b031610155b15611b8457611b5f60608501604086016132a6565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b99611b9460608601866132bf565b612286565b611ba9611b9460808601866132bf565b6030611bb860208601866132d3565b905014611bea57611bcc60208501856132d3565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bf484806132d3565b90505f03611c2157611c0684806132d3565b604051633e08a12560e11b8152600401610499929190613315565b5f60088201611c3086806132d3565b604051611c3e92919061320a565b90815260200160405180910390205414611c7757611c5c84806132d3565b60405163a41f772f60e01b8152600401610499929190613315565b611c81835f6123ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101611cbe8a806132d3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d06908b018b6132d3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d4f60608b0160408c016132a6565b6001600160401b03168152602001611d6a60608b018b6132bf565b611d7390613328565b8152602001611d8560808b018b6132bf565b611d8e90613328565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dbc9190613455565b5f60405180830381865af4158015611dd6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dfd919081019061350c565b5f82815260068601602052604090209193509150611e1b8282612e7a565b508160088401611e2b88806132d3565b604051611e3992919061320a565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e75908590600401612cb3565b6020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190612cc5565b6040805160e081019091529091508060018152602001611ed589806132d3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611f6457611f646129bf565b021790555060208201516001820190611f7d9082612e7a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558061201b88806132d3565b60405161202992919061320a565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061206791906132a6565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61209d612612565b6120a68261265b565b610bee81612674565b5f8281525f80516020613629833981519152602052604081206002015481905f8051602061360983398151915290600160801b90046001600160401b03166120f785826123ef565b5f61210187612685565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156121aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d19190810190612c7a565b6040518263ffffffff1660e01b81526004016121ed9190612cb3565b6020604051808303815f875af1158015612209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222d9190612cc5565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61229360208201826128fb565b63ffffffff161580156122b357506122ae6020820182612cdc565b151590505b156122fa576122c560208201826128fb565b6122d26020830183612cdc565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6123076020820182612cdc565b905061231660208301836128fb565b63ffffffff16111561232f576122c560208201826128fb565b60015b61233f6020830183612cdc565b9050811015610bee576123556020830183612cdc565b61236060018461354f565b81811061236f5761236f612d21565b90506020020160208101906123849190612aa1565b6001600160a01b031661239a6020840184612cdc565b838181106123aa576123aa612d21565b90506020020160208101906123bf9190612aa1565b6001600160a01b031610156123e757604051630dbc8d5f60e31b815260040160405180910390fd5b600101612332565b5f805160206136098339815191525f6001600160401b0380841690851611156124235761241c8385613562565b9050612430565b61242d8484613562565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061249257506001840154815161248e916001600160401b031690612f4d565b8210155b156124b8576001600160401b0383166060820152818152604081015160208201526124d7565b82816060018181516124ca9190613582565b6001600160401b03169052505b60608101516124e79060646135a2565b602082015160018601546001600160401b0392909216916125129190600160401b900460ff16612f82565b101561254257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b03168160400181815161255d9190612f4d565b9052506040810180516001600160401b038716919061257d90839061354f565b905250600184015460408201516064916125a291600160401b90910460ff1690612f82565b10156125c9578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610bdb57604051631afcd79f60e31b815260040160405180910390fd5b612663612612565b61266b6126fa565b6111d781612702565b61267c612612565b6111d7816127ea565b5f8181525f805160206136298339815191526020526040812060020180545f8051602061360983398151915291906008906126cf90600160401b90046001600160401b03166135cd565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610bdb612612565b61270a612612565b80355f80516020613609833981519152908155601461272f60608401604085016135e8565b60ff16118061274e575061274960608301604084016135e8565b60ff16155b156127825761276360608301604084016135e8565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61279260608301604084016135e8565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556127c360408301602084016132a6565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111a5612612565b5080546127fe90612b2e565b5f825580601f1061280d575050565b601f0160209004905f5260205f20908101906111d79190612866565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561287a575f8155600101612867565b5090565b5f6020828403121561288e575f80fd5b5035919050565b803563ffffffff811681146128a8575f80fd5b919050565b5f80604083850312156128be575f80fd5b82356001600160401b038111156128d3575f80fd5b8301608081860312156128e4575f80fd5b91506128f260208401612895565b90509250929050565b5f6020828403121561290b575f80fd5b610c0582612895565b80356001600160401b03811681146128a8575f80fd5b5f806040838503121561293b575f80fd5b82356001600160401b03811115612950575f80fd5b830160a08186031215612961575f80fd5b91506128f260208401612914565b6001600160a01b03811681146111d7575f80fd5b5f808284036080811215612995575f80fd5b60608112156129a2575f80fd5b5082915060608301356129b48161296f565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106129ef57634e487b7160e01b5f52602160045260245ffd5b9052565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152612a336020820183516129d3565b5f602083015160e06040840152612a4e6101008401826129f3565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612ab1575f80fd5b8135612abc8161296f565b9392505050565b5f8060208385031215612ad4575f80fd5b82356001600160401b0380821115612aea575f80fd5b818501915085601f830112612afd575f80fd5b813581811115612b0b575f80fd5b866020828501011115612b1c575f80fd5b60209290920196919550909350505050565b600181811c90821680612b4257607f821691505b602082108103612b6057634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c0882846129d3565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612baa57612baa612b74565b60405290565b604080519081016001600160401b0381118282101715612baa57612baa612b74565b604051601f8201601f191681016001600160401b0381118282101715612bfa57612bfa612b74565b604052919050565b5f6001600160401b03821115612c1a57612c1a612b74565b50601f01601f191660200190565b5f82601f830112612c37575f80fd5b8151612c4a612c4582612c02565b612bd2565b818152846020838601011115612c5e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215612c8a575f80fd5b81516001600160401b03811115612c9f575f80fd5b612cab84828501612c28565b949350505050565b602081525f610c0560208301846129f3565b5f60208284031215612cd5575f80fd5b5051919050565b5f808335601e19843603018112612cf1575f80fd5b8301803591506001600160401b03821115612d0a575f80fd5b6020019150600581901b360382131561227f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d49575f80fd5b9190910192915050565b5f82601f830112612d62575f80fd5b8135612d70612c4582612c02565b818152846020838601011115612d84575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612db0575f80fd5b612db8612b88565b82356001600160401b0380821115612dce575f80fd5b612dda36838701612d53565b83526020850135915080821115612def575f80fd5b50612dfc36828601612d53565b602083015250612e0e60408401612914565b604082015292915050565b5f82518060208501845e5f920191825250919050565b601f821115610bb157805f5260205f20601f840160051c81016020851015612e545750805b601f840160051c820191505b81811015612e73575f8155600101612e60565b5050505050565b81516001600160401b03811115612e9357612e93612b74565b612ea781612ea18454612b2e565b84612e2f565b602080601f831160018114612eda575f8415612ec35750858301515b5f19600386901b1c1916600185901b178555612f31565b5f85815260208120601f198616915b82811015612f0857888601518255948401946001909101908401612ee9565b5085821015612f2557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0857610c08612f39565b5f63ffffffff808316818103612f7857612f78612f39565b6001019392505050565b8082028115828204841417610c0857610c08612f39565b5f808335601e19843603018112612fae575f80fd5b83016020810192503590506001600160401b03811115612fcc575f80fd5b80360382131561227f575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156130af57848303601f19018952813536889003605e1901811261303e575f80fd5b8701606061304c8280612f99565b82875261305c8388018284612fda565b9250505061306c86830183612f99565b8683038888015261307e838284612fda565b9250505060406001600160401b03613097828501612914565b16950194909452509783019790830190600101613019565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356130e08161296f565b6001600160a01b031660608381019190915283013536849003601e19018112613107575f80fd5b83016020810190356001600160401b03811115613122575f80fd5b8060051b3603821315613133575f80fd5b60808085015261314760a085018284613002565b95945050505050565b805180151581146128a8575f80fd5b5f8060408385031215613170575f80fd5b825191506128f260208401613150565b5f60208083525f845461319281612b2e565b806020870152604060018084165f81146131b357600181146131cf576131fc565b60ff19851660408a0152604084151560051b8a010195506131fc565b895f5260205f205f5b858110156131f35781548b82018601529083019088016131d8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f806040838503121561322a575f80fd5b82516001600160401b0380821115613240575f80fd5b9084019060608287031215613253575f80fd5b61325b612b88565b82518152602083015161326d8161296f565b6020820152604083015182811115613283575f80fd5b61328f88828601612c28565b60408301525093506128f291505060208401613150565b5f602082840312156132b6575f80fd5b610c0582612914565b5f8235603e19833603018112612d49575f80fd5b5f808335601e198436030181126132e8575f80fd5b8301803591506001600160401b03821115613301575f80fd5b60200191503681900382131561227f575f80fd5b602081525f612cab602083018486612fda565b5f60408236031215613338575f80fd5b613340612bb0565b61334983612895565b81526020808401356001600160401b0380821115613365575f80fd5b9085019036601f830112613377575f80fd5b81358181111561338957613389612b74565b8060051b915061339a848301612bd2565b81815291830184019184810190368411156133b3575f80fd5b938501935b838510156133dd57843592506133cd8361296f565b82825293850193908501906133b8565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561344a5784516001600160a01b03168252938301936001929092019190830190613421565b509695505050505050565b60208152815160208201525f602083015160e0604084015261347b6101008401826129f3565b90506040840151601f198085840301606086015261349983836129f3565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134c983836133ef565b925060a08601519150808584030160c0860152506134e782826133ef565b91505060c084015161350460e08501826001600160401b03169052565b509392505050565b5f806040838503121561351d575f80fd5b8251915060208301516001600160401b03811115613539575f80fd5b61354585828601612c28565b9150509250929050565b81810381811115610c0857610c08612f39565b6001600160401b0382811682821603908082111561134457611344612f39565b6001600160401b0381811683821601908082111561134457611344612f39565b6001600160401b038181168382160280821691908281146135c5576135c5612f39565b505092915050565b5f6001600160401b03808316818103612f7857612f78612f39565b5f602082840312156135f8575f80fd5b813560ff81168114612abc575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220f90bd50d71afec718957216078721668080cbd5385bd95622edb665e483dcba964736f6c63430008190033", +} + +// PoAValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use PoAValidatorManagerMetaData.ABI instead. +var PoAValidatorManagerABI = PoAValidatorManagerMetaData.ABI + +// PoAValidatorManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PoAValidatorManagerMetaData.Bin instead. +var PoAValidatorManagerBin = PoAValidatorManagerMetaData.Bin + +// DeployPoAValidatorManager deploys a new Ethereum contract, binding an instance of PoAValidatorManager to it. +func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *PoAValidatorManager, error) { + parsed, err := PoAValidatorManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) + PoAValidatorManagerBin = strings.ReplaceAll(PoAValidatorManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoAValidatorManagerBin), backend, init) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil +} + +// PoAValidatorManager is an auto generated Go binding around an Ethereum contract. +type PoAValidatorManager struct { + PoAValidatorManagerCaller // Read-only binding to the contract + PoAValidatorManagerTransactor // Write-only binding to the contract + PoAValidatorManagerFilterer // Log filterer for contract events +} + +// PoAValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type PoAValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoAValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PoAValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoAValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PoAValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PoAValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PoAValidatorManagerSession struct { + Contract *PoAValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PoAValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PoAValidatorManagerCallerSession struct { + Contract *PoAValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PoAValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PoAValidatorManagerTransactorSession struct { + Contract *PoAValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PoAValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type PoAValidatorManagerRaw struct { + Contract *PoAValidatorManager // Generic contract binding to access the raw methods on +} + +// PoAValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PoAValidatorManagerCallerRaw struct { + Contract *PoAValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// PoAValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PoAValidatorManagerTransactorRaw struct { + Contract *PoAValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPoAValidatorManager creates a new instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManager(address common.Address, backend bind.ContractBackend) (*PoAValidatorManager, error) { + contract, err := bindPoAValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil +} + +// NewPoAValidatorManagerCaller creates a new read-only instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoAValidatorManagerCaller, error) { + contract, err := bindPoAValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PoAValidatorManagerCaller{contract: contract}, nil +} + +// NewPoAValidatorManagerTransactor creates a new write-only instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoAValidatorManagerTransactor, error) { + contract, err := bindPoAValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PoAValidatorManagerTransactor{contract: contract}, nil +} + +// NewPoAValidatorManagerFilterer creates a new log filterer instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoAValidatorManagerFilterer, error) { + contract, err := bindPoAValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PoAValidatorManagerFilterer{contract: contract}, nil +} + +// bindPoAValidatorManager binds a generic wrapper to an already deployed contract. +func bindPoAValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PoAValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PoAValidatorManager *PoAValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoAValidatorManager.Contract.PoAValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PoAValidatorManager *PoAValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PoAValidatorManager *PoAValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PoAValidatorManager *PoAValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoAValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoAValidatorManager *PoAValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerSession) Owner() (common.Address, error) { + return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) Owner() (common.Address, error) { + return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initialize", settings, initialOwner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) +} + +// PoAValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitialValidatorCreatedIterator struct { + Event *PoAValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoAValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &PoAValidatorManagerInitialValidatorCreatedIterator{contract: _PoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerInitialValidatorCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoAValidatorManagerInitialValidatorCreated, error) { + event := new(PoAValidatorManagerInitialValidatorCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitializedIterator struct { + Event *PoAValidatorManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerInitialized represents a Initialized event raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoAValidatorManagerInitializedIterator, error) { + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PoAValidatorManagerInitializedIterator{contract: _PoAValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoAValidatorManagerInitialized, error) { + event := new(PoAValidatorManagerInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoAValidatorManager contract. +type PoAValidatorManagerOwnershipTransferredIterator struct { + Event *PoAValidatorManagerOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerOwnershipTransferred represents a OwnershipTransferred event raised by the PoAValidatorManager contract. +type PoAValidatorManagerOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PoAValidatorManagerOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &PoAValidatorManagerOwnershipTransferredIterator{contract: _PoAValidatorManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerOwnershipTransferred) + if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseOwnershipTransferred(log types.Log) (*PoAValidatorManagerOwnershipTransferred, error) { + event := new(PoAValidatorManagerOwnershipTransferred) + if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodCreatedIterator struct { + Event *PoAValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoAValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &PoAValidatorManagerValidationPeriodCreatedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerValidationPeriodCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoAValidatorManagerValidationPeriodCreated, error) { + event := new(PoAValidatorManagerValidationPeriodCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodEndedIterator struct { + Event *PoAValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoAValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &PoAValidatorManagerValidationPeriodEndedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerValidationPeriodEnded) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoAValidatorManagerValidationPeriodEnded, error) { + event := new(PoAValidatorManagerValidationPeriodEnded) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodRegisteredIterator struct { + Event *PoAValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoAValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &PoAValidatorManagerValidationPeriodRegisteredIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerValidationPeriodRegistered) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoAValidatorManagerValidationPeriodRegistered, error) { + event := new(PoAValidatorManagerValidationPeriodRegistered) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorRemovalInitializedIterator struct { + Event *PoAValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoAValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &PoAValidatorManagerValidatorRemovalInitializedIterator{contract: _PoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerValidatorRemovalInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoAValidatorManagerValidatorRemovalInitialized, error) { + event := new(PoAValidatorManagerValidatorRemovalInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PoAValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorWeightUpdateIterator struct { + Event *PoAValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PoAValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PoAValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoAValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &PoAValidatorManagerValidatorWeightUpdateIterator{contract: _PoAValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PoAValidatorManagerValidatorWeightUpdate) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoAValidatorManagerValidatorWeightUpdate, error) { + event := new(PoAValidatorManagerValidatorWeightUpdate) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. +var ValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorManagerMetaData.ABI instead. +var ValidatorManagerABI = ValidatorManagerMetaData.ABI + +// ValidatorManager is an auto generated Go binding around an Ethereum contract. +type ValidatorManager struct { + ValidatorManagerCaller // Read-only binding to the contract + ValidatorManagerTransactor // Write-only binding to the contract + ValidatorManagerFilterer // Log filterer for contract events +} + +// ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorManagerSession struct { + Contract *ValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorManagerCallerSession struct { + Contract *ValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorManagerTransactorSession struct { + Contract *ValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorManagerRaw struct { + Contract *ValidatorManager // Generic contract binding to access the raw methods on +} + +// ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorManagerCallerRaw struct { + Contract *ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactorRaw struct { + Contract *ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorManager creates a new instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManager(address common.Address, backend bind.ContractBackend) (*ValidatorManager, error) { + contract, err := bindValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil +} + +// NewValidatorManagerCaller creates a new read-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ValidatorManagerCaller, error) { + contract, err := bindValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorManagerCaller{contract: contract}, nil +} + +// NewValidatorManagerTransactor creates a new write-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorManagerTransactor, error) { + contract, err := bindValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorManagerTransactor{contract: contract}, nil +} + +// NewValidatorManagerFilterer creates a new log filterer instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorManagerFilterer, error) { + contract, err := bindValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorManagerFilterer{contract: contract}, nil +} + +// bindValidatorManager binds a generic wrapper to an already deployed contract. +func bindValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorManager *ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.Contract.ValidatorManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorManager *ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorManager *ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorManager *ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreatedIterator struct { + Event *ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerInitialValidatorCreatedIterator{contract: _ValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ValidatorManagerInitialValidatorCreated, error) { + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ValidatorManager contract. +type ValidatorManagerInitializedIterator struct { + Event *ValidatorManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerInitialized represents a Initialized event raised by the ValidatorManager contract. +type ValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatorManagerInitializedIterator, error) { + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ValidatorManagerInitializedIterator{contract: _ValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ValidatorManagerInitialized, error) { + event := new(ValidatorManagerInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreatedIterator struct { + Event *ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidationPeriodCreatedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ValidatorManagerValidationPeriodCreated, error) { + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEndedIterator struct { + Event *ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidationPeriodEndedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ValidatorManagerValidationPeriodEnded, error) { + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegisteredIterator struct { + Event *ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidationPeriodRegisteredIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ValidatorManagerValidationPeriodRegistered, error) { + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitializedIterator struct { + Event *ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidatorRemovalInitializedIterator{contract: _ValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ValidatorManagerValidatorRemovalInitialized, error) { + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdateIterator struct { + Event *ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidatorWeightUpdateIterator{contract: _ValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ValidatorManagerValidatorWeightUpdate, error) { + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. +var ValidatorMessagesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x6120f3610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e19190611982565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119b6565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e53660046119ef565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611a8b565b610255610250366004611c26565b61154a565b6040516100e1929190611d22565b610145610271366004611d3a565b611737565b610145610284366004611d64565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611daa565b6102e6906008611dbd565b61ffff168582815181106102fc576102fc611dd4565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611daa565b61035f906008611dbd565b63ffffffff1686610371836002611de8565b8151811061038157610381611dd4565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611daa565b6103e0906008611dbd565b876103ec836006611de8565b815181106103fc576103fc611dd4565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611daa565b610436906008611dbd565b6001600160401b03168861044b836026611de8565b8151811061045b5761045b611dd4565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611daa565b6104d6906008611dbd565b61ffff168482815181106104ec576104ec611dd4565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611daa565b61054f906008611dbd565b63ffffffff1685610561836002611de8565b8151811061057157610571611dd4565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611daa565b6105d0906008611dbd565b866105dc836006611de8565b815181106105ec576105ec611dd4565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611daa565b610664906008611dbd565b61ffff1685828151811061067a5761067a611dd4565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611daa565b6106dd906008611dbd565b63ffffffff16866106ef836002611de8565b815181106106ff576106ff611dd4565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611daa565b610760906008611dbd565b8761076c836006611de8565b8151811061077c5761077c611dd4565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611dd4565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611dfb565b6107f16060890189611e14565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e14565b90508110156109a2578161088e6060860186611e14565b8381811061089e5761089e611dd4565b90506020028101906108b09190611e60565b6108ba9080611e7e565b90506108c96060870187611e14565b848181106108d9576108d9611dd4565b90506020028101906108eb9190611e60565b6108f59080611e7e565b6109026060890189611e14565b8681811061091257610912611dd4565b90506020028101906109249190611e60565b610932906020810190611e7e565b61093f60608b018b611e14565b8881811061094f5761094f611dd4565b90506020028101906109619190611e60565b610972906060810190604001611ec0565b6040516020016109889796959493929190611ef0565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611daa565b610a02906008611dbd565b61ffff16868281518110610a1857610a18611dd4565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611daa565b610a7b906008611dbd565b63ffffffff1687610a8d836002611de8565b81518110610a9d57610a9d611dd4565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611daa565b610afe906008611dbd565b88610b0a836006611de8565b81518110610b1a57610b1a611dd4565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611daa565b610b54906008611dbd565b6001600160401b031689610b69836026611de8565b81518110610b7957610b79611dd4565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611daa565b610bb3906008611dbd565b6001600160401b03168a610bc883602e611de8565b81518110610bd857610bd8611dd4565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611daa565b610c32906008611dbd565b61ffff1686610c4763ffffffff871684611de8565b81518110610c5757610c57611dd4565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f4f565b9250505f805b6004811015610d0857610cbd816003611daa565b610cc8906008611dbd565b63ffffffff16868563ffffffff1683610ce19190611de8565b81518110610cf157610cf1611dd4565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f4f565b9250505f805b6020811015610d9857610d5581601f611daa565b610d60906008611dbd565b86610d7163ffffffff871684611de8565b81518110610d8157610d81611dd4565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f4f565b9250505f805b6004811015610e0c57610dc1816003611daa565b610dcc906008611dbd565b63ffffffff16868563ffffffff1683610de59190611de8565b81518110610df557610df5611dd4565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f4f565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611de8565b81518110610e9757610e97611dd4565b602001015160f81c60f81b828281518110610eb457610eb4611dd4565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f4f565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611de8565b81518110610f3557610f35611dd4565b602001015160f81c60f81b828281518110610f5257610f52611dd4565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f4f565b9350505f805b6008811015610fe957610f9d816007611daa565b610fa8906008611dbd565b6001600160401b031687610fc263ffffffff881684611de8565b81518110610fd257610fd2611dd4565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f4f565b9350505f805f5b600481101561106a5761101f816003611daa565b61102a906008611dbd565b63ffffffff16888763ffffffff16836110439190611de8565b8151811061105357611053611dd4565b016020015160f81c901b919091179060010161100b565b50611076600486611f4f565b94505f5b60048110156110d95761108e816003611daa565b611099906008611dbd565b63ffffffff16888763ffffffff16836110b29190611de8565b815181106110c2576110c2611dd4565b016020015160f81c901b929092179160010161107a565b506110e5600486611f4f565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611de8565b8151811061118e5761118e611dd4565b602001015160f81c60f81b8282815181106111ab576111ab611dd4565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611dd4565b6001600160a01b039092166020928302919091019091015261120860148a611f4f565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611daa565b611259906008611dbd565b63ffffffff16898863ffffffff16836112729190611de8565b8151811061128257611282611dd4565b016020015160f81c901b919091179060010161123a565b506112a5600487611f4f565b95505f5b6004811015611308576112bd816003611daa565b6112c8906008611dbd565b63ffffffff16898863ffffffff16836112e19190611de8565b815181106112f1576112f1611dd4565b016020015160f81c901b92909217916001016112a9565b50611314600487611f4f565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611de8565b815181106113bd576113bd611dd4565b602001015160f81c60f81b8282815181106113da576113da611dd4565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611dd4565b6001600160a01b039092166020928302919091019091015261143760148b611f4f565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f4f565b61147b906014611f6c565b61148685607a611f4f565b6114909190611f4f565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611daa565b6114ee906008611dbd565b6001600160401b03168a61150863ffffffff8b1684611de8565b8151811061151857611518611dd4565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611f94565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611dd4565b602002602001015160405160200161160c929190612015565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612041565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611dd4565b602002602001015160405160200161169e929190612015565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf918391602001612074565b60405160208183030381529060405290506002816040516116f0919061209b565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e91906120a6565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6119946020830184611954565b9392505050565b80356001600160401b03811681146119b1575f80fd5b919050565b5f805f606084860312156119c8575f80fd5b833592506119d86020850161199b565b91506119e66040850161199b565b90509250925092565b5f602082840312156119ff575f80fd5b81356001600160401b03811115611a14575f80fd5b820160808185031215611994575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a805784516001600160a01b03168252938301936001929092019190830190611a57565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ab1610100840182611954565b90506040840151601f1980858403016060860152611acf8383611954565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611aff8383611a25565b925060a08601519150808584030160c086015250611b1d8282611a25565b91505060c0840151611b3a60e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119b1575f80fd5b5f60408284031215611b68575f80fd5b611b7061181f565b9050813563ffffffff81168114611b85575f80fd5b81526020828101356001600160401b0380821115611ba1575f80fd5b818501915085601f830112611bb4575f80fd5b813581811115611bc657611bc661180b565b8060051b9150611bd7848301611869565b8181529183018401918481019088841115611bf0575f80fd5b938501935b83851015611c1557611c0685611b42565b82529385019390850190611bf5565b808688015250505050505092915050565b5f60208284031215611c36575f80fd5b81356001600160401b0380821115611c4c575f80fd5b9083019060e08286031215611c5f575f80fd5b611c67611847565b82358152602083013582811115611c7c575f80fd5b611c8887828601611899565b602083015250604083013582811115611c9f575f80fd5b611cab87828601611899565b604083015250611cbd6060840161199b565b6060820152608083013582811115611cd3575f80fd5b611cdf87828601611b58565b60808301525060a083013582811115611cf6575f80fd5b611d0287828601611b58565b60a083015250611d1460c0840161199b565b60c082015295945050505050565b828152604060208201525f6119356040830184611954565b5f8060408385031215611d4b575f80fd5b82359150611d5b6020840161199b565b90509250929050565b5f8060408385031215611d75575f80fd5b8235915060208301358015158114611d8b575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611d96565b808202811582820484141761177b5761177b611d96565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611d96565b5f60208284031215611e0b575f80fd5b61199482611b42565b5f808335601e19843603018112611e29575f80fd5b8301803591506001600160401b03821115611e42575f80fd5b6020019150600581901b3603821315611e59575f80fd5b9250929050565b5f8235605e19833603018112611e74575f80fd5b9190910192915050565b5f808335601e19843603018112611e93575f80fd5b8301803591506001600160401b03821115611eac575f80fd5b602001915036819003821315611e59575f80fd5b5f60208284031215611ed0575f80fd5b6119948261199b565b5f81518060208401855e5f93019283525090919050565b5f611efb828a611ed9565b60e089901b6001600160e01b0319168152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611d96565b63ffffffff818116838216028082169190828114611f8c57611f8c611d96565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152611fdc611fd6602a85018a611ed9565b88611ed9565b60c09690961b6001600160c01b031916865260e094851b811660088701529290931b909116600c84015250506010019695505050505050565b5f6120208285611ed9565b60609390931b6bffffffffffffffffffffffff191683525050601401919050565b5f61204c8286611ed9565b6001600160e01b031960e095861b811682529390941b90921660048401525050600801919050565b5f61207f8285611ed9565b60c09390931b6001600160c01b03191683525050600801919050565b5f6119948284611ed9565b5f602082840312156120b6575f80fd5b505191905056fea26469706673582212207d656061d8f95ab589d4afa49d2d1306b172ed85e5bb91ff860b1398145156c164736f6c63430008190033", +} + +// ValidatorMessagesABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorMessagesMetaData.ABI instead. +var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI + +// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorMessagesMetaData.Bin instead. +var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin + +// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. +func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// ValidatorMessages is an auto generated Go binding around an Ethereum contract. +type ValidatorMessages struct { + ValidatorMessagesCaller // Read-only binding to the contract + ValidatorMessagesTransactor // Write-only binding to the contract + ValidatorMessagesFilterer // Log filterer for contract events +} + +// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorMessagesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorMessagesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorMessagesSession struct { + Contract *ValidatorMessages // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorMessagesCallerSession struct { + Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorMessagesTransactorSession struct { + Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorMessagesRaw struct { + Contract *ValidatorMessages // Generic contract binding to access the raw methods on +} + +// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorMessagesCallerRaw struct { + Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactorRaw struct { + Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { + contract, err := bindValidatorMessages(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { + contract, err := bindValidatorMessages(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesCaller{contract: contract}, nil +} + +// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { + contract, err := bindValidatorMessages(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesTransactor{contract: contract}, nil +} + +// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { + contract, err := bindValidatorMessages(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorMessagesFilterer{contract: contract}, nil +} + +// bindValidatorMessages binds a generic wrapper to an already deployed contract. +func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) + + if err != nil { + return *new([32]byte), *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) + + return out0, out1, err + +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) + + if err != nil { + return *new(ValidatorMessagesValidationPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) + + return out0, err + +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) + + if err != nil { + return *new([32]byte), *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(bool)).(*bool) + + return out0, out1, err + +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return out0, out1, out2, err + +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return out0, out1, err + +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} diff --git a/remappings.txt b/remappings.txt index b3acc7187..b94e774eb 100644 --- a/remappings.txt +++ b/remappings.txt @@ -2,6 +2,6 @@ @openzeppelin/contracts@5.0.2=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts @openzeppelin/contracts-upgradeable@5.0.2=lib/openzeppelin-contracts-upgradeable/contracts @forge-std=lib/forge-std/src -@teleporter/=contracts/teleporter +@teleporter/=contracts/teleporter/ @mocks/=contracts/mocks @utilities/=contracts/utilities/ diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 10713f2b2..d491f1f42 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -47,15 +47,13 @@ if ! command -v forge &> /dev/null; then echo "forge not found. You can install by calling $TELEPORTER_PATH/scripts/install_foundry.sh" && exit 1 fi +if ! command -v solc &> /dev/null; then + echo "solc not found. See https://docs.soliditylang.org/en/latest/installing-solidity.html for installation instructions" && exit 1 +fi + echo "Building subnet-evm abigen" go install github.com/ava-labs/subnet-evm/cmd/abigen@${SUBNET_EVM_VERSION} -# Force recompile of all contracts to prevent against using previous -# compilations that did not generate new ABI files. -echo "Building Contracts" -cd $TELEPORTER_PATH -forge build --skip test --optimizer-runs 100 --force --extra-output-files abi bin - function convertToLower() { if [ "$ARCH" = 'arm64' ]; then echo $1 | perl -ne 'print lc' @@ -70,18 +68,22 @@ function generate_bindings() { do path=$(find . -name $contract_name.sol) dir=$(dirname $path) - abi_file=$TELEPORTER_PATH/out/$contract_name.sol/$contract_name.abi.json - if ! [ -f $abi_file ]; then - echo "Error: Contract $contract_name abi file not found" - exit 1 - fi + dir="${dir#./}" + + echo "Building $contract_name..." + mkdir -p $TELEPORTER_PATH/out/$contract_name.sol + + cwd=$(pwd) + cd $TELEPORTER_PATH + solc --optimize --optimize-runs 200 --combined-json abi,bin,metadata,ast,devdoc,userdoc $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json + cd $cwd echo "Generating Go bindings for $contract_name..." gen_path=$TELEPORTER_PATH/abi-bindings/go/$dir/$contract_name mkdir -p $gen_path - $GOPATH/bin/abigen --abi $abi_file \ - --pkg $(convertToLower $contract_name) \ - --bin $TELEPORTER_PATH/out/$contract_name.sol/$contract_name.bin \ + + $GOPATH/bin/abigen --pkg $(convertToLower $contract_name) \ + --combined-json $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json \ --type $contract_name \ --out $gen_path/$contract_name.go echo "Done generating Go bindings for $contract_name." @@ -99,16 +101,10 @@ cd $TELEPORTER_PATH/contracts generate_bindings "${contract_names[@]}" contract_names=($PROXY_LIST) -cd $TELEPORTER_PATH/ -forge build --skip test --force --extra-output-files abi bin --contracts lib/openzeppelin-contracts/contracts/proxy/transparent - -cd $TELEPORTER_PATH/lib/openzeppelin-contracts/contracts/proxy/transparent +cd $TELEPORTER_PATH/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/transparent generate_bindings "${contract_names[@]}" contract_names=($SUBNET_EVM_LIST) -cd $TELEPORTER_PATH/ -forge build --skip test --force --extra-output-files abi bin --contracts lib/subnet-evm/contracts/contracts/interfaces - cd $TELEPORTER_PATH/lib/subnet-evm/contracts/contracts/interfaces generate_bindings "${contract_names[@]}" diff --git a/tests/utils/chain.go b/tests/utils/chain.go index 2d872fdc2..ecc79234a 100644 --- a/tests/utils/chain.go +++ b/tests/utils/chain.go @@ -227,9 +227,10 @@ func waitForTransaction( Expect(err).Should(BeNil()) if success { - if receipt.Status == types.ReceiptStatusFailed { - TraceTransactionAndExit(ctx, subnetInfo.RPCClient, receipt.TxHash) - } + TraceTransaction(ctx, subnetInfo.RPCClient, receipt.TxHash) + // if receipt.Status == types.ReceiptStatusFailed { + // TraceTransactionAndExit(ctx, subnetInfo.RPCClient, receipt.TxHash) + // } } else { Expect(receipt.Status).Should(Equal(types.ReceiptStatusFailed)) } diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index b3626bc14..70fd97517 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -1176,7 +1176,7 @@ func CompleteERC20DelegatorRegistration( ) *types.Receipt { abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) - callData, err := abi.Pack("completeDelegatorRegistration", uint32(0), delegationID) + callData, err := abi.Pack("completeDelegatorRegistration", delegationID, uint32(0)) Expect(err).Should(BeNil()) return CallWarpReceiver( ctx, @@ -1218,7 +1218,7 @@ func CompleteEndERC20Delegation( ) *types.Receipt { abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) - callData, err := abi.Pack("completeEndDelegation", uint32(0), delegationID) + callData, err := abi.Pack("completeEndDelegation", delegationID, uint32(0)) Expect(err).Should(BeNil()) return CallWarpReceiver( ctx, @@ -1267,7 +1267,7 @@ func CompleteNativeDelegatorRegistration( ) *types.Receipt { abi, err := nativetokenstakingmanager.NativeTokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) - callData, err := abi.Pack("completeDelegatorRegistration", uint32(0), delegationID) + callData, err := abi.Pack("completeDelegatorRegistration", delegationID, uint32(0)) Expect(err).Should(BeNil()) return CallWarpReceiver( ctx, @@ -1309,7 +1309,7 @@ func CompleteEndNativeDelegation( ) *types.Receipt { abi, err := nativetokenstakingmanager.NativeTokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) - callData, err := abi.Pack("completeEndDelegation", uint32(0), delegationID) + callData, err := abi.Pack("completeEndDelegation", delegationID, uint32(0)) Expect(err).Should(BeNil()) return CallWarpReceiver( ctx, From 321a0ead49900ddf32d9502b6d47e52db9e9e0c1 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 18 Oct 2024 14:09:20 -0500 Subject: [PATCH 07/43] install solc in bindings job --- .github/workflows/abi_bindings_checker.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/abi_bindings_checker.yml b/.github/workflows/abi_bindings_checker.yml index e35e7ccc6..d59b9b7bd 100644 --- a/.github/workflows/abi_bindings_checker.yml +++ b/.github/workflows/abi_bindings_checker.yml @@ -27,6 +27,12 @@ jobs: - name: Install Foundry run: ./scripts/install_foundry.sh + - name: Install solc + run: | + wget https://github.com/ethereum/solidity/releases/download/v0.8.25/solc-static-linux + chmod +x solc-static-linux + sudo mv solc-static-linux /usr/local/bin/solc + - name: Generate ABI Go bindings run: | export PATH=$PATH:$HOME/.foundry/bin From c8a868caa76bdac554f92446ddd6f15ac1cf7ebe Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 18 Oct 2024 14:18:17 -0500 Subject: [PATCH 08/43] revert dbg change --- tests/utils/chain.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/utils/chain.go b/tests/utils/chain.go index ecc79234a..2d872fdc2 100644 --- a/tests/utils/chain.go +++ b/tests/utils/chain.go @@ -227,10 +227,9 @@ func waitForTransaction( Expect(err).Should(BeNil()) if success { - TraceTransaction(ctx, subnetInfo.RPCClient, receipt.TxHash) - // if receipt.Status == types.ReceiptStatusFailed { - // TraceTransactionAndExit(ctx, subnetInfo.RPCClient, receipt.TxHash) - // } + if receipt.Status == types.ReceiptStatusFailed { + TraceTransactionAndExit(ctx, subnetInfo.RPCClient, receipt.TxHash) + } } else { Expect(receipt.Status).Should(Equal(types.ReceiptStatusFailed)) } From cc79fe235f408411a13141408001ff6ad938e313 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 18 Oct 2024 16:05:22 -0500 Subject: [PATCH 09/43] remove unused vars & teleporter refs --- tests/local/governance/governance_suite_test.go | 14 ++++---------- tests/local/teleporter/teleporter_suite_test.go | 2 -- .../validator_manager_suite_test.go | 14 ++++---------- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/tests/local/governance/governance_suite_test.go b/tests/local/governance/governance_suite_test.go index 731b61330..b7fd6beea 100644 --- a/tests/local/governance/governance_suite_test.go +++ b/tests/local/governance/governance_suite_test.go @@ -14,14 +14,8 @@ import ( ) const ( - teleporterByteCodeFile = "./out/TeleporterMessenger.sol/TeleporterMessenger.json" warpGenesisTemplateFile = "./tests/utils/warp-genesis-template.json" - - teleporterMessengerLabel = "TeleporterMessenger" - upgradabilityLabel = "upgradability" - utilsLabel = "utils" - validatorSetSigLabel = "ValidatorSetSig" - validatorManagerLabel = "ValidatorManager" + validatorSetSigLabel = "ValidatorSetSig" ) var ( @@ -34,17 +28,17 @@ func TestGovernance(t *testing.T) { } RegisterFailHandler(ginkgo.Fail) - ginkgo.RunSpecs(t, "Teleporter e2e test") + ginkgo.RunSpecs(t, "Governance e2e test") } -// Define the Teleporter before and after suite functions. +// Define the before and after suite functions. var _ = ginkgo.BeforeSuite(func() { // Create the local network instance ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) defer cancel() LocalNetworkInstance = local.NewLocalNetwork( ctx, - "teleporter-test-local-network", + "governance-test-local-network", warpGenesisTemplateFile, []local.SubnetSpec{ { diff --git a/tests/local/teleporter/teleporter_suite_test.go b/tests/local/teleporter/teleporter_suite_test.go index 17fe35e1a..99ccd651f 100644 --- a/tests/local/teleporter/teleporter_suite_test.go +++ b/tests/local/teleporter/teleporter_suite_test.go @@ -23,8 +23,6 @@ const ( teleporterMessengerLabel = "TeleporterMessenger" upgradabilityLabel = "upgradability" utilsLabel = "utils" - validatorSetSigLabel = "ValidatorSetSig" - validatorManagerLabel = "ValidatorManager" ) var ( diff --git a/tests/local/validator-manager/validator_manager_suite_test.go b/tests/local/validator-manager/validator_manager_suite_test.go index 1b2ab223f..92f7eaf41 100644 --- a/tests/local/validator-manager/validator_manager_suite_test.go +++ b/tests/local/validator-manager/validator_manager_suite_test.go @@ -14,14 +14,8 @@ import ( ) const ( - teleporterByteCodeFile = "./out/TeleporterMessenger.sol/TeleporterMessenger.json" warpGenesisTemplateFile = "./tests/utils/warp-genesis-template.json" - - teleporterMessengerLabel = "TeleporterMessenger" - upgradabilityLabel = "upgradability" - utilsLabel = "utils" - validatorSetSigLabel = "ValidatorSetSig" - validatorManagerLabel = "ValidatorManager" + validatorManagerLabel = "ValidatorManager" ) var ( @@ -34,17 +28,17 @@ func TestValidatorManager(t *testing.T) { } RegisterFailHandler(ginkgo.Fail) - ginkgo.RunSpecs(t, "Teleporter e2e test") + ginkgo.RunSpecs(t, "Validator Manager e2e test") } -// Define the Teleporter before and after suite functions. +// Define the before and after suite functions. var _ = ginkgo.BeforeEach(func() { // Create the local network instance ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) defer cancel() LocalNetworkInstance = local.NewLocalNetwork( ctx, - "teleporter-test-local-network", + "validator-manager-test-local-network", warpGenesisTemplateFile, []local.SubnetSpec{ { From 4b961d2c9f0fc291707499c801da4590d42d37ff Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 18 Oct 2024 16:05:39 -0500 Subject: [PATCH 10/43] run validator-manager tests in serial --- scripts/local/e2e_test.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/local/e2e_test.sh b/scripts/local/e2e_test.sh index fd5647981..08b3ae473 100755 --- a/scripts/local/e2e_test.sh +++ b/scripts/local/e2e_test.sh @@ -92,6 +92,20 @@ for component in $(echo $components | tr ',' ' '); do ginkgo build ./tests/local/$component echo "Running e2e tests for $component" + + # If component is validator-manager, run each flow separately + if [ "$component" == "validator-manager" ]; then + for flow in "ERC20" "Native" "PoA"; do + echo "Running $flow flow" + RUN_E2E=true ./tests/local/$component/$component.test \ + --ginkgo.vv \ + --ginkgo.label-filter=${GINKGO_LABEL_FILTER:-""} \ + --ginkgo.trace \ + --ginkgo.focus=$flow + done + continue + fi + RUN_E2E=true ./tests/local/$component/$component.test \ --ginkgo.vv \ --ginkgo.label-filter=${GINKGO_LABEL_FILTER:-""} \ From 5e7ead10d9d196df32b077e2e4eb52004e69c715 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Mon, 21 Oct 2024 16:48:39 -0500 Subject: [PATCH 11/43] set evm version to shanghai --- abi-bindings/go/ProxyAdmin/ProxyAdmin.go | 12 ++++++------ .../TransparentUpgradeableProxy.go | 12 ++++++------ .../go/governance/ValidatorSetSig/ValidatorSetSig.go | 2 +- abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go | 2 +- .../TeleporterMessenger/TeleporterMessenger.go | 12 ++++++------ .../TeleporterRegistry/TeleporterRegistry.go | 2 +- .../teleporter/tests/TestMessenger/TestMessenger.go | 10 +++++----- .../ERC20TokenStakingManager.go | 10 +++++----- .../ExampleRewardCalculator.go | 2 +- .../NativeTokenStakingManager.go | 6 +++--- .../PoAValidatorManager/PoAValidatorManager.go | 4 ++-- scripts/abi_bindings.sh | 2 +- 12 files changed, 38 insertions(+), 38 deletions(-) diff --git a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go index 5a2b3a362..16575e905 100644 --- a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go +++ b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go @@ -32,7 +32,7 @@ var ( // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", } // AddressABI is the input ABI used to generate the binding from. @@ -356,7 +356,7 @@ func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method s // ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. var ERC1967ProxyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60806040526040516103ca3803806103ca8339810160408190526100229161023c565b61002c8282610033565b505061031b565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610305565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b038082111561027f575f80fd5b818501915085601f830112610292575f80fd5b8151818111156102a4576102a4610228565b604051601f8201601f19908116603f011681019083821181831017156102cc576102cc610228565b816040528281528860208487010111156102e4575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f82518060208501845e5f920191825250919050565b60a3806103275f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201d71d9606c221249d6bea9623205d9628509770cc2b548646e0eee653df844eb64736f6c63430008190033", + Bin: "0x60806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220d2be5bfccbcd73d67bdb73a62a6fe90dfd71ce6de78cb8cfa6aa7dcc5a928a7864736f6c63430008190033", } // ERC1967ProxyABI is the input ABI used to generate the binding from. @@ -694,7 +694,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC196 // ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. var ERC1967UtilsMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206102e0afcf8d6f22c46ef1da3bd84f4a9180c360db8303cf6ce7c1339a50f2e764736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122091b976241e37023f15c3b457a029bc623cf4618fc3f25eba2af91d303d10992664736f6c63430008190033", } // ERC1967UtilsABI is the input ABI used to generate the binding from. @@ -3190,7 +3190,7 @@ func (_Proxy *ProxyTransactorSession) Fallback(calldata []byte) (*types.Transact // ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. var ProxyAdminMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033", } // ProxyAdminABI is the input ABI used to generate the binding from. @@ -3641,7 +3641,7 @@ func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) // StorageSlotMetaData contains all meta data concerning the StorageSlot contract. var StorageSlotMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205ba4b68c0f2890fefa20a45ab4fdb3aa3c0defff2fa4e4e8ad178e0a33741fec64736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122061b8359cae68a927413faa74d17711eed0ee4a12f05e1d821afc102de131177364736f6c63430008190033", } // StorageSlotABI is the input ABI used to generate the binding from. @@ -3814,7 +3814,7 @@ func (_StorageSlot *StorageSlotTransactorRaw) Transact(opts *bind.TransactOpts, // TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. var TransparentUpgradeableProxyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60a0604052604051610dbc380380610dbc8339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b50505061044b565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d9c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610435565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d9c8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104e7806108b583390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b03808211156103af575f80fd5b818601915086601f8301126103c2575f80fd5b8151818111156103d4576103d4610356565b604051601f8201601f19908116603f011681019083821181831017156103fc576103fc610356565b81604052828152896020848701011115610414575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104536104625f395f601001526104535ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212204423f74f93e7db279ee266fc7a53465e65cd2894fc1504291f691df5682c71a764736f6c63430008190033608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + Bin: "0x60a0604052604051610e0d380380610e0d8339810160408190526100229161038c565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610471565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610ded833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610456565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610ded8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806108f183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561038457818101518382015260200161036c565b50505f910152565b5f805f6060848603121561039e575f80fd5b6103a78461033b565b92506103b56020850161033b565b60408501519092506001600160401b03808211156103d1575f80fd5b818601915086601f8301126103e4575f80fd5b8151818111156103f6576103f6610356565b604051601f8201601f19908116603f0116810190838211818310171561041e5761041e610356565b81604052828152896020848701011115610436575f80fd5b61044783602083016020880161036a565b80955050505050509250925092565b5f825161046781846020870161036a565b9190910192915050565b6080516104696104885f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea264697066735822122038547b7be2e8dc97a709b274eea3f2cd650f3a37e1292e546ca26aa7d84d361e64736f6c63430008190033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go index 65aae70d9..7fd6c48bc 100644 --- a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go +++ b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go @@ -32,7 +32,7 @@ var ( // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", } // AddressABI is the input ABI used to generate the binding from. @@ -356,7 +356,7 @@ func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method s // ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. var ERC1967ProxyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60806040526040516103ca3803806103ca8339810160408190526100229161023c565b61002c8282610033565b505061031b565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610305565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b038082111561027f575f80fd5b818501915085601f830112610292575f80fd5b8151818111156102a4576102a4610228565b604051601f8201601f19908116603f011681019083821181831017156102cc576102cc610228565b816040528281528860208487010111156102e4575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f82518060208501845e5f920191825250919050565b60a3806103275f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201d71d9606c221249d6bea9623205d9628509770cc2b548646e0eee653df844eb64736f6c63430008190033", + Bin: "0x60806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220d2be5bfccbcd73d67bdb73a62a6fe90dfd71ce6de78cb8cfa6aa7dcc5a928a7864736f6c63430008190033", } // ERC1967ProxyABI is the input ABI used to generate the binding from. @@ -694,7 +694,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC196 // ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. var ERC1967UtilsMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206102e0afcf8d6f22c46ef1da3bd84f4a9180c360db8303cf6ce7c1339a50f2e764736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122091b976241e37023f15c3b457a029bc623cf4618fc3f25eba2af91d303d10992664736f6c63430008190033", } // ERC1967UtilsABI is the input ABI used to generate the binding from. @@ -3190,7 +3190,7 @@ func (_Proxy *ProxyTransactorSession) Fallback(calldata []byte) (*types.Transact // ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. var ProxyAdminMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033", } // ProxyAdminABI is the input ABI used to generate the binding from. @@ -3641,7 +3641,7 @@ func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) // StorageSlotMetaData contains all meta data concerning the StorageSlot contract. var StorageSlotMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205ba4b68c0f2890fefa20a45ab4fdb3aa3c0defff2fa4e4e8ad178e0a33741fec64736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122061b8359cae68a927413faa74d17711eed0ee4a12f05e1d821afc102de131177364736f6c63430008190033", } // StorageSlotABI is the input ABI used to generate the binding from. @@ -3814,7 +3814,7 @@ func (_StorageSlot *StorageSlotTransactorRaw) Transact(opts *bind.TransactOpts, // TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. var TransparentUpgradeableProxyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60a0604052604051610dbc380380610dbc8339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b50505061044b565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d9c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610435565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d9c8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104e7806108b583390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b03808211156103af575f80fd5b818601915086601f8301126103c2575f80fd5b8151818111156103d4576103d4610356565b604051601f8201601f19908116603f011681019083821181831017156103fc576103fc610356565b81604052828152896020848701011115610414575f80fd5b8260208601602083015e5f6020848301015280955050505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104536104625f395f601001526104535ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212204423f74f93e7db279ee266fc7a53465e65cd2894fc1504291f691df5682c71a764736f6c63430008190033608060405234801561000f575f80fd5b506040516104e73803806104e783398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103f2806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610085919061035d565b3480156100e9575f80fd5b506100616100f8366004610376565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610391565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61036f602083018461032f565b9392505050565b5f60208284031215610386575f80fd5b813561036f81610238565b6001600160a01b03831681526040602082018190525f906103b49083018461032f565b94935050505056fea26469706673582212209c45600e0359c9ca71d016d7f7e7e01a9e3f09ee8cf09cd1422b70295fda54b364736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + Bin: "0x60a0604052604051610e0d380380610e0d8339810160408190526100229161038c565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610471565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610ded833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610456565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610ded8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806108f183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561038457818101518382015260200161036c565b50505f910152565b5f805f6060848603121561039e575f80fd5b6103a78461033b565b92506103b56020850161033b565b60408501519092506001600160401b03808211156103d1575f80fd5b818601915086601f8301126103e4575f80fd5b8151818111156103f6576103f6610356565b604051601f8201601f19908116603f0116810190838211818310171561041e5761041e610356565b81604052828152896020848701011115610436575f80fd5b61044783602083016020880161036a565b80955050505050509250925092565b5f825161046781846020870161036a565b9190910192915050565b6080516104696104885f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea264697066735822122038547b7be2e8dc97a709b274eea3f2cd650f3a37e1292e546ca26aa7d84d361e64736f6c63430008190033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go index 0193add1e..930e6947a 100644 --- a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go +++ b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go @@ -653,7 +653,7 @@ func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.Transa // ValidatorSetSigMetaData contains all meta data concerning the ValidatorSetSig contract. var ValidatorSetSigMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Delivered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"executeCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"targetBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorSetSigAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structValidatorSetSigMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"validateMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60c060405234801561000f575f80fd5b50604051610b52380380610b5283398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a5a6100f85f395f818161017701526104ba01525f818161012a01526102790152610a5a5ff3fe608060405260043610610071575f3560e01c80637ecebe001161004c5780637ecebe00146100e05780638d6e579d14610119578063b771b3bc1461014c578063d127dc9b14610166575f80fd5b80630731775d1461007c5780635433da42146100ac5780637d969c34146100c1575f80fd5b3661007857005b5f80fd5b348015610087575f80fd5b5061008f5f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf6100ba366004610642565b610199565b005b3480156100cc575f80fd5b506100bf6100db36600461079a565b6104b6565b3480156100eb575f80fd5b5061010b6100fa366004610842565b60016020525f908152604090205481565b6040519081526020016100a3565b348015610124575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610157575f80fd5b5061008f6005600160991b0181565b348015610171575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a161061a565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261021191908101906108aa565b91509150806102755760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102f45760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161026c565b60208201516001600160a01b0316156103655760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161026c565b5f826040015180602001905181019061037e919061094a565b9050610389816104b6565b60608101516103999060016109e9565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103d791610a0e565b5f6040518083038185875af1925050503d805f8114610411576040519150601f19603f3d011682016040523d82523d5f602084013e610416565b606091505b50509050806104675760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161026c565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104b360015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461053a5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161026c565b60208101516001600160a01b031630146105ae5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161026c565b60608101516040808301516001600160a01b03165f90815260016020522054146104b35760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161026c565b60025f540361063c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610652575f80fd5b813563ffffffff81168114610665575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156106a3576106a361066c565b60405290565b6040516060810167ffffffffffffffff811182821017156106a3576106a361066c565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f5576106f561066c565b604052919050565b6001600160a01b03811681146104b3575f80fd5b803561071c816106fd565b919050565b5f67ffffffffffffffff82111561073a5761073a61066c565b50601f01601f191660200190565b5f82601f830112610757575f80fd5b813561076a61076582610721565b6106cc565b81815284602083860101111561077e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107aa575f80fd5b813567ffffffffffffffff808211156107c1575f80fd5b9083019060c082860312156107d4575f80fd5b6107dc610680565b823581526107ec60208401610711565b60208201526107fd60408401610711565b6040820152606083013560608201526080830135608082015260a083013582811115610827575f80fd5b61083387828601610748565b60a08301525095945050505050565b5f60208284031215610852575f80fd5b8135610665816106fd565b5f82601f83011261086c575f80fd5b815161087a61076582610721565b81815284602083860101111561088e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f80604083850312156108bb575f80fd5b825167ffffffffffffffff808211156108d2575f80fd5b90840190606082870312156108e5575f80fd5b6108ed6106a9565b8251815260208301516108ff816106fd565b6020820152604083015182811115610915575f80fd5b6109218882860161085d565b6040830152508094505050506020830151801515811461093f575f80fd5b809150509250929050565b5f6020828403121561095a575f80fd5b815167ffffffffffffffff80821115610971575f80fd5b9083019060c08286031215610984575f80fd5b61098c610680565b82518152602083015161099e816106fd565b602082015260408301516109b1816106fd565b80604083015250606083015160608201526080830151608082015260a0830151828111156109dd575f80fd5b6108338782860161085d565b80820180821115610a0857634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220a4fd8a391bae82c95be13fcdbc66e692c77e1237dc4d00e6f704801b804bba6d64736f6c63430008190033", + Bin: "0x60c060405234801561000f575f80fd5b50604051610b76380380610b7683398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a7e6100f85f395f818161017701526104ba01525f818161012a01526102790152610a7e5ff3fe608060405260043610610071575f3560e01c80637ecebe001161004c5780637ecebe00146100e05780638d6e579d14610119578063b771b3bc1461014c578063d127dc9b14610166575f80fd5b80630731775d1461007c5780635433da42146100ac5780637d969c34146100c1575f80fd5b3661007857005b5f80fd5b348015610087575f80fd5b5061008f5f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf6100ba366004610642565b610199565b005b3480156100cc575f80fd5b506100bf6100db36600461079a565b6104b6565b3480156100eb575f80fd5b5061010b6100fa366004610842565b60016020525f908152604090205481565b6040519081526020016100a3565b348015610124575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610157575f80fd5b5061008f6005600160991b0181565b348015610171575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a161061a565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261021191908101906108c9565b91509150806102755760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102f45760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161026c565b60208201516001600160a01b0316156103655760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161026c565b5f826040015180602001905181019061037e9190610969565b9050610389816104b6565b6060810151610399906001610a08565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103d791610a2d565b5f6040518083038185875af1925050503d805f8114610411576040519150601f19603f3d011682016040523d82523d5f602084013e610416565b606091505b50509050806104675760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161026c565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104b360015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461053a5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161026c565b60208101516001600160a01b031630146105ae5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161026c565b60608101516040808301516001600160a01b03165f90815260016020522054146104b35760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161026c565b60025f540361063c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610652575f80fd5b813563ffffffff81168114610665575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156106a3576106a361066c565b60405290565b6040516060810167ffffffffffffffff811182821017156106a3576106a361066c565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f5576106f561066c565b604052919050565b6001600160a01b03811681146104b3575f80fd5b803561071c816106fd565b919050565b5f67ffffffffffffffff82111561073a5761073a61066c565b50601f01601f191660200190565b5f82601f830112610757575f80fd5b813561076a61076582610721565b6106cc565b81815284602083860101111561077e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107aa575f80fd5b813567ffffffffffffffff808211156107c1575f80fd5b9083019060c082860312156107d4575f80fd5b6107dc610680565b823581526107ec60208401610711565b60208201526107fd60408401610711565b6040820152606083013560608201526080830135608082015260a083013582811115610827575f80fd5b61083387828601610748565b60a08301525095945050505050565b5f60208284031215610852575f80fd5b8135610665816106fd565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b5f82601f83011261088e575f80fd5b815161089c61076582610721565b8181528460208386010111156108b0575f80fd5b6108c182602083016020870161085d565b949350505050565b5f80604083850312156108da575f80fd5b825167ffffffffffffffff808211156108f1575f80fd5b9084019060608287031215610904575f80fd5b61090c6106a9565b82518152602083015161091e816106fd565b6020820152604083015182811115610934575f80fd5b6109408882860161087f565b6040830152508094505050506020830151801515811461095e575f80fd5b809150509250929050565b5f60208284031215610979575f80fd5b815167ffffffffffffffff80821115610990575f80fd5b9083019060c082860312156109a3575f80fd5b6109ab610680565b8251815260208301516109bd816106fd565b602082015260408301516109d0816106fd565b80604083015250606083015160608201526080830151608082015260a0830151828111156109fc575f80fd5b6108338782860161087f565b80820180821115610a2757634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8251610a3e81846020870161085d565b919091019291505056fea2646970667358221220019565c755ece24e1cd6e32479455fadaaec71711b766ce499d457560a32ba5464736f6c63430008190033", } // ValidatorSetSigABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go index 166b5d40c..e740db984 100644 --- a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go +++ b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go @@ -1641,7 +1641,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC2 // ExampleERC20MetaData contains all meta data concerning the ExampleERC20 contract. var ExampleERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b6108d48061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a0712d68146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806342966c681461015957806370a082311461016c57806379cc679014610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806340c10f1914610144575b5f80fd5b6100d761020d565b6040516100e4919061072e565b60405180910390f35b6101006100fb36600461077e565b61029d565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b6101006101303660046107a6565b6102b6565b604051601281526020016100e4565b61015761015236600461077e565b6102d9565b005b6101576101673660046107df565b610344565b61011461017a3660046107f6565b6001600160a01b03165f9081526020819052604090205490565b6101576101a236600461077e565b610351565b6100d7610366565b6101576101bd3660046107df565b610375565b6101006101d036600461077e565b6103d7565b6101146101e3366004610816565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c90610847565b80601f016020809104026020016040519081016040528092919081815260200182805461024890610847565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa8185856103e4565b60019150505b92915050565b5f336102c38582856103f6565b6102ce858585610471565b506001949350505050565b678ac7230489e800008111156103365760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61034082826104ce565b5050565b61034e3382610502565b50565b61035c8233836103f6565b6103408282610502565b60606004805461021c90610847565b678ac7230489e800008111156103cd5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604482015260640161032d565b61034e33826104ce565b5f336102aa818585610471565b6103f18383836001610536565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046b578181101561045d57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161032d565b61046b84848484035f610536565b50505050565b6001600160a01b03831661049a57604051634b637e8f60e11b81525f600482015260240161032d565b6001600160a01b0382166104c35760405163ec442f0560e01b81525f600482015260240161032d565b6103f1838383610608565b6001600160a01b0382166104f75760405163ec442f0560e01b81525f600482015260240161032d565b6103405f8383610608565b6001600160a01b03821661052b57604051634b637e8f60e11b81525f600482015260240161032d565b610340825f83610608565b6001600160a01b03841661055f5760405163e602df0560e01b81525f600482015260240161032d565b6001600160a01b03831661058857604051634a1406b160e11b81525f600482015260240161032d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610632578060025f828254610627919061087f565b909155506106a29050565b6001600160a01b0383165f90815260208190526040902054818110156106845760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161032d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106be576002805482900390556106dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161072191815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610779575f80fd5b919050565b5f806040838503121561078f575f80fd5b61079883610763565b946020939093013593505050565b5f805f606084860312156107b8575f80fd5b6107c184610763565b92506107cf60208501610763565b9150604084013590509250925092565b5f602082840312156107ef575f80fd5b5035919050565b5f60208284031215610806575f80fd5b61080f82610763565b9392505050565b5f8060408385031215610827575f80fd5b61083083610763565b915061083e60208401610763565b90509250929050565b600181811c9082168061085b57607f821691505b60208210810361087957634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102b057634e487b7160e01b5f52601160045260245ffdfea264697066735822122034396e8de5a9f28b1cab74302d03ab34d552d34ef04c7df704b4afd19b7818fd64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b6108eb8061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a0712d68146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806342966c681461015957806370a082311461016c57806379cc679014610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806340c10f1914610144575b5f80fd5b6100d761020d565b6040516100e4919061072e565b60405180910390f35b6101006100fb366004610795565b61029d565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b6101006101303660046107bd565b6102b6565b604051601281526020016100e4565b610157610152366004610795565b6102d9565b005b6101576101673660046107f6565b610344565b61011461017a36600461080d565b6001600160a01b03165f9081526020819052604090205490565b6101576101a2366004610795565b610351565b6100d7610366565b6101576101bd3660046107f6565b610375565b6101006101d0366004610795565b6103d7565b6101146101e336600461082d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c9061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546102489061085e565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa8185856103e4565b60019150505b92915050565b5f336102c38582856103f6565b6102ce858585610471565b506001949350505050565b678ac7230489e800008111156103365760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61034082826104ce565b5050565b61034e3382610502565b50565b61035c8233836103f6565b6103408282610502565b60606004805461021c9061085e565b678ac7230489e800008111156103cd5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604482015260640161032d565b61034e33826104ce565b5f336102aa818585610471565b6103f18383836001610536565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046b578181101561045d57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161032d565b61046b84848484035f610536565b50505050565b6001600160a01b03831661049a57604051634b637e8f60e11b81525f600482015260240161032d565b6001600160a01b0382166104c35760405163ec442f0560e01b81525f600482015260240161032d565b6103f1838383610608565b6001600160a01b0382166104f75760405163ec442f0560e01b81525f600482015260240161032d565b6103405f8383610608565b6001600160a01b03821661052b57604051634b637e8f60e11b81525f600482015260240161032d565b610340825f83610608565b6001600160a01b03841661055f5760405163e602df0560e01b81525f600482015260240161032d565b6001600160a01b03831661058857604051634a1406b160e11b81525f600482015260240161032d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610632578060025f8282546106279190610896565b909155506106a29050565b6001600160a01b0383165f90815260208190526040902054818110156106845760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161032d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106be576002805482900390556106dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161072191815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561075a5785810183015185820160400152820161073e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610790575f80fd5b919050565b5f80604083850312156107a6575f80fd5b6107af8361077a565b946020939093013593505050565b5f805f606084860312156107cf575f80fd5b6107d88461077a565b92506107e66020850161077a565b9150604084013590509250925092565b5f60208284031215610806575f80fd5b5035919050565b5f6020828403121561081d575f80fd5b6108268261077a565b9392505050565b5f806040838503121561083e575f80fd5b6108478361077a565b91506108556020840161077a565b90509250929050565b600181811c9082168061087257607f821691505b60208210810361089057634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102b057634e487b7160e01b5f52601160045260245ffdfea26469706673582212206e5a3aa4344b05b49dfabcfd4b35e46dfa45722df16672ecdd056adb7115fb4464736f6c63430008190033", } // ExampleERC20ABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go index 1eb6a6dd7..385020488 100644 --- a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -79,7 +79,7 @@ type WarpMessage struct { // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", } // AddressABI is the input ABI used to generate the binding from. @@ -3499,7 +3499,7 @@ func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Lo // MathMetaData contains all meta data concerning the Math contract. var MathMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202433a4c39c4dc65cac0fab3f881599c1a71b0a81ec62308d2f93478cc9530ed064736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212203d0969b61d0d77012e6ad59a2d8b7436adebee3c994fb3ef324be3735eee46fd64736f6c63430008190033", } // MathABI is the input ABI used to generate the binding from. @@ -3672,7 +3672,7 @@ func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, // ReceiptQueueMetaData contains all meta data concerning the ReceiptQueue contract. var ReceiptQueueMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208feb01a13d0de37a4f2a654e428239eab0a8daf36be21b5086d1815cfb82f8ac64736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122038a742d6e870fa1fd5ffc8e616284b2f5a03e535930dff90cb0e0ee6e67eec8e64736f6c63430008190033", } // ReceiptQueueABI is the input ABI used to generate the binding from. @@ -3996,7 +3996,7 @@ func (_ReentrancyGuards *ReentrancyGuardsTransactorRaw) Transact(opts *bind.Tran // SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. var SafeERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e48ef8e82df1e4ab3740b521e288cd30c92658d43bcfb55e7af86b1ffa4abbe764736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122044774e8ae9cb3b510a51dacb03d3b3d6bee0ee00ebb240bae28efc962ab9298a64736f6c63430008190033", } // SafeERC20ABI is the input ABI used to generate the binding from. @@ -4169,7 +4169,7 @@ func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, meth // SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. var SafeERC20TransferFromMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dea7663bfe09d842906ec54ac6ab1cd0020f81907f7f5a8537ec9ddc8aa8260864736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206a67e765459c7c24f187543272046fd3214ad556da06c492ce0a4aee92d9549264736f6c63430008190033", } // SafeERC20TransferFromABI is the input ABI used to generate the binding from. @@ -4342,7 +4342,7 @@ func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts // TeleporterMessengerMetaData contains all meta data concerning the TeleporterMessenger contract. var TeleporterMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b5060015f81905580556130f9806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612111565b6104f3565b005b61015461018a36600461212c565b6105e6565b6101d961019d36600461212c565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e929190612143565b6101fa6101f536600461212c565b610602565b6040516001600160a01b03909116815260200161015e565b61015461022036600461212c565b5f9081526005602052604090205490565b61015461023f36600461216a565b610689565b61017a6102523660046121b7565b6106e2565b61015461026536600461212c565b60066020525f908152604090205481565b6102896102843660046121e8565b610885565b60405161015e9190612208565b61017a6102a4366004612228565b6108b6565b6101546102b736600461225d565b610aed565b6101546102ca3660046122cd565b610b2f565b6101fa6005600160991b0181565b6101546102eb36600461235e565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a610323366004612395565b610dc1565b61015460025481565b61015461033f36600461212c565b6111e3565b61038c61035236600461212c565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b936600461212c565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f436600461212c565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046123b9565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049691906123fc565b9050806104be5760405162461bcd60e51b81526004016104b590612413565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b59061245a565b60025f556106d86106bb83612691565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b59061245a565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612730565b5f8360405160200161079491906129af565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906129c1565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612a0a565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a908490600401612a6c565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a91906123fc565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b59061245a565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b590612a7e565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612ac3565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612730565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612b2b565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b59061245a565b60025f818155905490866001600160401b03811115610b7257610b7261249d565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612b3e565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612b3e565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612b52565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b590612a7e565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612bd3565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612d67565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611a5a565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611ac6565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612b3e565b6020026020010151611b36565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611c5a565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612f6d565b60405180910390a460e084015151156111d5576111d582875f015186611cb4565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b590612413565b5f60035460016112159190612b2b565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b590612a7e565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612730565b80836040516020016112b791906129af565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906129c1565b5f6112fb6080850160608601612111565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612111565b6113cb60e0870187612f90565b6040516024016113de9493929190612fd2565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612111565b5a84611de3565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611dfa565b505050565b805460018201545f916105fc91612ffc565b60605f611520600561151b856114f8565b611e5b565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b038111156115855761158561249d565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611e70565b8282815181106115f1576115f1612b3e565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f9061300f565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac9190613027565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612ac3565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b69088908690613039565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e8908690600401612a6c565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182891906123fc565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612b2b565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196291906123fc565b90506119796001600160a01b038516333086611f3a565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e191906123fc565b9050818111611a475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611a518282612ffc565b95945050505050565b5f81515f03611a6b575060016105fc565b81515f5b81811015611abc57846001600160a01b0316848281518110611a9357611a93612b3e565b60200260200101516001600160a01b031603611ab4576001925050506105fc565b600101611a6f565b505f949350505050565b805f03611b255760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f611b458484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b9b575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c01908490612b2b565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c4b919061304b565b60405180910390a45050505050565b600182018054829160028501915f9182611c738361300f565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d165760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611d36576114f3838383611f79565b602081015160e08201516040515f92611d5392869260240161306b565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d97919084611de3565b905080611db057611da9858585611f79565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611e0e6001600160a01b03841683611fed565b905080515f14158015611e32575080806020019051810190611e309190613094565b155b156114f357604051635274afe760e01b81526001600160a01b03841660048201526024016104b5565b5f818310611e6957816108af565b5090919050565b604080518082019091525f808252602082015281546001830154819003611ed95760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f30908390612b2b565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611f739186918216906323b872dd906084016114c1565b50505050565b80604051602001611f8a9190613027565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fe0908590613027565b60405180910390a3505050565b60606108af83835f845f80856001600160a01b0316848660405161201191906130ad565b5f6040518083038185875af1925050503d805f811461204b576040519150601f19603f3d011682016040523d82523d5f602084013e612050565b606091505b509150915061206086838361206a565b9695505050505050565b60608261207f5761207a826120c6565b6108af565b815115801561209657506001600160a01b0384163b155b156120bf57604051639996b31560e01b81526001600160a01b03851660048201526024016104b5565b50806108af565b8051156120d65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146120ef575f80fd5b80356104ee816120f2565b5f60208284031215612121575f80fd5b81356108af816120f2565b5f6020828403121561213c575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f6020828403121561217a575f80fd5b81356001600160401b0381111561218f575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156121b1575f80fd5b50919050565b5f602082840312156121c7575f80fd5b81356001600160401b038111156121dc575f80fd5b611222848285016121a0565b5f80604083850312156121f9575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f6060848603121561223a575f80fd5b83359250602084013561224c816120f2565b929592945050506040919091013590565b5f805f6060848603121561226f575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612296575f80fd5b5081356001600160401b038111156122ac575f80fd5b6020830191508360208260051b85010111156122c6575f80fd5b9250929050565b5f805f805f8086880360a08112156122e3575f80fd5b8735965060208801356001600160401b0380821115612300575f80fd5b61230c8b838c01612286565b90985096508691506040603f1984011215612325575f80fd5b60408a01955060808a013592508083111561233e575f80fd5b505061234c89828a01612286565b979a9699509497509295939492505050565b5f806040838503121561236f575f80fd5b823561237a816120f2565b9150602083013561238a816120f2565b809150509250929050565b5f80604083850312156123a6575f80fd5b823563ffffffff8116811461237a575f80fd5b5f80604083850312156123ca575f80fd5b8235915060208301356001600160401b038111156123e6575f80fd5b6123f2858286016121a0565b9150509250929050565b5f6020828403121561240c575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124d3576124d361249d565b60405290565b60405160c081016001600160401b03811182821017156124d3576124d361249d565b60405161010081016001600160401b03811182821017156124d3576124d361249d565b604051601f8201601f191681016001600160401b03811182821017156125465761254661249d565b604052919050565b5f6040828403121561255e575f80fd5b6125666124b1565b90508135612573816120f2565b808252506020820135602082015292915050565b5f6001600160401b0382111561259f5761259f61249d565b5060051b60200190565b5f82601f8301126125b8575f80fd5b813560206125cd6125c883612587565b61251e565b8083825260208201915060208460051b8701019350868411156125ee575f80fd5b602086015b84811015612613578035612606816120f2565b83529183019183016125f3565b509695505050505050565b5f6001600160401b038211156126365761263661249d565b50601f01601f191660200190565b5f82601f830112612653575f80fd5b81356126616125c88261261e565b818152846020838601011115612675575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156126a1575f80fd5b6126a96124d9565b823581526126b960208401612106565b60208201526126cb366040850161254e565b60408201526080830135606082015260a08301356001600160401b03808211156126f3575f80fd5b6126ff368387016125a9565b608084015260c0850135915080821115612717575f80fd5b5061272436828601612644565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e1984360301811261278b575f80fd5b83016020810192503590506001600160401b038111156127a9575f80fd5b8060051b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f65781356127db816120f2565b6001600160a01b0316875295820195908201906001016127c8565b509495945050505050565b5f808335601e19843603018112612816575f80fd5b83016020810192503590506001600160401b03811115612834575f80fd5b8060061b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f657813587528282013561286c816120f2565b6001600160a01b0316878401526040968701969190910190600101612853565b5f808335601e198436030181126128a1575f80fd5b83016020810192503590506001600160401b038111156128bf575f80fd5b8036038213156122c6575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561290b816120f2565b6001600160a01b031660208501526040838101359085015261292f60608401612106565b6001600160a01b031660608501526080838101359085015261295460a0840184612776565b8260a087015261296783870182846127ba565b9250505061297860c0840184612801565b85830360c087015261298b838284612845565b9250505061299c60e084018461288c565b85830360e08701526120608382846128cd565b602081525f6108af60208301846128f5565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a1c60608301856128f5565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108af6020830184612a3e565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612b17565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612b62575f80fd5b6108af838361254e565b80516104ee816120f2565b5f82601f830112612b86575f80fd5b8151612b946125c88261261e565b818152846020838601011115612ba8575f80fd5b8160208501602083015e5f918101602001919091529392505050565b805180151581146104ee575f80fd5b5f8060408385031215612be4575f80fd5b82516001600160401b0380821115612bfa575f80fd5b9084019060608287031215612c0d575f80fd5b604051606081018181108382111715612c2857612c2861249d565b604052825181526020830151612c3d816120f2565b6020820152604083015182811115612c53575f80fd5b612c5f88828601612b77565b6040830152509350612c7691505060208401612bc4565b90509250929050565b5f82601f830112612c8e575f80fd5b81516020612c9e6125c883612587565b8083825260208201915060208460051b870101935086841115612cbf575f80fd5b602086015b84811015612613578051612cd7816120f2565b8352918301918301612cc4565b5f82601f830112612cf3575f80fd5b81516020612d036125c883612587565b82815260069290921b84018101918181019086841115612d21575f80fd5b8286015b848110156126135760408189031215612d3c575f80fd5b612d446124b1565b8151815284820151612d55816120f2565b81860152835291830191604001612d25565b5f60208284031215612d77575f80fd5b81516001600160401b0380821115612d8d575f80fd5b908301906101008286031215612da1575f80fd5b612da96124fb565b82518152612db960208401612b6c565b602082015260408301516040820152612dd460608401612b6c565b60608201526080830151608082015260a083015182811115612df4575f80fd5b612e0087828601612c7f565b60a08301525060c083015182811115612e17575f80fd5b612e2387828601612ce4565b60c08301525060e083015182811115612e3a575f80fd5b612e4687828601612b77565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b838110156127f65781516001600160a01b031687529582019590820190600101612e68565b5f815180845260208085019450602084015f5b838110156127f657612ec6878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612ea0565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f1760608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f3982860182612e55565b91505060c083015184820360c0860152612f538282612e8d565b91505060e083015184820360e0860152611a518282612a3e565b6001600160a01b03831681526040602082018190525f9061122290830184612ed9565b5f808335601e19843603018112612fa5575f80fd5b8301803591506001600160401b03821115612fbe575f80fd5b6020019150368190038213156122c6575f80fd5b8481526001600160a01b03841660208201526060604082018190525f9061206090830184866128cd565b818103818111156105fc576105fc612b17565b5f6001820161302057613020612b17565b5060010190565b602081525f6108af6020830184612ed9565b606081525f612a1c6060830185612ed9565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90611a5190830184612a3e565b5f602082840312156130a4575f80fd5b6108af82612bc4565b5f82518060208501845e5f92019182525091905056fea26469706673582212205dd414c48950976b8c40890278d346a96a8197094acded159d6c4a9e25d8041d64736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b5060015f8190558055613112806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612111565b6104f3565b005b61015461018a36600461212c565b6105e6565b6101d961019d36600461212c565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e929190612143565b6101fa6101f536600461212c565b610602565b6040516001600160a01b03909116815260200161015e565b61015461022036600461212c565b5f9081526005602052604090205490565b61015461023f36600461216a565b610689565b61017a6102523660046121b7565b6106e2565b61015461026536600461212c565b60066020525f908152604090205481565b6102896102843660046121e8565b610885565b60405161015e9190612208565b61017a6102a4366004612228565b6108b6565b6101546102b736600461225d565b610aed565b6101546102ca3660046122cd565b610b2f565b6101fa6005600160991b0181565b6101546102eb36600461235e565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a610323366004612395565b610dc1565b61015460025481565b61015461033f36600461212c565b6111e3565b61038c61035236600461212c565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b936600461212c565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f436600461212c565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046123b9565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049691906123fc565b9050806104be5760405162461bcd60e51b81526004016104b590612413565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b59061245a565b60025f556106d86106bb83612691565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b59061245a565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612730565b5f8360405160200161079491906129af565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906129c1565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612a0a565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a908490600401612a8b565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a91906123fc565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b59061245a565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b590612a9d565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612ae2565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612730565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612b4a565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b59061245a565b60025f818155905490866001600160401b03811115610b7257610b7261249d565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612b5d565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612b5d565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612b71565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b590612a9d565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612be7565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612d7b565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611a5a565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611ac6565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612b5d565b6020026020010151611b36565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611c5a565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612f81565b60405180910390a460e084015151156111d5576111d582875f015186611cb4565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b590612413565b5f60035460016112159190612b4a565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b590612a9d565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612730565b80836040516020016112b791906129af565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906129c1565b5f6112fb6080850160608601612111565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612111565b6113cb60e0870187612fa4565b6040516024016113de9493929190612fe6565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612111565b5a84611de3565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611dfa565b505050565b805460018201545f916105fc91613010565b60605f611520600561151b856114f8565b611e5b565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b038111156115855761158561249d565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611e70565b8282815181106115f1576115f1612b5d565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f90613023565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac919061303b565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612ae2565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b6908890869061304d565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e8908690600401612a8b565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182891906123fc565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612b4a565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196291906123fc565b90506119796001600160a01b038516333086611f3a565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e191906123fc565b9050818111611a475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611a518282613010565b95945050505050565b5f81515f03611a6b575060016105fc565b81515f5b81811015611abc57846001600160a01b0316848281518110611a9357611a93612b5d565b60200260200101516001600160a01b031603611ab4576001925050506105fc565b600101611a6f565b505f949350505050565b805f03611b255760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f611b458484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b9b575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c01908490612b4a565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c4b919061305f565b60405180910390a45050505050565b600182018054829160028501915f9182611c7383613023565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d165760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611d36576114f3838383611f79565b602081015160e08201516040515f92611d5392869260240161307f565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d97919084611de3565b905080611db057611da9858585611f79565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611e0e6001600160a01b03841683611fed565b905080515f14158015611e32575080806020019051810190611e3091906130a8565b155b156114f357604051635274afe760e01b81526001600160a01b03841660048201526024016104b5565b5f818310611e6957816108af565b5090919050565b604080518082019091525f808252602082015281546001830154819003611ed95760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f30908390612b4a565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611f739186918216906323b872dd906084016114c1565b50505050565b80604051602001611f8a919061303b565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fe090859061303b565b60405180910390a3505050565b60606108af83835f845f80856001600160a01b0316848660405161201191906130c1565b5f6040518083038185875af1925050503d805f811461204b576040519150601f19603f3d011682016040523d82523d5f602084013e612050565b606091505b509150915061206086838361206a565b9695505050505050565b60608261207f5761207a826120c6565b6108af565b815115801561209657506001600160a01b0384163b155b156120bf57604051639996b31560e01b81526001600160a01b03851660048201526024016104b5565b50806108af565b8051156120d65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146120ef575f80fd5b80356104ee816120f2565b5f60208284031215612121575f80fd5b81356108af816120f2565b5f6020828403121561213c575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f6020828403121561217a575f80fd5b81356001600160401b0381111561218f575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156121b1575f80fd5b50919050565b5f602082840312156121c7575f80fd5b81356001600160401b038111156121dc575f80fd5b611222848285016121a0565b5f80604083850312156121f9575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f6060848603121561223a575f80fd5b83359250602084013561224c816120f2565b929592945050506040919091013590565b5f805f6060848603121561226f575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612296575f80fd5b5081356001600160401b038111156122ac575f80fd5b6020830191508360208260051b85010111156122c6575f80fd5b9250929050565b5f805f805f8086880360a08112156122e3575f80fd5b8735965060208801356001600160401b0380821115612300575f80fd5b61230c8b838c01612286565b90985096508691506040603f1984011215612325575f80fd5b60408a01955060808a013592508083111561233e575f80fd5b505061234c89828a01612286565b979a9699509497509295939492505050565b5f806040838503121561236f575f80fd5b823561237a816120f2565b9150602083013561238a816120f2565b809150509250929050565b5f80604083850312156123a6575f80fd5b823563ffffffff8116811461237a575f80fd5b5f80604083850312156123ca575f80fd5b8235915060208301356001600160401b038111156123e6575f80fd5b6123f2858286016121a0565b9150509250929050565b5f6020828403121561240c575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124d3576124d361249d565b60405290565b60405160c081016001600160401b03811182821017156124d3576124d361249d565b60405161010081016001600160401b03811182821017156124d3576124d361249d565b604051601f8201601f191681016001600160401b03811182821017156125465761254661249d565b604052919050565b5f6040828403121561255e575f80fd5b6125666124b1565b90508135612573816120f2565b808252506020820135602082015292915050565b5f6001600160401b0382111561259f5761259f61249d565b5060051b60200190565b5f82601f8301126125b8575f80fd5b813560206125cd6125c883612587565b61251e565b8083825260208201915060208460051b8701019350868411156125ee575f80fd5b602086015b84811015612613578035612606816120f2565b83529183019183016125f3565b509695505050505050565b5f6001600160401b038211156126365761263661249d565b50601f01601f191660200190565b5f82601f830112612653575f80fd5b81356126616125c88261261e565b818152846020838601011115612675575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156126a1575f80fd5b6126a96124d9565b823581526126b960208401612106565b60208201526126cb366040850161254e565b60408201526080830135606082015260a08301356001600160401b03808211156126f3575f80fd5b6126ff368387016125a9565b608084015260c0850135915080821115612717575f80fd5b5061272436828601612644565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e1984360301811261278b575f80fd5b83016020810192503590506001600160401b038111156127a9575f80fd5b8060051b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f65781356127db816120f2565b6001600160a01b0316875295820195908201906001016127c8565b509495945050505050565b5f808335601e19843603018112612816575f80fd5b83016020810192503590506001600160401b03811115612834575f80fd5b8060061b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f657813587528282013561286c816120f2565b6001600160a01b0316878401526040968701969190910190600101612853565b5f808335601e198436030181126128a1575f80fd5b83016020810192503590506001600160401b038111156128bf575f80fd5b8036038213156122c6575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561290b816120f2565b6001600160a01b031660208501526040838101359085015261292f60608401612106565b6001600160a01b031660608501526080838101359085015261295460a0840184612776565b8260a087015261296783870182846127ba565b9250505061297860c0840184612801565b85830360c087015261298b838284612845565b9250505061299c60e084018461288c565b85830360e08701526120608382846128cd565b602081525f6108af60208301846128f5565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a1c60608301856128f5565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f5b83811015612a58578181015183820152602001612a40565b50505f910152565b5f8151808452612a77816020860160208601612a3e565b601f01601f19169290920160200192915050565b602081525f6108af6020830184612a60565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612b36565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612b81575f80fd5b6108af838361254e565b80516104ee816120f2565b5f82601f830112612ba5575f80fd5b8151612bb36125c88261261e565b818152846020838601011115612bc7575f80fd5b611222826020830160208701612a3e565b805180151581146104ee575f80fd5b5f8060408385031215612bf8575f80fd5b82516001600160401b0380821115612c0e575f80fd5b9084019060608287031215612c21575f80fd5b604051606081018181108382111715612c3c57612c3c61249d565b604052825181526020830151612c51816120f2565b6020820152604083015182811115612c67575f80fd5b612c7388828601612b96565b6040830152509350612c8a91505060208401612bd8565b90509250929050565b5f82601f830112612ca2575f80fd5b81516020612cb26125c883612587565b8083825260208201915060208460051b870101935086841115612cd3575f80fd5b602086015b84811015612613578051612ceb816120f2565b8352918301918301612cd8565b5f82601f830112612d07575f80fd5b81516020612d176125c883612587565b82815260069290921b84018101918181019086841115612d35575f80fd5b8286015b848110156126135760408189031215612d50575f80fd5b612d586124b1565b8151815284820151612d69816120f2565b81860152835291830191604001612d39565b5f60208284031215612d8b575f80fd5b81516001600160401b0380821115612da1575f80fd5b908301906101008286031215612db5575f80fd5b612dbd6124fb565b82518152612dcd60208401612b8b565b602082015260408301516040820152612de860608401612b8b565b60608201526080830151608082015260a083015182811115612e08575f80fd5b612e1487828601612c93565b60a08301525060c083015182811115612e2b575f80fd5b612e3787828601612cf8565b60c08301525060e083015182811115612e4e575f80fd5b612e5a87828601612b96565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b838110156127f65781516001600160a01b031687529582019590820190600101612e7c565b5f815180845260208085019450602084015f5b838110156127f657612eda878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612eb4565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f2b60608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f4d82860182612e69565b91505060c083015184820360c0860152612f678282612ea1565b91505060e083015184820360e0860152611a518282612a60565b6001600160a01b03831681526040602082018190525f9061122290830184612eed565b5f808335601e19843603018112612fb9575f80fd5b8301803591506001600160401b03821115612fd2575f80fd5b6020019150368190038213156122c6575f80fd5b8481526001600160a01b03841660208201526060604082018190525f9061206090830184866128cd565b818103818111156105fc576105fc612b36565b5f6001820161303457613034612b36565b5060010190565b602081525f6108af6020830184612eed565b606081525f612a1c6060830185612eed565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90611a5190830184612a60565b5f602082840312156130b8575f80fd5b6108af82612bd8565b5f82516130d2818460208701612a3e565b919091019291505056fea2646970667358221220fd03902031337abdc8de400f99ee880fd9e0f4a12687daaae4c9c3451e31d2f164736f6c63430008190033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go index 3b56a4b25..fd07be11f 100644 --- a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go @@ -2311,7 +2311,7 @@ func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Lo // TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. var TeleporterRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561000f575f80fd5b50604051610fca380380610fca83398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610a9f61052b5f395f818161014301526102580152610a9f5ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f8083604001518060200190518101906103679190610988565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a01565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a01565b5f546106656101f482610a4a565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b808286018386015e5f8282860101525082604083015281955061097b81880161088b565b9450505050509250929050565b5f80828403606081121561099a575f80fd5b60408112156109a7575f80fd5b506040516040810181811067ffffffffffffffff821117156109cb576109cb61081d565b6040528351815260208401516109e0816107eb565b602082015260408401519092506109f6816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220fe036b8dd4c0898f583fa51960ec46bcf6307508fd784944cdf1ccf51969ca8564736f6c63430008190033", + Bin: "0x60a060405234801561000f575f80fd5b50604051610fe0380380610fe083398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610ab561052b5f395f818161014301526102580152610ab55ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061099e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a17565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a17565b5f546106656101f482610a60565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b5f5b81811015610974578581018301518582018401528201610959565b505f8282860101525082604083015281955061099181880161088b565b9450505050509250929050565b5f8082840360608112156109b0575f80fd5b60408112156109bd575f80fd5b506040516040810181811067ffffffffffffffff821117156109e1576109e161081d565b6040528351815260208401516109f6816107eb565b60208201526040840151909250610a0c816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d834a6d51f424d8a88e00a9517be4131ff5dd55e9fa58841c7ed9b321be4b52a64736f6c63430008190033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go index 327807001..7c9727812 100644 --- a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go +++ b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go @@ -85,7 +85,7 @@ type WarpMessage struct { // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", } // AddressABI is the input ABI used to generate the binding from. @@ -4871,7 +4871,7 @@ func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInit // SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. var SafeERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e48ef8e82df1e4ab3740b521e288cd30c92658d43bcfb55e7af86b1ffa4abbe764736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122044774e8ae9cb3b510a51dacb03d3b3d6bee0ee00ebb240bae28efc962ab9298a64736f6c63430008190033", } // SafeERC20ABI is the input ABI used to generate the binding from. @@ -5044,7 +5044,7 @@ func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, meth // SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. var SafeERC20TransferFromMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dea7663bfe09d842906ec54ac6ab1cd0020f81907f7f5a8537ec9ddc8aa8260864736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206a67e765459c7c24f187543272046fd3214ad556da06c492ce0a4aee92d9549264736f6c63430008190033", } // SafeERC20TransferFromABI is the input ABI used to generate the binding from. @@ -5217,7 +5217,7 @@ func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts // TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. var TeleporterRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561000f575f80fd5b50604051610fca380380610fca83398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610a9f61052b5f395f818161014301526102580152610a9f5ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f8083604001518060200190518101906103679190610988565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a01565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a01565b5f546106656101f482610a4a565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b808286018386015e5f8282860101525082604083015281955061097b81880161088b565b9450505050509250929050565b5f80828403606081121561099a575f80fd5b60408112156109a7575f80fd5b506040516040810181811067ffffffffffffffff821117156109cb576109cb61081d565b6040528351815260208401516109e0816107eb565b602082015260408401519092506109f6816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220fe036b8dd4c0898f583fa51960ec46bcf6307508fd784944cdf1ccf51969ca8564736f6c63430008190033", + Bin: "0x60a060405234801561000f575f80fd5b50604051610fe0380380610fe083398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610ab561052b5f395f818161014301526102580152610ab55ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061099e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a17565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a17565b5f546106656101f482610a60565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b5f5b81811015610974578581018301518582018401528201610959565b505f8282860101525082604083015281955061099181880161088b565b9450505050509250929050565b5f8082840360608112156109b0575f80fd5b60408112156109bd575f80fd5b506040516040810181811067ffffffffffffffff821117156109e1576109e161081d565b6040528351815260208401516109f6816107eb565b60208201526040840151909250610a0c816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d834a6d51f424d8a88e00a9517be4131ff5dd55e9fa58841c7ed9b321be4b52a64736f6c63430008190033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. @@ -8028,7 +8028,7 @@ func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgr // TestMessengerMetaData contains all meta data concerning the TestMessenger contract. var TestMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ReceiveMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getCurrentMessage\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161200938038061200983398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611fe9833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611fe983398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b61195e8061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e5780639731429714610159578063b33fead41461017c578063c868efaa1461019d578063d2cc7a70146101b0578063f2fde38b146101d7578063f63d09d7146101ea575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610137575b5f80fd5b6100c86100c3366004611335565b6101fd565b005b6100c86100d8366004611335565b6102ff565b6100c86100eb366004611350565b6103ee565b6100c8610402565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014b5f8051602061190983398151915281565b60405190815260200161012e565b61016c610167366004611335565b610415565b604051901515815260200161012e565b61018f61018a366004611350565b610435565b60405161012e929190611395565b6100c86101ab366004611405565b610507565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d025461014b565b6100c86101e5366004611335565b6106e5565b61014b6101f836600461145d565b61071f565b5f8051602061190983398151915261021361087b565b6001600160a01b0382166102425760405162461bcd60e51b8152600401610239906114dd565b60405180910390fd5b61024c8183610883565b156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610239565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061190983398151915261031561087b565b6001600160a01b03821661033b5760405162461bcd60e51b8152600401610239906114dd565b6103458183610883565b6103a35760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610239565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103f661087b565b6103ff816108a7565b50565b61040a610a3f565b6104135f610a9a565b565b5f5f8051602061190983398151915261042e8184610883565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104729061152b565b80601f016020809104026020016040519081016040528092919081815260200182805461049e9061152b565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b61050f610b0a565b5f5f8051602061190983398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e9190611563565b10156106055760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610239565b61060f8133610883565b156106755760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610239565b6106b5858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b5492505050565b506106df60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6106ed610a3f565b6001600160a01b03811661071657604051631e4fbdf760e01b81525f6004820152602401610239565b6103ff81610a9a565b5f610728610b0a565b5f851561073c576107398787610c09565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca898489898960405161077e9594939291906115a2565b60405180910390a36108446040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107eb576107eb6115cf565b604051908082528060200260200182016040528015610814578160200160208202803683370190505b508152602001868660405160200161082d9291906115e3565b604051602081830303815290604052815250610d6b565b91505061087060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610413610a3f565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f8051602061190983398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611563565b6002830154909150818411156109915760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610239565b808411610a065760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610239565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a717f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104135760405163118cdaa760e01b8152336004820152602401610239565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b4e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b6991906115f6565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610bbd90826116ec565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bfb91906117ac565b60405180910390a350505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c739190611563565b9050610c8a6001600160a01b038516333086610e86565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf29190611563565b9050818111610d585760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610239565b610d6282826117d2565b95945050505050565b5f80610d75610eed565b60408401516020015190915015610e1a576040830151516001600160a01b0316610df75760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610239565b604083015160208101519051610e1a916001600160a01b03909116908390610fdd565b604051630624488560e41b81526001600160a01b03821690636244885090610e46908690600401611828565b6020604051808303815f875af1158015610e62573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e9190611563565b6040516001600160a01b0384811660248301528381166044830152606482018390526106df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611064565b5f8051602061190983398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b91906118a5565b9050610f778282610883565b156108a15760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610239565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104e9190611563565b90506106df848461105f85856118c0565b6110ca565b5f6110786001600160a01b03841683611159565b905080515f1415801561109c57508080602001905181019061109a91906118d3565b155b156110c557604051635274afe760e01b81526001600160a01b0384166004820152602401610239565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261111b8482611166565b6106df576040516001600160a01b0384811660248301525f604483015261114f91869182169063095ea7b390606401610ebb565b6106df8482611064565b606061042e83835f611203565b5f805f846001600160a01b03168460405161118191906118f2565b5f604051808303815f865af19150503d805f81146111ba576040519150601f19603f3d011682016040523d82523d5f602084013e6111bf565b606091505b50915091508180156111e95750805115806111e95750808060200190518101906111e991906118d3565b8015610d625750505050506001600160a01b03163b151590565b6060814710156112285760405163cd78605960e01b8152306004820152602401610239565b5f80856001600160a01b0316848660405161124391906118f2565b5f6040518083038185875af1925050503d805f811461127d576040519150601f19603f3d011682016040523d82523d5f602084013e611282565b606091505b509150915061129286838361129c565b9695505050505050565b6060826112b1576112ac826112f8565b61042e565b81511580156112c857506001600160a01b0384163b155b156112f157604051639996b31560e01b81526001600160a01b0385166004820152602401610239565b508061042e565b8051156113085780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103ff575f80fd5b5f60208284031215611345575f80fd5b813561042e81611321565b5f60208284031215611360575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f906113b890830184611367565b949350505050565b5f8083601f8401126113d0575f80fd5b50813567ffffffffffffffff8111156113e7575f80fd5b6020830191508360208285010111156113fe575f80fd5b9250929050565b5f805f8060608587031215611418575f80fd5b84359350602085013561142a81611321565b9250604085013567ffffffffffffffff811115611445575f80fd5b611451878288016113c0565b95989497509550505050565b5f805f805f805f60c0888a031215611473575f80fd5b87359650602088013561148581611321565b9550604088013561149581611321565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114be575f80fd5b6114ca8a828b016113c0565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061153f57607f821691505b60208210810361155d57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611573575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f61087060808301848661157a565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113b860208301848661157a565b5f60208284031215611606575f80fd5b815167ffffffffffffffff8082111561161d575f80fd5b818401915084601f830112611630575f80fd5b815181811115611642576116426115cf565b604051601f8201601f19908116603f0116810190838211818310171561166a5761166a6115cf565b81604052828152876020848701011115611682575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b601f8211156110c557805f5260205f20601f840160051c810160208510156116c65750805b601f840160051c820191505b818110156116e5575f81556001016116d2565b5050505050565b815167ffffffffffffffff811115611706576117066115cf565b61171a81611714845461152b565b846116a1565b602080601f83116001811461174d575f84156117365750858301515b5f19600386901b1c1916600185901b1785556117a4565b5f85815260208120601f198616915b8281101561177b5788860151825594840194600190910190840161175c565b508582101561179857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f61042e6020830184611367565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a1576108a16117be565b5f815180845260208085019450602084015f5b8381101561181d5781516001600160a01b0316875295820195908201906001016117f8565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526118886101008401826117e5565b905060a0840151601f198483030160e0850152610d628282611367565b5f602082840312156118b5575f80fd5b815161042e81611321565b808201808211156108a1576108a16117be565b5f602082840312156118e3575f80fd5b8151801515811461042e575f80fd5b5f82518060208501845e5f92019182525091905056fede77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220389ead4b0c6aa3d5593af182bbf3ee37a0e6bee5af7a4e03713c21a110edfcaf64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", + Bin: "0x608060405234801561000f575f80fd5b5060405161201f38038061201f83398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611fff833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611fff83398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b6119748061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e5780639731429714610159578063b33fead41461017c578063c868efaa1461019d578063d2cc7a70146101b0578063f2fde38b146101d7578063f63d09d7146101ea575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610137575b5f80fd5b6100c86100c3366004611335565b6101fd565b005b6100c86100d8366004611335565b6102ff565b6100c86100eb366004611350565b6103ee565b6100c8610402565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014b5f8051602061191f83398151915281565b60405190815260200161012e565b61016c610167366004611335565b610415565b604051901515815260200161012e565b61018f61018a366004611350565b610435565b60405161012e9291906113b4565b6100c86101ab366004611424565b610507565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d025461014b565b6100c86101e5366004611335565b6106e5565b61014b6101f836600461147c565b61071f565b5f8051602061191f83398151915261021361087b565b6001600160a01b0382166102425760405162461bcd60e51b8152600401610239906114fc565b60405180910390fd5b61024c8183610883565b156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610239565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061191f83398151915261031561087b565b6001600160a01b03821661033b5760405162461bcd60e51b8152600401610239906114fc565b6103458183610883565b6103a35760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610239565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103f661087b565b6103ff816108a7565b50565b61040a610a3f565b6104135f610a9a565b565b5f5f8051602061191f83398151915261042e8184610883565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104729061154a565b80601f016020809104026020016040519081016040528092919081815260200182805461049e9061154a565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b61050f610b0a565b5f5f8051602061191f83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e9190611582565b10156106055760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610239565b61060f8133610883565b156106755760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610239565b6106b5858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b5492505050565b506106df60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6106ed610a3f565b6001600160a01b03811661071657604051631e4fbdf760e01b81525f6004820152602401610239565b6103ff81610a9a565b5f610728610b0a565b5f851561073c576107398787610c09565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca898489898960405161077e9594939291906115c1565b60405180910390a36108446040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107eb576107eb6115ee565b604051908082528060200260200182016040528015610814578160200160208202803683370190505b508152602001868660405160200161082d929190611602565b604051602081830303815290604052815250610d6b565b91505061087060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610413610a3f565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f8051602061191f83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611582565b6002830154909150818411156109915760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610239565b808411610a065760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610239565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a717f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104135760405163118cdaa760e01b8152336004820152602401610239565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b4e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b699190611615565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610bbd90826116fd565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bfb91906117bd565b60405180910390a350505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c739190611582565b9050610c8a6001600160a01b038516333086610e86565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf29190611582565b9050818111610d585760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610239565b610d6282826117e3565b95945050505050565b5f80610d75610eed565b60408401516020015190915015610e1a576040830151516001600160a01b0316610df75760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610239565b604083015160208101519051610e1a916001600160a01b03909116908390610fdd565b604051630624488560e41b81526001600160a01b03821690636244885090610e46908690600401611839565b6020604051808303815f875af1158015610e62573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e9190611582565b6040516001600160a01b0384811660248301528381166044830152606482018390526106df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611064565b5f8051602061191f83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b91906118b6565b9050610f778282610883565b156108a15760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610239565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104e9190611582565b90506106df848461105f85856118d1565b6110ca565b5f6110786001600160a01b03841683611159565b905080515f1415801561109c57508080602001905181019061109a91906118e4565b155b156110c557604051635274afe760e01b81526001600160a01b0384166004820152602401610239565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261111b8482611166565b6106df576040516001600160a01b0384811660248301525f604483015261114f91869182169063095ea7b390606401610ebb565b6106df8482611064565b606061042e83835f611203565b5f805f846001600160a01b0316846040516111819190611903565b5f604051808303815f865af19150503d805f81146111ba576040519150601f19603f3d011682016040523d82523d5f602084013e6111bf565b606091505b50915091508180156111e95750805115806111e95750808060200190518101906111e991906118e4565b8015610d625750505050506001600160a01b03163b151590565b6060814710156112285760405163cd78605960e01b8152306004820152602401610239565b5f80856001600160a01b031684866040516112439190611903565b5f6040518083038185875af1925050503d805f811461127d576040519150601f19603f3d011682016040523d82523d5f602084013e611282565b606091505b509150915061129286838361129c565b9695505050505050565b6060826112b1576112ac826112f8565b61042e565b81511580156112c857506001600160a01b0384163b155b156112f157604051639996b31560e01b81526001600160a01b0385166004820152602401610239565b508061042e565b8051156113085780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103ff575f80fd5b5f60208284031215611345575f80fd5b813561042e81611321565b5f60208284031215611360575f80fd5b5035919050565b5f5b83811015611381578181015183820152602001611369565b50505f910152565b5f81518084526113a0816020860160208601611367565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190525f906113d790830184611389565b949350505050565b5f8083601f8401126113ef575f80fd5b50813567ffffffffffffffff811115611406575f80fd5b60208301915083602082850101111561141d575f80fd5b9250929050565b5f805f8060608587031215611437575f80fd5b84359350602085013561144981611321565b9250604085013567ffffffffffffffff811115611464575f80fd5b611470878288016113df565b95989497509550505050565b5f805f805f805f60c0888a031215611492575f80fd5b8735965060208801356114a481611321565b955060408801356114b481611321565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114dd575f80fd5b6114e98a828b016113df565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061155e57607f821691505b60208210810361157c57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611592575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f610870608083018486611599565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113d7602083018486611599565b5f60208284031215611625575f80fd5b815167ffffffffffffffff8082111561163c575f80fd5b818401915084601f83011261164f575f80fd5b815181811115611661576116616115ee565b604051601f8201601f19908116603f01168101908382118183101715611689576116896115ee565b816040528281528760208487010111156116a1575f80fd5b610870836020830160208801611367565b601f8211156110c557805f5260205f20601f840160051c810160208510156116d75750805b601f840160051c820191505b818110156116f6575f81556001016116e3565b5050505050565b815167ffffffffffffffff811115611717576117176115ee565b61172b81611725845461154a565b846116b2565b602080601f83116001811461175e575f84156117475750858301515b5f19600386901b1c1916600185901b1785556117b5565b5f85815260208120601f198616915b8281101561178c5788860151825594840194600190910190840161176d565b50858210156117a957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f61042e6020830184611389565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a1576108a16117cf565b5f815180845260208085019450602084015f5b8381101561182e5781516001600160a01b031687529582019590820190600101611809565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526118996101008401826117f6565b905060a0840151601f198483030160e0850152610d628282611389565b5f602082840312156118c6575f80fd5b815161042e81611321565b808201808211156108a1576108a16117cf565b5f602082840312156118f4575f80fd5b8151801515811461042e575f80fd5b5f8251611914818460208701611367565b919091019291505056fede77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212205c2207a0ee4c1d8f78cf59b9c0781b988596a0fdf60206309e09e794973338db64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // TestMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 9271a8ed8..53add587a 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -116,7 +116,7 @@ type WarpMessage struct { // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", } // AddressABI is the input ABI used to generate the binding from. @@ -574,7 +574,7 @@ func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log type // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615ce9380380615ce983398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615b9c8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638280a25a11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b80638280a25a1461037f57806393e245981461038757806398f3e2b41461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360305d621161016557806360305d6214610322578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee5780635297fae61461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b61021461031d366004614d2b565b610f4f565b61032a601481565b60405163ffffffff909116815260200161023f565b61030161034d366004614d53565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b610231603081565b610214610395366004614c00565b61129d565b6102146103a8366004614d2b565b611368565b6103016103bb366004614d6e565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615ac783398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615ae783398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614de4565b6102946202a30081565b6103015f80516020615aa783398151915281565b61021461049b366004614e78565b611cc5565b6103016104ae366004614eb6565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b478339815191526020526040808220815160e0810190925280545f80516020615ae783398151915293929190829060ff16600581111561053557610535614d8e565b600581111561054657610546614d8e565b815260200160018201805461055a90614f21565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f21565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d8e565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d919081019061506d565b6040518263ffffffff1660e01b8152600401610729919061509e565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076991906150b0565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615ae78339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083391906150b0565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150c7565b6001600160a01b0316146108b05761088b60608401604085016150c7565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150e2565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150e2565b8363ffffffff168181106108f7576108f7615127565b9050602002810190610909919061513b565b610912906151a6565b80516040519192505f91600888019161092a91615221565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da919060040161509e565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391615221565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e191906150b0565b90508086600801835f01516040516109f99190615221565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d8e565b021790555060208201516001820190610a94908261527b565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b3991168561534a565b8251604051919550610b4a91615221565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f9061535d565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff168361537f565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c30919061509e565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f91906150b0565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154c1565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea919081019061506d565b90505f600282604051610cfd9190615221565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b91906150b0565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d8e565b14610dea578060405163170cc93360e21b81526004016104da9190614f59565b61076983836122a8565b5f805f80516020615ac783398151915260030154610e12908461554c565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615ac78339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d8e565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b2783398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b2783398151915255565b949350505050565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff166003811115610f9c57610f9c614d8e565b6003811115610fad57610fad614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d8e565b1461105b578251604051633b0d540d60e21b81526104da919060040161556b565b60048151600581111561107057611070614d8e565b036110865761107e85612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab8a612157565b604001516040518263ffffffff1660e01b81526004016110cb919061509e565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190615585565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b03841661537f565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b5f80516020615ac78339815191525f6112b583611b76565b51905060048160058111156112cc576112cc614d8e565b146112ec578060405163170cc93360e21b81526004016104da9190614f59565b5f8381526005830160205260409020546001600160a01b0316331461133257335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b61137061277a565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff1660038111156113bd576113bd614d8e565b60038111156113ce576113ce614d8e565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561144757611447614d8e565b14611468578051604051633b0d540d60e21b81526104da919060040161556b565b60046114778260400151611b76565b51600581111561148957611489614d8e565b14611588575f61149885612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016114d7919061509e565b606060405180830381865af41580156114f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115169190615585565b5091509150818460400151146115425760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561158457604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61159183612de9565b50506115a960015f80516020615b2783398151915255565b5050565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b2783398151915255565b5f80516020615ae78339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c919061509e565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155c5565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f21565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d8e565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff16600381111561181b5761181b614d8e565b600381111561182c5761182c614d8e565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d8e565b141580156118c657506003815160038111156118c3576118c3614d8e565b14155b156118e7578051604051633b0d540d60e21b81526104da919060040161556b565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d6919081019061506d565b6040518263ffffffff1660e01b81526004016119f2919061509e565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3291906150b0565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615ae78339815191529190611a8090614f21565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d8e565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155e8565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906150b0565b611b7e614b4b565b5f8281525f80516020615b47833981519152602052604090819020815160e0810190925280545f80516020615ae7833981519152929190829060ff166005811115611bcb57611bcb614d8e565b6005811115611bdc57611bdc614d8e565b8152602001600182018054611bf090614f21565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f21565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615ae7833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615672565b90815260200160405180910390205491505092915050565b5f8381525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac78339815191529284929091829060ff166003811115611e4d57611e4d614d8e565b6003811115611e5e57611e5e614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d8e565b14611f0c578251604051633b0d540d60e21b81526104da919060040161556b565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f45573361130d565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615681565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d8e565b036120eb5760028401546080840151611fdf916001600160401b031690615681565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e91849161205991906156a1565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d8e565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f59565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156c1565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156c1565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a391906150b0565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b8152600401612442919061509e565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615751565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615ac7833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615ac7833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e6573361130d565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615681565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274491906150b0565b905080846008015f8a81526020019081526020015f205f828254612768919061534a565b90915550501515979650505050505050565b5f80516020615b278339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615ae78339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d919061509e565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155c5565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d8e565b60058111156128b4576128b4614d8e565b81526020016001820180546128c890614f21565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f21565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d8e565b141580156129cb57506001815160058111156129c8576129c8614d8e565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f59565b600381516005811115612a0157612a01614d8e565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a9190615221565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d8e565b021790555060208201516001820190612a87908261527b565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d8e565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615aa783398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615aa7833981519152546115a9906001600160a01b03168383613987565b60015f80516020615b2783398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615ac783398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615b078339815191526020526040808220815160e0810190925280545f80516020615ac783398151915293929190829060ff166003811115612e3657612e36614d8e565b6003811115612e4757612e47614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615681565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff168561537f565b612f9e919061554c565b915081866008015f8681526020019081526020015f205f828254612fc2919061534a565b90915550612fd290508284615774565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615ac78339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d8e565b146130c657805160405163170cc93360e21b81526104da9190600401614f59565b5f8282608001516130d79190615681565b905083600201600a9054906101000a90046001600160401b031682604001516131009190615787565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d8e565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6115a9816140b0565b5f8281525f80516020615b47833981519152602052604081206002015481905f80516020615ae783398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613451919081019061506d565b6040518263ffffffff1660e01b815260040161346d919061509e565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad91906150b0565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615ac783398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d8e565b148061355c575060048251600581111561355a5761355a614d8e565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d8e565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f59565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a91906150b0565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b478339815191526020526040808220815160e0810190925280545f80516020615ae783398151915293929190829060ff1660058111156136f8576136f8614d8e565b600581111561370957613709614d8e565b815260200160018201805461371d90614f21565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f21565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d8e565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f59565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d8e565b021790555060208201516001820190613892908261527b565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615aa7833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615ae783398151915242613a6c6060860160408701614d53565b6001600160401b0316111580613aa65750613a8a6202a3004261534a565b613a9a6060860160408701614d53565b6001600160401b031610155b15613ae057613abb6060850160408601614d53565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af060608601866157b2565b61456a565b613b05613af060808601866157b2565b6030613b1460208601866157c6565b905014613b4657613b2860208501856157c6565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157c6565b90505f03613b7d57613b6284806157c6565b604051633e08a12560e11b81526004016104da929190615808565b5f60088201613b8c86806157c6565b604051613b9a929190615672565b90815260200160405180910390205414613bd357613bb884806157c6565b60405163a41f772f60e01b81526004016104da929190615808565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157c6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157c6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d53565b6001600160401b03168152602001613cc660608b018b6157b2565b613ccf9061581b565b8152602001613ce160808b018b6157b2565b613cea9061581b565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d18919061593d565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d5991908101906159f4565b5f82815260068601602052604090209193509150613d77828261527b565b508160088401613d8788806157c6565b604051613d95929190615672565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd190859060040161509e565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1191906150b0565b6040805160e081019091529091508060018152602001613e3189806157c6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d8e565b021790555060208201516001820190613ed9908261527b565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157c6565b604051613f85929190615672565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d53565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d53565b61408260e0860160c08701615a37565b614093610100870160e08801615a50565b6101008701356140ab61014089016101208a016150c7565b6146fc565b6140b8613ff1565b5f80516020615aa78339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615ae78339815191525f6001600160401b03808416908516111561414c5761414583856156a1565b9050614159565b61415684846156a1565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b03169061534a565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615681565b6001600160401b03169052505b6060810151614210906064615787565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff1661537f565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b031681604001818151614286919061534a565b9052506040810180516001600160401b03871691906142a6908390615774565b905250600184015460408201516064916142cb91600160401b90910460ff169061537f565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b478339815191526020526040812060020180545f80516020615ae7833981519152919060089061438590600160401b90046001600160401b0316615a70565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a8b565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b91906150b0565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa91906150b0565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a8282615774565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150e2565b151590505b156145de576145a96020820182614c86565b6145b660208301836150e2565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150e2565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150e2565b90508110156115a95761463960208301836150e2565b614644600184615774565b81811061465357614653615127565b905060200201602081019061466891906150c7565b6001600160a01b031661467e60208401846150e2565b8381811061468e5761468e615127565b90506020020160208101906146a391906150c7565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615ac783398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615ae783398151915290815560146149336060840160408501615a50565b60ff161180614952575061494d6060830160408401615a50565b60ff16155b15614986576149676060830160408401615a50565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a50565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d53565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a369190615221565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f21565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f8060408385031215614d3c575f80fd5b614d4583614bad565b946020939093013593505050565b5f60208284031215614d63575f80fd5b813561215081614cb0565b5f8060408385031215614d7f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614db257614db2614d8e565b9052565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152614df6602082018351614da2565b5f602083015160e06040840152614e11610100840182614db6565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614e8b575f80fd5b61014080821215614e9a575f80fd5b8493508301359050614eab81614e64565b809150509250929050565b5f8060208385031215614ec7575f80fd5b82356001600160401b0380821115614edd575f80fd5b818501915085601f830112614ef0575f80fd5b813581811115614efe575f80fd5b866020828501011115614f0f575f80fd5b60209290920196919550909350505050565b600181811c90821680614f3557607f821691505b602082108103614f5357634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614da2565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614f9d57614f9d614f67565b60405290565b604080519081016001600160401b0381118282101715614f9d57614f9d614f67565b604051601f8201601f191681016001600160401b0381118282101715614fed57614fed614f67565b604052919050565b5f6001600160401b0382111561500d5761500d614f67565b50601f01601f191660200190565b5f82601f83011261502a575f80fd5b815161503d61503882614ff5565b614fc5565b818152846020838601011115615051575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561507d575f80fd5b81516001600160401b03811115615092575f80fd5b610f478482850161501b565b602081525f6121506020830184614db6565b5f602082840312156150c0575f80fd5b5051919050565b5f602082840312156150d7575f80fd5b813561215081614e64565b5f808335601e198436030181126150f7575f80fd5b8301803591506001600160401b03821115615110575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261514f575f80fd5b9190910192915050565b5f82601f830112615168575f80fd5b813561517661503882614ff5565b81815284602083860101111561518a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151b6575f80fd5b6151be614f7b565b82356001600160401b03808211156151d4575f80fd5b6151e036838701615159565b835260208501359150808211156151f5575f80fd5b5061520236828601615159565b602083015250604083013561521681614cb0565b604082015292915050565b5f82518060208501845e5f920191825250919050565b601f8211156104e357805f5260205f20601f840160051c8101602085101561525c5750805b601f840160051c820191505b81811015611a32575f8155600101615268565b81516001600160401b0381111561529457615294614f67565b6152a8816152a28454614f21565b84615237565b602080601f8311600181146152db575f84156152c45750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b82811015615309578886015182559484019460019091019084016152ea565b508582101561532657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e48615336565b5f63ffffffff80831681810361537557615375615336565b6001019392505050565b8082028115828204841417610e4857610e48615336565b5f808335601e198436030181126153ab575f80fd5b83016020810192503590506001600160401b038111156153c9575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154b457848303601f19018952813536889003605e1901811261543b575f80fd5b870160606154498280615396565b82875261545983880182846153d7565b9250505061546986830183615396565b8683038888015261547b8382846153d7565b92505050604080830135925061549083614cb0565b6001600160401b039290921694909101939093529783019790830190600101615416565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154e581614e64565b6001600160a01b031660608381019190915283013536849003601e1901811261550c575f80fd5b83016020810190356001600160401b03811115615527575f80fd5b8060051b3603821315615538575f80fd5b60808085015261369a60a0850182846153ff565b5f8261556657634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061557f5761557f614d8e565b91905290565b5f805f60608486031215615597575f80fd5b8351925060208401516155a981614cb0565b60408501519092506155ba81614cb0565b809150509250925092565b5f80604083850312156155d6575f80fd5b825191506020830151614eab81614ba0565b5f60208083525f84546155fa81614f21565b806020870152604060018084165f811461561b576001811461563757615664565b60ff19851660408a0152604084151560051b8a01019550615664565b895f5260205f205f5b8581101561565b5781548b8201860152908301908801615640565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561226657612266615336565b6001600160401b0382811682821603908082111561226657612266615336565b5f80604083850312156156d2575f80fd5b82516001600160401b03808211156156e8575f80fd5b90840190606082870312156156fb575f80fd5b615703614f7b565b82518152602083015161571581614e64565b602082015260408301518281111561572b575f80fd5b6157378882860161501b565b6040830152508094505050506020830151614eab81614ba0565b5f8060408385031215615762575f80fd5b825191506020830151614eab81614cb0565b81810381811115610e4857610e48615336565b6001600160401b038181168382160280821691908281146157aa576157aa615336565b505092915050565b5f8235603e1983360301811261514f575f80fd5b5f808335601e198436030181126157db575f80fd5b8301803591506001600160401b038211156157f4575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153d7565b5f6040823603121561582b575f80fd5b615833614fa3565b61583c83614bad565b81526020808401356001600160401b0380821115615858575f80fd5b9085019036601f83011261586a575f80fd5b81358181111561587c5761587c614f67565b8060051b915061588d848301614fc5565b81815291830184019184810190368411156158a6575f80fd5b938501935b838510156158d057843592506158c083614e64565b82825293850193908501906158ab565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b03168252938301936001929092019190830190615914565b60208152815160208201525f602083015160e06040840152615963610100840182614db6565b90506040840151601f19808584030160608601526159818383614db6565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159b183836158e2565b925060a08601519150808584030160c0860152506159cf82826158e2565b91505060c08401516159ec60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a05575f80fd5b8251915060208301516001600160401b03811115615a21575f80fd5b615a2d8582860161501b565b9150509250929050565b5f60208284031215615a47575f80fd5b61215082614c9f565b5f60208284031215615a60575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361537557615375615336565b5f60208284031215615a9b575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220a89ccdd4358b1dfe7e9960706f3b2feebe2bdc22264393e05dcb591ea6a0049b64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051615cf8380380615cf883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615bab8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638280a25a11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b80638280a25a1461037f57806393e245981461038757806398f3e2b41461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360305d621161016557806360305d6214610322578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee5780635297fae61461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b61021461031d366004614d2b565b610f4f565b61032a601481565b60405163ffffffff909116815260200161023f565b61030161034d366004614d53565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b610231603081565b610214610395366004614c00565b61129d565b6102146103a8366004614d2b565b611368565b6103016103bb366004614d6e565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615ad683398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615af683398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614e03565b6102946202a30081565b6103015f80516020615ab683398151915281565b61021461049b366004614e97565b611cc5565b6103016104ae366004614ed5565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff16600581111561053557610535614d8e565b600581111561054657610546614d8e565b815260200160018201805461055a90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f40565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d8e565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190615081565b6040518263ffffffff1660e01b815260040161072991906150b2565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076991906150c4565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615af68339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083391906150c4565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150db565b6001600160a01b0316146108b05761088b60608401604085016150db565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150f6565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150f6565b8363ffffffff168181106108f7576108f761513b565b9050602002810190610909919061514f565b610912906151ba565b80516040519192505f91600888019161092a91615235565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da91906004016150b2565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391615235565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e191906150c4565b90508086600801835f01516040516109f99190615235565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d8e565b021790555060208201516001820190610a94908261528a565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b39911685615359565b8251604051919550610b4a91615235565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f9061536c565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff168361538e565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c3091906150b2565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f91906150c4565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154d0565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea9190810190615081565b90505f600282604051610cfd9190615235565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b91906150c4565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d8e565b14610dea578060405163170cc93360e21b81526004016104da9190614f78565b61076983836122a8565b5f805f80516020615ad683398151915260030154610e12908461555b565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615ad68339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d8e565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b3683398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b3683398151915255565b949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115610f9c57610f9c614d8e565b6003811115610fad57610fad614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d8e565b1461105b578251604051633b0d540d60e21b81526104da919060040161557a565b60048151600581111561107057611070614d8e565b036110865761107e85612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab8a612157565b604001516040518263ffffffff1660e01b81526004016110cb91906150b2565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190615594565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b03841661538e565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b5f80516020615ad68339815191525f6112b583611b76565b51905060048160058111156112cc576112cc614d8e565b146112ec578060405163170cc93360e21b81526004016104da9190614f78565b5f8381526005830160205260409020546001600160a01b0316331461133257335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b61137061277a565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff1660038111156113bd576113bd614d8e565b60038111156113ce576113ce614d8e565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561144757611447614d8e565b14611468578051604051633b0d540d60e21b81526104da919060040161557a565b60046114778260400151611b76565b51600581111561148957611489614d8e565b14611588575f61149885612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016114d791906150b2565b606060405180830381865af41580156114f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115169190615594565b5091509150818460400151146115425760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561158457604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61159183612de9565b50506115a960015f80516020615b3683398151915255565b5050565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b3683398151915255565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c91906150b2565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155d4565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f40565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d8e565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff16600381111561181b5761181b614d8e565b600381111561182c5761182c614d8e565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d8e565b141580156118c657506003815160038111156118c3576118c3614d8e565b14155b156118e7578051604051633b0d540d60e21b81526104da919060040161557a565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d69190810190615081565b6040518263ffffffff1660e01b81526004016119f291906150b2565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3291906150c4565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615af68339815191529190611a8090614f40565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d8e565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155f7565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906150c4565b611b7e614b4b565b5f8281525f80516020615b56833981519152602052604090819020815160e0810190925280545f80516020615af6833981519152929190829060ff166005811115611bcb57611bcb614d8e565b6005811115611bdc57611bdc614d8e565b8152602001600182018054611bf090614f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f40565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615af6833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615681565b90815260200160405180910390205491505092915050565b5f8381525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad68339815191529284929091829060ff166003811115611e4d57611e4d614d8e565b6003811115611e5e57611e5e614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d8e565b14611f0c578251604051633b0d540d60e21b81526104da919060040161557a565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f45573361130d565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615690565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d8e565b036120eb5760028401546080840151611fdf916001600160401b031690615690565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e91849161205991906156b0565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d8e565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f78565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156d0565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156d0565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a391906150c4565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161244291906150b2565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615760565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615ad6833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615ad6833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e6573361130d565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615690565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274491906150c4565b905080846008015f8a81526020019081526020015f205f8282546127689190615359565b90915550501515979650505050505050565b5f80516020615b368339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d91906150b2565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155d4565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d8e565b60058111156128b4576128b4614d8e565b81526020016001820180546128c890614f40565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f40565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d8e565b141580156129cb57506001815160058111156129c8576129c8614d8e565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f78565b600381516005811115612a0157612a01614d8e565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a9190615235565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d8e565b021790555060208201516001820190612a87908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d8e565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615ab683398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615ab6833981519152546115a9906001600160a01b03168383613987565b60015f80516020615b3683398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615ad683398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115612e3657612e36614d8e565b6003811115612e4757612e47614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615690565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff168561538e565b612f9e919061555b565b915081866008015f8681526020019081526020015f205f828254612fc29190615359565b90915550612fd290508284615783565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615ad68339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d8e565b146130c657805160405163170cc93360e21b81526104da9190600401614f78565b5f8282608001516130d79190615690565b905083600201600a9054906101000a90046001600160401b031682604001516131009190615796565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d8e565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6115a9816140b0565b5f8281525f80516020615b56833981519152602052604081206002015481905f80516020615af683398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134519190810190615081565b6040518263ffffffff1660e01b815260040161346d91906150b2565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad91906150c4565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615ad683398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d8e565b148061355c575060048251600581111561355a5761355a614d8e565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d8e565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f78565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a91906150c4565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff1660058111156136f8576136f8614d8e565b600581111561370957613709614d8e565b815260200160018201805461371d90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f40565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d8e565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d8e565b021790555060208201516001820190613892908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615ab6833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615af683398151915242613a6c6060860160408701614d53565b6001600160401b0316111580613aa65750613a8a6202a30042615359565b613a9a6060860160408701614d53565b6001600160401b031610155b15613ae057613abb6060850160408601614d53565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af060608601866157c1565b61456a565b613b05613af060808601866157c1565b6030613b1460208601866157d5565b905014613b4657613b2860208501856157d5565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157d5565b90505f03613b7d57613b6284806157d5565b604051633e08a12560e11b81526004016104da929190615817565b5f60088201613b8c86806157d5565b604051613b9a929190615681565b90815260200160405180910390205414613bd357613bb884806157d5565b60405163a41f772f60e01b81526004016104da929190615817565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d53565b6001600160401b03168152602001613cc660608b018b6157c1565b613ccf9061582a565b8152602001613ce160808b018b6157c1565b613cea9061582a565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d18919061594c565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d599190810190615a03565b5f82815260068601602052604090209193509150613d77828261528a565b508160088401613d8788806157d5565b604051613d95929190615681565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd19085906004016150b2565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1191906150c4565b6040805160e081019091529091508060018152602001613e3189806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d8e565b021790555060208201516001820190613ed9908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157d5565b604051613f85929190615681565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d53565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d53565b61408260e0860160c08701615a46565b614093610100870160e08801615a5f565b6101008701356140ab61014089016101208a016150db565b6146fc565b6140b8613ff1565b5f80516020615ab68339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615af68339815191525f6001600160401b03808416908516111561414c5761414583856156b0565b9050614159565b61415684846156b0565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b031690615359565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615690565b6001600160401b03169052505b6060810151614210906064615796565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff1661538e565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b0316816040018181516142869190615359565b9052506040810180516001600160401b03871691906142a6908390615783565b905250600184015460408201516064916142cb91600160401b90910460ff169061538e565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b568339815191526020526040812060020180545f80516020615af6833981519152919060089061438590600160401b90046001600160401b0316615a7f565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a9a565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b91906150c4565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa91906150c4565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a8282615783565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150f6565b151590505b156145de576145a96020820182614c86565b6145b660208301836150f6565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150f6565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150f6565b90508110156115a95761463960208301836150f6565b614644600184615783565b8181106146535761465361513b565b905060200201602081019061466891906150db565b6001600160a01b031661467e60208401846150f6565b8381811061468e5761468e61513b565b90506020020160208101906146a391906150db565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615ad683398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615af683398151915290815560146149336060840160408501615a5f565b60ff161180614952575061494d6060830160408401615a5f565b60ff16155b15614986576149676060830160408401615a5f565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a5f565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d53565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a369190615235565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f40565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f8060408385031215614d3c575f80fd5b614d4583614bad565b946020939093013593505050565b5f60208284031215614d63575f80fd5b813561215081614cb0565b5f8060408385031215614d7f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614db257614db2614d8e565b9052565b5f5b83811015614dd0578181015183820152602001614db8565b50505f910152565b5f8151808452614def816020860160208601614db6565b601f01601f19169290920160200192915050565b60208152614e15602082018351614da2565b5f602083015160e06040840152614e30610100840182614dd8565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614eaa575f80fd5b61014080821215614eb9575f80fd5b8493508301359050614eca81614e83565b809150509250929050565b5f8060208385031215614ee6575f80fd5b82356001600160401b0380821115614efc575f80fd5b818501915085601f830112614f0f575f80fd5b813581811115614f1d575f80fd5b866020828501011115614f2e575f80fd5b60209290920196919550909350505050565b600181811c90821680614f5457607f821691505b602082108103614f7257634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614da2565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614fbc57614fbc614f86565b60405290565b604080519081016001600160401b0381118282101715614fbc57614fbc614f86565b604051601f8201601f191681016001600160401b038111828210171561500c5761500c614f86565b604052919050565b5f6001600160401b0382111561502c5761502c614f86565b50601f01601f191660200190565b5f82601f830112615049575f80fd5b815161505c61505782615014565b614fe4565b818152846020838601011115615070575f80fd5b610f47826020830160208701614db6565b5f60208284031215615091575f80fd5b81516001600160401b038111156150a6575f80fd5b610f478482850161503a565b602081525f6121506020830184614dd8565b5f602082840312156150d4575f80fd5b5051919050565b5f602082840312156150eb575f80fd5b813561215081614e83565b5f808335601e1984360301811261510b575f80fd5b8301803591506001600160401b03821115615124575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615163575f80fd5b9190910192915050565b5f82601f83011261517c575f80fd5b813561518a61505782615014565b81815284602083860101111561519e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151ca575f80fd5b6151d2614f9a565b82356001600160401b03808211156151e8575f80fd5b6151f43683870161516d565b83526020850135915080821115615209575f80fd5b506152163682860161516d565b602083015250604083013561522a81614cb0565b604082015292915050565b5f8251615163818460208701614db6565b601f8211156104e357805f5260205f20601f840160051c8101602085101561526b5750805b601f840160051c820191505b81811015611a32575f8155600101615277565b81516001600160401b038111156152a3576152a3614f86565b6152b7816152b18454614f40565b84615246565b602080601f8311600181146152ea575f84156152d35750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b82811015615318578886015182559484019460019091019084016152f9565b508582101561533557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e48615345565b5f63ffffffff80831681810361538457615384615345565b6001019392505050565b8082028115828204841417610e4857610e48615345565b5f808335601e198436030181126153ba575f80fd5b83016020810192503590506001600160401b038111156153d8575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154c357848303601f19018952813536889003605e1901811261544a575f80fd5b8701606061545882806153a5565b82875261546883880182846153e6565b92505050615478868301836153a5565b8683038888015261548a8382846153e6565b92505050604080830135925061549f83614cb0565b6001600160401b039290921694909101939093529783019790830190600101615425565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154f481614e83565b6001600160a01b031660608381019190915283013536849003601e1901811261551b575f80fd5b83016020810190356001600160401b03811115615536575f80fd5b8060051b3603821315615547575f80fd5b60808085015261369a60a08501828461540e565b5f8261557557634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061558e5761558e614d8e565b91905290565b5f805f606084860312156155a6575f80fd5b8351925060208401516155b881614cb0565b60408501519092506155c981614cb0565b809150509250925092565b5f80604083850312156155e5575f80fd5b825191506020830151614eca81614ba0565b5f60208083525f845461560981614f40565b806020870152604060018084165f811461562a576001811461564657615673565b60ff19851660408a0152604084151560051b8a01019550615673565b895f5260205f205f5b8581101561566a5781548b820186015290830190880161564f565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561226657612266615345565b6001600160401b0382811682821603908082111561226657612266615345565b5f80604083850312156156e1575f80fd5b82516001600160401b03808211156156f7575f80fd5b908401906060828703121561570a575f80fd5b615712614f9a565b82518152602083015161572481614e83565b602082015260408301518281111561573a575f80fd5b6157468882860161503a565b6040830152508094505050506020830151614eca81614ba0565b5f8060408385031215615771575f80fd5b825191506020830151614eca81614cb0565b81810381811115610e4857610e48615345565b6001600160401b038181168382160280821691908281146157b9576157b9615345565b505092915050565b5f8235603e19833603018112615163575f80fd5b5f808335601e198436030181126157ea575f80fd5b8301803591506001600160401b03821115615803575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153e6565b5f6040823603121561583a575f80fd5b615842614fc2565b61584b83614bad565b81526020808401356001600160401b0380821115615867575f80fd5b9085019036601f830112615879575f80fd5b81358181111561588b5761588b614f86565b8060051b915061589c848301614fe4565b81815291830184019184810190368411156158b5575f80fd5b938501935b838510156158df57843592506158cf83614e83565b82825293850193908501906158ba565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b03168252938301936001929092019190830190615923565b60208152815160208201525f602083015160e06040840152615972610100840182614dd8565b90506040840151601f19808584030160608601526159908383614dd8565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159c083836158f1565b925060a08601519150808584030160c0860152506159de82826158f1565b91505060c08401516159fb60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a14575f80fd5b8251915060208301516001600160401b03811115615a30575f80fd5b615a3c8582860161503a565b9150509250929050565b5f60208284031215615a56575f80fd5b61215082614c9f565b5f60208284031215615a6f575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361538457615384615345565b5f60208284031215615aaa575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212204ca9a50194199189e26dc263d6e7a3864a5bf7568967035b043b2c1b9f3f56a064736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -14442,7 +14442,7 @@ func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInit // SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. var SafeERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e48ef8e82df1e4ab3740b521e288cd30c92658d43bcfb55e7af86b1ffa4abbe764736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122044774e8ae9cb3b510a51dacb03d3b3d6bee0ee00ebb240bae28efc962ab9298a64736f6c63430008190033", } // SafeERC20ABI is the input ABI used to generate the binding from. @@ -14615,7 +14615,7 @@ func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, meth // SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. var SafeERC20TransferFromMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dea7663bfe09d842906ec54ac6ab1cd0020f81907f7f5a8537ec9ddc8aa8260864736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206a67e765459c7c24f187543272046fd3214ad556da06c492ce0a4aee92d9549264736f6c63430008190033", } // SafeERC20TransferFromABI is the input ABI used to generate the binding from. @@ -16415,7 +16415,7 @@ func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(lo // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x6120f3610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e19190611982565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119b6565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e53660046119ef565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611a8b565b610255610250366004611c26565b61154a565b6040516100e1929190611d22565b610145610271366004611d3a565b611737565b610145610284366004611d64565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611daa565b6102e6906008611dbd565b61ffff168582815181106102fc576102fc611dd4565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611daa565b61035f906008611dbd565b63ffffffff1686610371836002611de8565b8151811061038157610381611dd4565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611daa565b6103e0906008611dbd565b876103ec836006611de8565b815181106103fc576103fc611dd4565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611daa565b610436906008611dbd565b6001600160401b03168861044b836026611de8565b8151811061045b5761045b611dd4565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611daa565b6104d6906008611dbd565b61ffff168482815181106104ec576104ec611dd4565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611daa565b61054f906008611dbd565b63ffffffff1685610561836002611de8565b8151811061057157610571611dd4565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611daa565b6105d0906008611dbd565b866105dc836006611de8565b815181106105ec576105ec611dd4565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611daa565b610664906008611dbd565b61ffff1685828151811061067a5761067a611dd4565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611daa565b6106dd906008611dbd565b63ffffffff16866106ef836002611de8565b815181106106ff576106ff611dd4565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611daa565b610760906008611dbd565b8761076c836006611de8565b8151811061077c5761077c611dd4565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611dd4565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611dfb565b6107f16060890189611e14565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e14565b90508110156109a2578161088e6060860186611e14565b8381811061089e5761089e611dd4565b90506020028101906108b09190611e60565b6108ba9080611e7e565b90506108c96060870187611e14565b848181106108d9576108d9611dd4565b90506020028101906108eb9190611e60565b6108f59080611e7e565b6109026060890189611e14565b8681811061091257610912611dd4565b90506020028101906109249190611e60565b610932906020810190611e7e565b61093f60608b018b611e14565b8881811061094f5761094f611dd4565b90506020028101906109619190611e60565b610972906060810190604001611ec0565b6040516020016109889796959493929190611ef0565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611daa565b610a02906008611dbd565b61ffff16868281518110610a1857610a18611dd4565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611daa565b610a7b906008611dbd565b63ffffffff1687610a8d836002611de8565b81518110610a9d57610a9d611dd4565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611daa565b610afe906008611dbd565b88610b0a836006611de8565b81518110610b1a57610b1a611dd4565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611daa565b610b54906008611dbd565b6001600160401b031689610b69836026611de8565b81518110610b7957610b79611dd4565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611daa565b610bb3906008611dbd565b6001600160401b03168a610bc883602e611de8565b81518110610bd857610bd8611dd4565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611daa565b610c32906008611dbd565b61ffff1686610c4763ffffffff871684611de8565b81518110610c5757610c57611dd4565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f4f565b9250505f805b6004811015610d0857610cbd816003611daa565b610cc8906008611dbd565b63ffffffff16868563ffffffff1683610ce19190611de8565b81518110610cf157610cf1611dd4565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f4f565b9250505f805b6020811015610d9857610d5581601f611daa565b610d60906008611dbd565b86610d7163ffffffff871684611de8565b81518110610d8157610d81611dd4565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f4f565b9250505f805b6004811015610e0c57610dc1816003611daa565b610dcc906008611dbd565b63ffffffff16868563ffffffff1683610de59190611de8565b81518110610df557610df5611dd4565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f4f565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611de8565b81518110610e9757610e97611dd4565b602001015160f81c60f81b828281518110610eb457610eb4611dd4565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f4f565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611de8565b81518110610f3557610f35611dd4565b602001015160f81c60f81b828281518110610f5257610f52611dd4565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f4f565b9350505f805b6008811015610fe957610f9d816007611daa565b610fa8906008611dbd565b6001600160401b031687610fc263ffffffff881684611de8565b81518110610fd257610fd2611dd4565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f4f565b9350505f805f5b600481101561106a5761101f816003611daa565b61102a906008611dbd565b63ffffffff16888763ffffffff16836110439190611de8565b8151811061105357611053611dd4565b016020015160f81c901b919091179060010161100b565b50611076600486611f4f565b94505f5b60048110156110d95761108e816003611daa565b611099906008611dbd565b63ffffffff16888763ffffffff16836110b29190611de8565b815181106110c2576110c2611dd4565b016020015160f81c901b929092179160010161107a565b506110e5600486611f4f565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611de8565b8151811061118e5761118e611dd4565b602001015160f81c60f81b8282815181106111ab576111ab611dd4565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611dd4565b6001600160a01b039092166020928302919091019091015261120860148a611f4f565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611daa565b611259906008611dbd565b63ffffffff16898863ffffffff16836112729190611de8565b8151811061128257611282611dd4565b016020015160f81c901b919091179060010161123a565b506112a5600487611f4f565b95505f5b6004811015611308576112bd816003611daa565b6112c8906008611dbd565b63ffffffff16898863ffffffff16836112e19190611de8565b815181106112f1576112f1611dd4565b016020015160f81c901b92909217916001016112a9565b50611314600487611f4f565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611de8565b815181106113bd576113bd611dd4565b602001015160f81c60f81b8282815181106113da576113da611dd4565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611dd4565b6001600160a01b039092166020928302919091019091015261143760148b611f4f565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f4f565b61147b906014611f6c565b61148685607a611f4f565b6114909190611f4f565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611daa565b6114ee906008611dbd565b6001600160401b03168a61150863ffffffff8b1684611de8565b8151811061151857611518611dd4565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611f94565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611dd4565b602002602001015160405160200161160c929190612015565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612041565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611dd4565b602002602001015160405160200161169e929190612015565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf918391602001612074565b60405160208183030381529060405290506002816040516116f0919061209b565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e91906120a6565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6119946020830184611954565b9392505050565b80356001600160401b03811681146119b1575f80fd5b919050565b5f805f606084860312156119c8575f80fd5b833592506119d86020850161199b565b91506119e66040850161199b565b90509250925092565b5f602082840312156119ff575f80fd5b81356001600160401b03811115611a14575f80fd5b820160808185031215611994575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a805784516001600160a01b03168252938301936001929092019190830190611a57565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ab1610100840182611954565b90506040840151601f1980858403016060860152611acf8383611954565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611aff8383611a25565b925060a08601519150808584030160c086015250611b1d8282611a25565b91505060c0840151611b3a60e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119b1575f80fd5b5f60408284031215611b68575f80fd5b611b7061181f565b9050813563ffffffff81168114611b85575f80fd5b81526020828101356001600160401b0380821115611ba1575f80fd5b818501915085601f830112611bb4575f80fd5b813581811115611bc657611bc661180b565b8060051b9150611bd7848301611869565b8181529183018401918481019088841115611bf0575f80fd5b938501935b83851015611c1557611c0685611b42565b82529385019390850190611bf5565b808688015250505050505092915050565b5f60208284031215611c36575f80fd5b81356001600160401b0380821115611c4c575f80fd5b9083019060e08286031215611c5f575f80fd5b611c67611847565b82358152602083013582811115611c7c575f80fd5b611c8887828601611899565b602083015250604083013582811115611c9f575f80fd5b611cab87828601611899565b604083015250611cbd6060840161199b565b6060820152608083013582811115611cd3575f80fd5b611cdf87828601611b58565b60808301525060a083013582811115611cf6575f80fd5b611d0287828601611b58565b60a083015250611d1460c0840161199b565b60c082015295945050505050565b828152604060208201525f6119356040830184611954565b5f8060408385031215611d4b575f80fd5b82359150611d5b6020840161199b565b90509250929050565b5f8060408385031215611d75575f80fd5b8235915060208301358015158114611d8b575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611d96565b808202811582820484141761177b5761177b611d96565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611d96565b5f60208284031215611e0b575f80fd5b61199482611b42565b5f808335601e19843603018112611e29575f80fd5b8301803591506001600160401b03821115611e42575f80fd5b6020019150600581901b3603821315611e59575f80fd5b9250929050565b5f8235605e19833603018112611e74575f80fd5b9190910192915050565b5f808335601e19843603018112611e93575f80fd5b8301803591506001600160401b03821115611eac575f80fd5b602001915036819003821315611e59575f80fd5b5f60208284031215611ed0575f80fd5b6119948261199b565b5f81518060208401855e5f93019283525090919050565b5f611efb828a611ed9565b60e089901b6001600160e01b0319168152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611d96565b63ffffffff818116838216028082169190828114611f8c57611f8c611d96565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152611fdc611fd6602a85018a611ed9565b88611ed9565b60c09690961b6001600160c01b031916865260e094851b811660088701529290931b909116600c84015250506010019695505050505050565b5f6120208285611ed9565b60609390931b6bffffffffffffffffffffffff191683525050601401919050565b5f61204c8286611ed9565b6001600160e01b031960e095861b811682529390941b90921660048401525050600801919050565b5f61207f8285611ed9565b60c09390931b6001600160c01b03191683525050600801919050565b5f6119948284611ed9565b5f602082840312156120b6575f80fd5b505191905056fea26469706673582212207d656061d8f95ab589d4afa49d2d1306b172ed85e5bb91ff860b1398145156c164736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go index 17e540223..40a6756b7 100644 --- a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go +++ b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go @@ -32,7 +32,7 @@ var ( // ExampleRewardCalculatorMetaData contains all meta data concerning the ExampleRewardCalculator contract. var ExampleRewardCalculatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"rewardBasisPoints_\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_IN_YEAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPTIME_REWARDS_THRESHOLD_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardBasisPoints\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a0604052348015600e575f80fd5b50604051610393380380610393833981016040819052602b91603b565b6001600160401b03166080526066565b5f60208284031215604a575f80fd5b81516001600160401b0381168114605f575f80fd5b9392505050565b60805161030f6100845f395f818160c50152610161015261030f5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80634f22429f146100595780635dcc93911461007f578063a9778a7a1461008a578063afba878a146100a6578063bb65b242146100c0575b5f80fd5b61006c6100673660046101db565b610100565b6040519081526020015b60405180910390f35b61006c6301e1338081565b61009361271081565b60405161ffff9091168152602001610076565b6100ae605081565b60405160ff9091168152602001610076565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610076565b5f605061010d8685610249565b6101179190610271565b67ffffffffffffffff1661012c836064610271565b67ffffffffffffffff16101561014357505f6101b6565b6127106301e133806101558686610249565b67ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1689610195919061029d565b61019f919061029d565b6101a991906102ba565b6101b391906102ba565b90505b95945050505050565b803567ffffffffffffffff811681146101d6575f80fd5b919050565b5f805f805f60a086880312156101ef575f80fd5b853594506101ff602087016101bf565b935061020d604087016101bf565b925061021b606087016101bf565b9150610229608087016101bf565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b67ffffffffffffffff82811682821603908082111561026a5761026a610235565b5092915050565b67ffffffffffffffff81811683821602808216919082811461029557610295610235565b505092915050565b80820281158282048414176102b4576102b4610235565b92915050565b5f826102d457634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220193bbc9ce395b64c17c518dfc5efe4a5d8b30f2f4f00f37e0a7db81c05770b0764736f6c63430008190033", + Bin: "0x60a0604052348015600e575f80fd5b50604051610393380380610393833981016040819052602b91603b565b6001600160401b03166080526066565b5f60208284031215604a575f80fd5b81516001600160401b0381168114605f575f80fd5b9392505050565b60805161030f6100845f395f818160c50152610161015261030f5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80634f22429f146100595780635dcc93911461007f578063a9778a7a1461008a578063afba878a146100a6578063bb65b242146100c0575b5f80fd5b61006c6100673660046101db565b610100565b6040519081526020015b60405180910390f35b61006c6301e1338081565b61009361271081565b60405161ffff9091168152602001610076565b6100ae605081565b60405160ff9091168152602001610076565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610076565b5f605061010d8685610249565b6101179190610271565b67ffffffffffffffff1661012c836064610271565b67ffffffffffffffff16101561014357505f6101b6565b6127106301e133806101558686610249565b67ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1689610195919061029d565b61019f919061029d565b6101a991906102ba565b6101b391906102ba565b90505b95945050505050565b803567ffffffffffffffff811681146101d6575f80fd5b919050565b5f805f805f60a086880312156101ef575f80fd5b853594506101ff602087016101bf565b935061020d604087016101bf565b925061021b606087016101bf565b9150610229608087016101bf565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b67ffffffffffffffff82811682821603908082111561026a5761026a610235565b5092915050565b67ffffffffffffffff81811683821602808216919082811461029557610295610235565b505092915050565b80820281158282048414176102b4576102b4610235565b92915050565b5f826102d457634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122028d2fb7a3833a38f49e49980ae503d498874495b2bbf7743383340f5b41d0d8c64736f6c63430008190033", } // ExampleRewardCalculatorABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index a8892b213..7af949ab2 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -116,7 +116,7 @@ type WarpMessage struct { // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122021e329f7de33a872d5ca48aa0e69cb4f02375fec98a214c34d8c452b3977075664736f6c63430008190033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", } // AddressABI is the input ABI used to generate the binding from. @@ -8036,7 +8036,7 @@ func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*I // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615a07380380615a0783398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158ba8061014d5f395ff3fe6080604052600436106101f1575f3560e01c80638280a25a11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b80638280a25a1461045257806393e245981461046657806398f3e2b414610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360305d621161015957806360305d62146103ab57806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d5780635297fae61461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506102146103a6366004614a43565b61107c565b3480156103b6575f80fd5b506103bf601481565b60405163ffffffff9091168152602001610257565b3480156103df575f80fd5b506103f36103ee366004614a7f565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b50610249603081565b348015610471575f80fd5b506102146104803660046149a4565b6113ca565b348015610490575f80fd5b5061021461049f366004614a43565b611495565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614aab565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157e583398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f8051602061580583398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614b0c565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b79565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614bf9565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206158658339815191526020526040808220815160e0810190925280545f8051602061580583398151915293929190829060ff16600581111561069757610697614b23565b60058111156106a8576106a8614b23565b81526020016001820180546106bc90614c64565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c64565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614b23565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614daa565b6040518263ffffffff1660e01b815260040161088b9190614de3565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614df5565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206158058339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614df5565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e20565b6001600160a01b031614610a12576109ed6060840160408501614e20565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e3b565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e3b565b8363ffffffff16818110610a5957610a59614e80565b9050602002810190610a6b9190614e94565b610a7490614eff565b80516040519192505f916008880191610a8c91614f7a565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614de3565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f7a565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614df5565b90508086600801835f0151604051610b5b9190614f7a565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614b23565b021790555060208201516001820190610bf69082614fd4565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b9116856150a3565b8251604051919550610cac91614f7a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d01906150b6565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150d8565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614de3565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614df5565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b919061521a565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614daa565b90505f600282604051610e5f9190614f7a565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614df5565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614b23565b14610f4c578060405163170cc93360e21b815260040161063c9190614c96565b6108cb8383612405565b5f805f805160206157e583398151915260030154610f7490846152a5565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157e58339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614b23565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061584583398151915255565b50565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff1660038111156110c9576110c9614b23565b60038111156110da576110da614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614b23565b14611188578251604051633b0d540d60e21b815261063c91906004016152c4565b60048151600581111561119d5761119d614b23565b036111b3576111ab85612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d88a6122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614de3565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152de565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150d8565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b5f805160206157e58339815191525f6113e283611db9565b51905060048160058111156113f9576113f9614b23565b14611419578060405163170cc93360e21b815260040161063c9190614c96565b5f8381526005830160205260409020546001600160a01b0316331461145f57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b61149d6128d7565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff1660038111156114ea576114ea614b23565b60038111156114fb576114fb614b23565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561157457611574614b23565b14611595578051604051633b0d540d60e21b815261063c91906004016152c4565b60046115a48260400151611db9565b5160058111156115b6576115b6614b23565b146116b5575f6115c5856122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016116049190614de3565b606060405180830381865af415801561161f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164391906152de565b50915091508184604001511461166f5760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156116b157604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6116be83612d45565b50506116d660015f8051602061584583398151915255565b5050565b5f805160206158058339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614de3565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b9190615313565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c64565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614b23565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061584583398151915255565b9392505050565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff16600381111561195057611950614b23565b600381111561196157611961614b23565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614b23565b141580156119fb57506003815160038111156119f8576119f8614b23565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152c4565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614daa565b6040518263ffffffff1660e01b8152600401611b279190614de3565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614df5565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206158058339815191529190611bb590614c64565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614b23565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615341565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614df5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061584583398151915255565b919050565b611dc16148f4565b5f8281525f80516020615865833981519152602052604090819020815160e0810190925280545f80516020615805833981519152929190829060ff166005811115611e0e57611e0e614b23565b6005811115611e1f57611e1f614b23565b8152602001600182018054611e3390614c64565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c64565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020615805833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153cb565b90815260200160405180910390205491505092915050565b5f8381525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e58339815191529284929091829060ff166003811115611fb157611fb1614b23565b6003811115611fc257611fc2614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614b23565b14612070578251604051633b0d540d60e21b815261063c91906004016152c4565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361143a565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153da565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614b23565b0361224f5760028401546080840151612143916001600160401b0316906153da565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd91906153fa565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614b23565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614c96565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f919081019061541a565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612477919081019061541a565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614df5565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614de3565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd91906154aa565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157e5833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157e583398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361143a565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153da565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614df5565b905080846008015f8a81526020019081526020015f205f8282546128c591906150a3565b90915550501515979650505050505050565b5f8051602061584583398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206158058339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614de3565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a89190615313565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614b23565b6005811115612a1157612a11614b23565b8152602001600182018054612a2590614c64565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c64565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614b23565b14158015612b285750600181516005811115612b2557612b25614b23565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614c96565b600381516005811115612b5e57612b5e614b23565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f7a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614b23565b021790555060208201516001820190612be49082614fd4565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614b23565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b6116d66001600160a01b03831682613aa5565b60015f8051602061584583398151915255565b5f8181525f805160206158258339815191526020526040808220815160e0810190925280545f805160206157e583398151915293929190829060ff166003811115612d9257612d92614b23565b6003811115612da357612da3614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153da565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150d8565b612efa91906152a5565b915081866008015f8681526020019081526020015f205f828254612f1e91906150a3565b90915550612f2e905082846154cd565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157e583398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157e58339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614b23565b146131fe57805160405163170cc93360e21b815261063c9190600401614c96565b5f82826080015161320f91906153da565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154e0565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614b23565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f80516020615865833981519152602052604081206002015481905f8051602061580583398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614daa565b6040518263ffffffff1660e01b815260040161358b9190614de3565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614df5565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157e583398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614b23565b148061367a575060048251600581111561367857613678614b23565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614b23565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614c96565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614df5565b95945050505050565b6137c96148f4565b5f8281525f805160206158658339815191526020526040808220815160e0810190925280545f8051602061580583398151915293929190829060ff16600581111561381657613816614b23565b600581111561382757613827614b23565b815260200160018201805461383b90614c64565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c64565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614b23565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c96565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614b23565b0217905550602082015160018201906139b09082614fd4565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061580583398151915242613b9b6060860160408701614a7f565b6001600160401b0316111580613bd55750613bb96202a300426150a3565b613bc96060860160408701614a7f565b6001600160401b031610155b15613c0f57613bea6060850160408601614a7f565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f606086018661550b565b614477565b613c34613c1f608086018661550b565b6030613c43602086018661551f565b905014613c7557613c57602085018561551f565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f848061551f565b90505f03613cac57613c91848061551f565b604051633e08a12560e11b815260040161063c929190615561565b5f60088201613cbb868061551f565b604051613cc99291906153cb565b90815260200160405180910390205414613d0257613ce7848061551f565b60405163a41f772f60e01b815260040161063c929190615561565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a8061551f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b61551f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a7f565b6001600160401b03168152602001613df560608b018b61550b565b613dfe90615574565b8152602001613e1060808b018b61550b565b613e1990615574565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e479190615696565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e88919081019061574d565b5f82815260068601602052604090209193509150613ea68282614fd4565b508160088401613eb6888061551f565b604051613ec49291906153cb565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614de3565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614df5565b6040805160e081019091529091508060018152602001613f60898061551f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614b23565b0217905550602082015160018201906140089082614fd4565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a6888061551f565b6040516140b49291906153cb565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a7f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a7f565b6141b160e0860160c08701615790565b6141c2610100870160e088016157a9565b6101008701356141da61014089016101208a01614e20565b614609565b5f805160206158058339815191525f6001600160401b0380841690851611156142135761420c83856153fa565b9050614220565b61421d84846153fa565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b0316906150a3565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153da565b6001600160401b03169052505b60608101516142d79060646154e0565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150d8565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d91906150a3565b9052506040810180516001600160401b038716919061436d9083906154cd565b9052506001840154604082015160649161439291600160401b90910460ff16906150d8565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206158658339815191526020526040812060020180545f80516020615805833981519152919060089061444c90600160401b90046001600160401b03166157c9565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e3b565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e3b565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e3b565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e3b565b90508110156116d6576145466020830183614e3b565b6145516001846154cd565b81811061456057614560614e80565b90506020020160208101906145759190614e20565b6001600160a01b031661458b6020840184614e3b565b8381811061459b5761459b614e80565b90506020020160208101906145b09190614e20565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157e583398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f8051602061580583398151915290815560146147fa60608401604085016157a9565b60ff161180614819575061481460608301604084016157a9565b60ff16155b1561484d5761482e60608301604084016157a9565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d60608301604084016157a9565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a7f565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c64565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b5f8060408385031215614a54575f80fd5b614a5d83614956565b946020939093013593505050565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a8f575f80fd5b81356118fc81614a6b565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614abd575f80fd5b83356001600160401b03811115614ad2575f80fd5b840160a08187031215614ae3575f80fd5b9250614af160208501614a9a565b91506040840135614b0181614a6b565b809150509250925092565b5f6101408284031215614b1d575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b4757614b47614b23565b9052565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152614b8b602082018351614b37565b5f602083015160e06040840152614ba6610100840182614b4b565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c0a575f80fd5b82356001600160401b0380821115614c20575f80fd5b818501915085601f830112614c33575f80fd5b813581811115614c41575f80fd5b866020828501011115614c52575f80fd5b60209290920196919550909350505050565b600181811c90821680614c7857607f821691505b602082108103614b1d57634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b37565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cda57614cda614ca4565b60405290565b604080519081016001600160401b0381118282101715614cda57614cda614ca4565b604051601f8201601f191681016001600160401b0381118282101715614d2a57614d2a614ca4565b604052919050565b5f6001600160401b03821115614d4a57614d4a614ca4565b50601f01601f191660200190565b5f82601f830112614d67575f80fd5b8151614d7a614d7582614d32565b614d02565b818152846020838601011115614d8e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215614dba575f80fd5b81516001600160401b03811115614dcf575f80fd5b614ddb84828501614d58565b949350505050565b602081525f6118fc6020830184614b4b565b5f60208284031215614e05575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e30575f80fd5b81356118fc81614e0c565b5f808335601e19843603018112614e50575f80fd5b8301803591506001600160401b03821115614e69575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614ea8575f80fd5b9190910192915050565b5f82601f830112614ec1575f80fd5b8135614ecf614d7582614d32565b818152846020838601011115614ee3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f0f575f80fd5b614f17614cb8565b82356001600160401b0380821115614f2d575f80fd5b614f3936838701614eb2565b83526020850135915080821115614f4e575f80fd5b50614f5b36828601614eb2565b6020830152506040830135614f6f81614a6b565b604082015292915050565b5f82518060208501845e5f920191825250919050565b601f82111561064557805f5260205f20601f840160051c81016020851015614fb55750805b601f840160051c820191505b81811015611b67575f8155600101614fc1565b81516001600160401b03811115614fed57614fed614ca4565b61500181614ffb8454614c64565b84614f90565b602080601f831160018114615034575f841561501d5750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b8281101561506257888601518255948401946001909101908401615043565b508582101561507f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa61508f565b5f63ffffffff8083168181036150ce576150ce61508f565b6001019392505050565b8082028115828204841417610faa57610faa61508f565b5f808335601e19843603018112615104575f80fd5b83016020810192503590506001600160401b03811115615122575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561520d57848303601f19018952813536889003605e19018112615194575f80fd5b870160606151a282806150ef565b8287526151b28388018284615130565b925050506151c2868301836150ef565b868303888801526151d4838284615130565b9250505060408083013592506151e983614a6b565b6001600160401b03929092169490910193909352978301979083019060010161516f565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561523e81614e0c565b6001600160a01b031660608381019190915283013536849003601e19018112615265575f80fd5b83016020810190356001600160401b03811115615280575f80fd5b8060051b3603821315615291575f80fd5b6080808501526137b860a085018284615158565b5f826152bf57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152d8576152d8614b23565b91905290565b5f805f606084860312156152f0575f80fd5b83519250602084015161530281614a6b565b6040850151909250614b0181614a6b565b5f8060408385031215615324575f80fd5b82519150602083015161533681614949565b809150509250929050565b5f60208083525f845461535381614c64565b806020870152604060018084165f81146153745760018114615390576153bd565b60ff19851660408a0152604084151560051b8a010195506153bd565b895f5260205f205f5b858110156153b45781548b8201860152908301908801615399565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c361508f565b6001600160401b038281168282160390808211156123c3576123c361508f565b5f806040838503121561542b575f80fd5b82516001600160401b0380821115615441575f80fd5b9084019060608287031215615454575f80fd5b61545c614cb8565b82518152602083015161546e81614e0c565b6020820152604083015182811115615484575f80fd5b61549088828601614d58565b604083015250809450505050602083015161533681614949565b5f80604083850312156154bb575f80fd5b82519150602083015161533681614a6b565b81810381811115610faa57610faa61508f565b6001600160401b038181168382160280821691908281146155035761550361508f565b505092915050565b5f8235603e19833603018112614ea8575f80fd5b5f808335601e19843603018112615534575f80fd5b8301803591506001600160401b0382111561554d575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614ddb602083018486615130565b5f60408236031215615584575f80fd5b61558c614ce0565b61559583614956565b81526020808401356001600160401b03808211156155b1575f80fd5b9085019036601f8301126155c3575f80fd5b8135818111156155d5576155d5614ca4565b8060051b91506155e6848301614d02565b81815291830184019184810190368411156155ff575f80fd5b938501935b83851015615629578435925061561983614e0c565b8282529385019390850190615604565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b0316825293830193600192909201919083019061566d565b60208152815160208201525f602083015160e060408401526156bc610100840182614b4b565b90506040840151601f19808584030160608601526156da8383614b4b565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261570a838361563b565b925060a08601519150808584030160c086015250615728828261563b565b91505060c084015161574560e08501826001600160401b03169052565b509392505050565b5f806040838503121561575e575f80fd5b8251915060208301516001600160401b0381111561577a575f80fd5b61578685828601614d58565b9150509250929050565b5f602082840312156157a0575f80fd5b6118fc82614a9a565b5f602082840312156157b9575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150ce576150ce61508f56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220855edb82145aa3d8c8d870b47e0fa3a47f89c96fb3e2f4d442472531d9cad99864736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051615a16380380615a1683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158c98061014d5f395ff3fe6080604052600436106101f1575f3560e01c80638280a25a11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b80638280a25a1461045257806393e245981461046657806398f3e2b414610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360305d621161015957806360305d62146103ab57806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d5780635297fae61461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506102146103a6366004614a43565b61107c565b3480156103b6575f80fd5b506103bf601481565b60405163ffffffff9091168152602001610257565b3480156103df575f80fd5b506103f36103ee366004614a7f565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b50610249603081565b348015610471575f80fd5b506102146104803660046149a4565b6113ca565b348015610490575f80fd5b5061021461049f366004614a43565b611495565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614aab565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157f483398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f8051602061581483398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614b0c565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b98565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614c18565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561069757610697614b23565b60058111156106a8576106a8614b23565b81526020016001820180546106bc90614c83565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c83565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614b23565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614dc6565b6040518263ffffffff1660e01b815260040161088b9190614df7565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614e09565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206158148339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614e09565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e34565b6001600160a01b031614610a12576109ed6060840160408501614e34565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e4f565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e4f565b8363ffffffff16818110610a5957610a59614e94565b9050602002810190610a6b9190614ea8565b610a7490614f13565b80516040519192505f916008880191610a8c91614f8e565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614df7565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f8e565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614e09565b90508086600801835f0151604051610b5b9190614f8e565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614b23565b021790555060208201516001820190610bf69082614fe3565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b9116856150b2565b8251604051919550610cac91614f8e565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d01906150c5565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150e7565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614df7565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614e09565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b9190615229565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614dc6565b90505f600282604051610e5f9190614f8e565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614e09565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614b23565b14610f4c578060405163170cc93360e21b815260040161063c9190614cb5565b6108cb8383612405565b5f805f805160206157f483398151915260030154610f7490846152b4565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157f48339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614b23565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061585483398151915255565b50565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156110c9576110c9614b23565b60038111156110da576110da614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614b23565b14611188578251604051633b0d540d60e21b815261063c91906004016152d3565b60048151600581111561119d5761119d614b23565b036111b3576111ab85612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d88a6122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614df7565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152ed565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150e7565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b5f805160206157f48339815191525f6113e283611db9565b51905060048160058111156113f9576113f9614b23565b14611419578060405163170cc93360e21b815260040161063c9190614cb5565b5f8381526005830160205260409020546001600160a01b0316331461145f57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b61149d6128d7565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156114ea576114ea614b23565b60038111156114fb576114fb614b23565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561157457611574614b23565b14611595578051604051633b0d540d60e21b815261063c91906004016152d3565b60046115a48260400151611db9565b5160058111156115b6576115b6614b23565b146116b5575f6115c5856122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016116049190614df7565b606060405180830381865af415801561161f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164391906152ed565b50915091508184604001511461166f5760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156116b157604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6116be83612d45565b50506116d660015f8051602061585483398151915255565b5050565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614df7565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b9190615322565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c83565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614b23565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061585483398151915255565b9392505050565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff16600381111561195057611950614b23565b600381111561196157611961614b23565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614b23565b141580156119fb57506003815160038111156119f8576119f8614b23565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152d3565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614dc6565b6040518263ffffffff1660e01b8152600401611b279190614df7565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614e09565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206158148339815191529190611bb590614c83565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614b23565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615350565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614e09565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061585483398151915255565b919050565b611dc16148f4565b5f8281525f80516020615874833981519152602052604090819020815160e0810190925280545f80516020615814833981519152929190829060ff166005811115611e0e57611e0e614b23565b6005811115611e1f57611e1f614b23565b8152602001600182018054611e3390614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c83565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020615814833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153da565b90815260200160405180910390205491505092915050565b5f8381525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f48339815191529284929091829060ff166003811115611fb157611fb1614b23565b6003811115611fc257611fc2614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614b23565b14612070578251604051633b0d540d60e21b815261063c91906004016152d3565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361143a565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153e9565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614b23565b0361224f5760028401546080840151612143916001600160401b0316906153e9565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd9190615409565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614b23565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614cb5565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f9190810190615429565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124779190810190615429565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614e09565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614df7565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd91906154b9565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157f4833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157f483398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361143a565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153e9565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614e09565b905080846008015f8a81526020019081526020015f205f8282546128c591906150b2565b90915550501515979650505050505050565b5f8051602061585483398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614df7565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a89190615322565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614b23565b6005811115612a1157612a11614b23565b8152602001600182018054612a2590614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c83565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614b23565b14158015612b285750600181516005811115612b2557612b25614b23565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614cb5565b600381516005811115612b5e57612b5e614b23565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f8e565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614b23565b021790555060208201516001820190612be49082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614b23565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b6116d66001600160a01b03831682613aa5565b60015f8051602061585483398151915255565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff166003811115612d9257612d92614b23565b6003811115612da357612da3614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153e9565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150e7565b612efa91906152b4565b915081866008015f8681526020019081526020015f205f828254612f1e91906150b2565b90915550612f2e905082846154dc565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157f483398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157f48339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614b23565b146131fe57805160405163170cc93360e21b815261063c9190600401614cb5565b5f82826080015161320f91906153e9565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154ef565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614b23565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f80516020615874833981519152602052604081206002015481905f8051602061581483398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614dc6565b6040518263ffffffff1660e01b815260040161358b9190614df7565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614e09565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157f483398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614b23565b148061367a575060048251600581111561367857613678614b23565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614b23565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614cb5565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614e09565b95945050505050565b6137c96148f4565b5f8281525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561381657613816614b23565b600581111561382757613827614b23565b815260200160018201805461383b90614c83565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c83565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614b23565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614b23565b0217905550602082015160018201906139b09082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061581483398151915242613b9b6060860160408701614a7f565b6001600160401b0316111580613bd55750613bb96202a300426150b2565b613bc96060860160408701614a7f565b6001600160401b031610155b15613c0f57613bea6060850160408601614a7f565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f606086018661551a565b614477565b613c34613c1f608086018661551a565b6030613c43602086018661552e565b905014613c7557613c57602085018561552e565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f848061552e565b90505f03613cac57613c91848061552e565b604051633e08a12560e11b815260040161063c929190615570565b5f60088201613cbb868061552e565b604051613cc99291906153da565b90815260200160405180910390205414613d0257613ce7848061552e565b60405163a41f772f60e01b815260040161063c929190615570565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a8061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b61552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a7f565b6001600160401b03168152602001613df560608b018b61551a565b613dfe90615583565b8152602001613e1060808b018b61551a565b613e1990615583565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e4791906156a5565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e88919081019061575c565b5f82815260068601602052604090209193509150613ea68282614fe3565b508160088401613eb6888061552e565b604051613ec49291906153da565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614df7565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614e09565b6040805160e081019091529091508060018152602001613f60898061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614b23565b0217905550602082015160018201906140089082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a6888061552e565b6040516140b49291906153da565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a7f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a7f565b6141b160e0860160c0870161579f565b6141c2610100870160e088016157b8565b6101008701356141da61014089016101208a01614e34565b614609565b5f805160206158148339815191525f6001600160401b0380841690851611156142135761420c8385615409565b9050614220565b61421d8484615409565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b0316906150b2565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153e9565b6001600160401b03169052505b60608101516142d79060646154ef565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150e7565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d91906150b2565b9052506040810180516001600160401b038716919061436d9083906154dc565b9052506001840154604082015160649161439291600160401b90910460ff16906150e7565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206158748339815191526020526040812060020180545f80516020615814833981519152919060089061444c90600160401b90046001600160401b03166157d8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e4f565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e4f565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e4f565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e4f565b90508110156116d6576145466020830183614e4f565b6145516001846154dc565b81811061456057614560614e94565b90506020020160208101906145759190614e34565b6001600160a01b031661458b6020840184614e4f565b8381811061459b5761459b614e94565b90506020020160208101906145b09190614e34565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157f483398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f8051602061581483398151915290815560146147fa60608401604085016157b8565b60ff161180614819575061481460608301604084016157b8565b60ff16155b1561484d5761482e60608301604084016157b8565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d60608301604084016157b8565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a7f565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c83565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b5f8060408385031215614a54575f80fd5b614a5d83614956565b946020939093013593505050565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a8f575f80fd5b81356118fc81614a6b565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614abd575f80fd5b83356001600160401b03811115614ad2575f80fd5b840160a08187031215614ae3575f80fd5b9250614af160208501614a9a565b91506040840135614b0181614a6b565b809150509250925092565b5f6101408284031215614b1d575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b4757614b47614b23565b9052565b5f5b83811015614b65578181015183820152602001614b4d565b50505f910152565b5f8151808452614b84816020860160208601614b4b565b601f01601f19169290920160200192915050565b60208152614baa602082018351614b37565b5f602083015160e06040840152614bc5610100840182614b6d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c29575f80fd5b82356001600160401b0380821115614c3f575f80fd5b818501915085601f830112614c52575f80fd5b813581811115614c60575f80fd5b866020828501011115614c71575f80fd5b60209290920196919550909350505050565b600181811c90821680614c9757607f821691505b602082108103614b1d57634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b37565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cf957614cf9614cc3565b60405290565b604080519081016001600160401b0381118282101715614cf957614cf9614cc3565b604051601f8201601f191681016001600160401b0381118282101715614d4957614d49614cc3565b604052919050565b5f6001600160401b03821115614d6957614d69614cc3565b50601f01601f191660200190565b5f82601f830112614d86575f80fd5b8151614d99614d9482614d51565b614d21565b818152846020838601011115614dad575f80fd5b614dbe826020830160208701614b4b565b949350505050565b5f60208284031215614dd6575f80fd5b81516001600160401b03811115614deb575f80fd5b614dbe84828501614d77565b602081525f6118fc6020830184614b6d565b5f60208284031215614e19575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e44575f80fd5b81356118fc81614e20565b5f808335601e19843603018112614e64575f80fd5b8301803591506001600160401b03821115614e7d575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614ebc575f80fd5b9190910192915050565b5f82601f830112614ed5575f80fd5b8135614ee3614d9482614d51565b818152846020838601011115614ef7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f23575f80fd5b614f2b614cd7565b82356001600160401b0380821115614f41575f80fd5b614f4d36838701614ec6565b83526020850135915080821115614f62575f80fd5b50614f6f36828601614ec6565b6020830152506040830135614f8381614a6b565b604082015292915050565b5f8251614ebc818460208701614b4b565b601f82111561064557805f5260205f20601f840160051c81016020851015614fc45750805b601f840160051c820191505b81811015611b67575f8155600101614fd0565b81516001600160401b03811115614ffc57614ffc614cc3565b6150108161500a8454614c83565b84614f9f565b602080601f831160018114615043575f841561502c5750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b8281101561507157888601518255948401946001909101908401615052565b508582101561508e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa61509e565b5f63ffffffff8083168181036150dd576150dd61509e565b6001019392505050565b8082028115828204841417610faa57610faa61509e565b5f808335601e19843603018112615113575f80fd5b83016020810192503590506001600160401b03811115615131575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561521c57848303601f19018952813536889003605e190181126151a3575f80fd5b870160606151b182806150fe565b8287526151c1838801828461513f565b925050506151d1868301836150fe565b868303888801526151e383828461513f565b9250505060408083013592506151f883614a6b565b6001600160401b03929092169490910193909352978301979083019060010161517e565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561524d81614e20565b6001600160a01b031660608381019190915283013536849003601e19018112615274575f80fd5b83016020810190356001600160401b0381111561528f575f80fd5b8060051b36038213156152a0575f80fd5b6080808501526137b860a085018284615167565b5f826152ce57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152e7576152e7614b23565b91905290565b5f805f606084860312156152ff575f80fd5b83519250602084015161531181614a6b565b6040850151909250614b0181614a6b565b5f8060408385031215615333575f80fd5b82519150602083015161534581614949565b809150509250929050565b5f60208083525f845461536281614c83565b806020870152604060018084165f8114615383576001811461539f576153cc565b60ff19851660408a0152604084151560051b8a010195506153cc565b895f5260205f205f5b858110156153c35781548b82018601529083019088016153a8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c361509e565b6001600160401b038281168282160390808211156123c3576123c361509e565b5f806040838503121561543a575f80fd5b82516001600160401b0380821115615450575f80fd5b9084019060608287031215615463575f80fd5b61546b614cd7565b82518152602083015161547d81614e20565b6020820152604083015182811115615493575f80fd5b61549f88828601614d77565b604083015250809450505050602083015161534581614949565b5f80604083850312156154ca575f80fd5b82519150602083015161534581614a6b565b81810381811115610faa57610faa61509e565b6001600160401b038181168382160280821691908281146155125761551261509e565b505092915050565b5f8235603e19833603018112614ebc575f80fd5b5f808335601e19843603018112615543575f80fd5b8301803591506001600160401b0382111561555c575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614dbe60208301848661513f565b5f60408236031215615593575f80fd5b61559b614cff565b6155a483614956565b81526020808401356001600160401b03808211156155c0575f80fd5b9085019036601f8301126155d2575f80fd5b8135818111156155e4576155e4614cc3565b8060051b91506155f5848301614d21565b818152918301840191848101903684111561560e575f80fd5b938501935b83851015615638578435925061562883614e20565b8282529385019390850190615613565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b0316825293830193600192909201919083019061567c565b60208152815160208201525f602083015160e060408401526156cb610100840182614b6d565b90506040840151601f19808584030160608601526156e98383614b6d565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615719838361564a565b925060a08601519150808584030160c086015250615737828261564a565b91505060c084015161575460e08501826001600160401b03169052565b509392505050565b5f806040838503121561576d575f80fd5b8251915060208301516001600160401b03811115615789575f80fd5b61579585828601614d77565b9150509250929050565b5f602082840312156157af575f80fd5b6118fc82614a9a565b5f602082840312156157c8575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150dd576150dd61509e56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a264697066735822122000dc11d0ff59903cf09d18ad2de1ed503693ff3d1a2c42c47ae695f27ecb47f264736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -15617,7 +15617,7 @@ func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(lo // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x6120f3610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e19190611982565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119b6565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e53660046119ef565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611a8b565b610255610250366004611c26565b61154a565b6040516100e1929190611d22565b610145610271366004611d3a565b611737565b610145610284366004611d64565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611daa565b6102e6906008611dbd565b61ffff168582815181106102fc576102fc611dd4565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611daa565b61035f906008611dbd565b63ffffffff1686610371836002611de8565b8151811061038157610381611dd4565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611daa565b6103e0906008611dbd565b876103ec836006611de8565b815181106103fc576103fc611dd4565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611daa565b610436906008611dbd565b6001600160401b03168861044b836026611de8565b8151811061045b5761045b611dd4565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611daa565b6104d6906008611dbd565b61ffff168482815181106104ec576104ec611dd4565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611daa565b61054f906008611dbd565b63ffffffff1685610561836002611de8565b8151811061057157610571611dd4565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611daa565b6105d0906008611dbd565b866105dc836006611de8565b815181106105ec576105ec611dd4565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611daa565b610664906008611dbd565b61ffff1685828151811061067a5761067a611dd4565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611daa565b6106dd906008611dbd565b63ffffffff16866106ef836002611de8565b815181106106ff576106ff611dd4565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611daa565b610760906008611dbd565b8761076c836006611de8565b8151811061077c5761077c611dd4565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611dd4565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611dfb565b6107f16060890189611e14565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e14565b90508110156109a2578161088e6060860186611e14565b8381811061089e5761089e611dd4565b90506020028101906108b09190611e60565b6108ba9080611e7e565b90506108c96060870187611e14565b848181106108d9576108d9611dd4565b90506020028101906108eb9190611e60565b6108f59080611e7e565b6109026060890189611e14565b8681811061091257610912611dd4565b90506020028101906109249190611e60565b610932906020810190611e7e565b61093f60608b018b611e14565b8881811061094f5761094f611dd4565b90506020028101906109619190611e60565b610972906060810190604001611ec0565b6040516020016109889796959493929190611ef0565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611daa565b610a02906008611dbd565b61ffff16868281518110610a1857610a18611dd4565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611daa565b610a7b906008611dbd565b63ffffffff1687610a8d836002611de8565b81518110610a9d57610a9d611dd4565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611daa565b610afe906008611dbd565b88610b0a836006611de8565b81518110610b1a57610b1a611dd4565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611daa565b610b54906008611dbd565b6001600160401b031689610b69836026611de8565b81518110610b7957610b79611dd4565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611daa565b610bb3906008611dbd565b6001600160401b03168a610bc883602e611de8565b81518110610bd857610bd8611dd4565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611daa565b610c32906008611dbd565b61ffff1686610c4763ffffffff871684611de8565b81518110610c5757610c57611dd4565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f4f565b9250505f805b6004811015610d0857610cbd816003611daa565b610cc8906008611dbd565b63ffffffff16868563ffffffff1683610ce19190611de8565b81518110610cf157610cf1611dd4565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f4f565b9250505f805b6020811015610d9857610d5581601f611daa565b610d60906008611dbd565b86610d7163ffffffff871684611de8565b81518110610d8157610d81611dd4565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f4f565b9250505f805b6004811015610e0c57610dc1816003611daa565b610dcc906008611dbd565b63ffffffff16868563ffffffff1683610de59190611de8565b81518110610df557610df5611dd4565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f4f565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611de8565b81518110610e9757610e97611dd4565b602001015160f81c60f81b828281518110610eb457610eb4611dd4565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f4f565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611de8565b81518110610f3557610f35611dd4565b602001015160f81c60f81b828281518110610f5257610f52611dd4565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f4f565b9350505f805b6008811015610fe957610f9d816007611daa565b610fa8906008611dbd565b6001600160401b031687610fc263ffffffff881684611de8565b81518110610fd257610fd2611dd4565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f4f565b9350505f805f5b600481101561106a5761101f816003611daa565b61102a906008611dbd565b63ffffffff16888763ffffffff16836110439190611de8565b8151811061105357611053611dd4565b016020015160f81c901b919091179060010161100b565b50611076600486611f4f565b94505f5b60048110156110d95761108e816003611daa565b611099906008611dbd565b63ffffffff16888763ffffffff16836110b29190611de8565b815181106110c2576110c2611dd4565b016020015160f81c901b929092179160010161107a565b506110e5600486611f4f565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611de8565b8151811061118e5761118e611dd4565b602001015160f81c60f81b8282815181106111ab576111ab611dd4565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611dd4565b6001600160a01b039092166020928302919091019091015261120860148a611f4f565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611daa565b611259906008611dbd565b63ffffffff16898863ffffffff16836112729190611de8565b8151811061128257611282611dd4565b016020015160f81c901b919091179060010161123a565b506112a5600487611f4f565b95505f5b6004811015611308576112bd816003611daa565b6112c8906008611dbd565b63ffffffff16898863ffffffff16836112e19190611de8565b815181106112f1576112f1611dd4565b016020015160f81c901b92909217916001016112a9565b50611314600487611f4f565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611de8565b815181106113bd576113bd611dd4565b602001015160f81c60f81b8282815181106113da576113da611dd4565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611dd4565b6001600160a01b039092166020928302919091019091015261143760148b611f4f565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f4f565b61147b906014611f6c565b61148685607a611f4f565b6114909190611f4f565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611daa565b6114ee906008611dbd565b6001600160401b03168a61150863ffffffff8b1684611de8565b8151811061151857611518611dd4565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611f94565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611dd4565b602002602001015160405160200161160c929190612015565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612041565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611dd4565b602002602001015160405160200161169e929190612015565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf918391602001612074565b60405160208183030381529060405290506002816040516116f0919061209b565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e91906120a6565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6119946020830184611954565b9392505050565b80356001600160401b03811681146119b1575f80fd5b919050565b5f805f606084860312156119c8575f80fd5b833592506119d86020850161199b565b91506119e66040850161199b565b90509250925092565b5f602082840312156119ff575f80fd5b81356001600160401b03811115611a14575f80fd5b820160808185031215611994575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a805784516001600160a01b03168252938301936001929092019190830190611a57565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ab1610100840182611954565b90506040840151601f1980858403016060860152611acf8383611954565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611aff8383611a25565b925060a08601519150808584030160c086015250611b1d8282611a25565b91505060c0840151611b3a60e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119b1575f80fd5b5f60408284031215611b68575f80fd5b611b7061181f565b9050813563ffffffff81168114611b85575f80fd5b81526020828101356001600160401b0380821115611ba1575f80fd5b818501915085601f830112611bb4575f80fd5b813581811115611bc657611bc661180b565b8060051b9150611bd7848301611869565b8181529183018401918481019088841115611bf0575f80fd5b938501935b83851015611c1557611c0685611b42565b82529385019390850190611bf5565b808688015250505050505092915050565b5f60208284031215611c36575f80fd5b81356001600160401b0380821115611c4c575f80fd5b9083019060e08286031215611c5f575f80fd5b611c67611847565b82358152602083013582811115611c7c575f80fd5b611c8887828601611899565b602083015250604083013582811115611c9f575f80fd5b611cab87828601611899565b604083015250611cbd6060840161199b565b6060820152608083013582811115611cd3575f80fd5b611cdf87828601611b58565b60808301525060a083013582811115611cf6575f80fd5b611d0287828601611b58565b60a083015250611d1460c0840161199b565b60c082015295945050505050565b828152604060208201525f6119356040830184611954565b5f8060408385031215611d4b575f80fd5b82359150611d5b6020840161199b565b90509250929050565b5f8060408385031215611d75575f80fd5b8235915060208301358015158114611d8b575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611d96565b808202811582820484141761177b5761177b611d96565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611d96565b5f60208284031215611e0b575f80fd5b61199482611b42565b5f808335601e19843603018112611e29575f80fd5b8301803591506001600160401b03821115611e42575f80fd5b6020019150600581901b3603821315611e59575f80fd5b9250929050565b5f8235605e19833603018112611e74575f80fd5b9190910192915050565b5f808335601e19843603018112611e93575f80fd5b8301803591506001600160401b03821115611eac575f80fd5b602001915036819003821315611e59575f80fd5b5f60208284031215611ed0575f80fd5b6119948261199b565b5f81518060208401855e5f93019283525090919050565b5f611efb828a611ed9565b60e089901b6001600160e01b0319168152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611d96565b63ffffffff818116838216028082169190828114611f8c57611f8c611d96565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152611fdc611fd6602a85018a611ed9565b88611ed9565b60c09690961b6001600160c01b031916865260e094851b811660088701529290931b909116600c84015250506010019695505050505050565b5f6120208285611ed9565b60609390931b6bffffffffffffffffffffffff191683525050601401919050565b5f61204c8286611ed9565b6001600160e01b031960e095861b811682529390941b90921660048401525050600801919050565b5f61207f8285611ed9565b60c09390931b6001600160c01b03191683525050600801919050565b5f6119948284611ed9565b5f602082840312156120b6575f80fd5b505191905056fea26469706673582212207d656061d8f95ab589d4afa49d2d1306b172ed85e5bb91ff860b1398145156c164736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 727e110d5..bf9a2db99 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -4040,7 +4040,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516137cb3803806137cb83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61367e8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461287e565b610312565b005b6101496101593660046128ad565b6105a2565b61014961016c3660046128fb565b610ba8565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461287e565b610bb6565b6040516001600160401b03909116815260200161018a565b610149610bca565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461287e565b610bdd565b6101cd61025a36600461292a565b610bf2565b61014961026d3660046128fb565b610c0e565b6102216005600160991b0181565b6101cd5f8051602061360983398151915281565b6101496102a236600461287e565b610e03565b6101e3601481565b6101496102bd366004612983565b610f40565b6102d56102d036600461287e565b61104e565b60405161018a9190612a21565b6101a66202a30081565b6101496102fa366004612aa1565b61119d565b6101cd61030d366004612ac3565b6111da565b5f8181525f805160206136298339815191526020526040808220815160e0810190925280545f8051602061360983398151915293929190829060ff16600581111561035f5761035f6129bf565b6005811115610370576103706129bf565b815260200160018201805461038490612b2e565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612b2e565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610466576104666129bf565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b60405180910390fd5b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c7a565b6040518263ffffffff1660e01b815260040161055c9190612cb3565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612cc5565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206136098339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612cc5565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612aa1565b6001600160a01b0316146106d8576106b36060840160408501612aa1565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612cdc565b905090505f805b828163ffffffff1610156109ce575f6107096060880188612cdc565b8363ffffffff1681811061071f5761071f612d21565b90506020028101906107319190612d35565b61073a90612da0565b80516040519192505f91600888019161075291612e19565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612cb3565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612e19565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612cc5565b90508086600801835f01516040516108219190612e19565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156108a3576108a36129bf565b0217905550602082015160018201906108bc9082612e7a565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610961911685612f4d565b825160405191955061097291612e19565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109c790612f60565b90506106ed565b506004830181905560018301546064906109f290600160401b900460ff1683612f82565b1015610a1457604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610a3887611235565b604001516040518263ffffffff1660e01b8152600401610a589190612cb3565b602060405180830381865af4158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190612cc5565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ad191906130bc565b5f60405180830381865af4158015610aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b129190810190612c7a565b90505f600282604051610b259190612e19565b602060405180830381855afa158015610b40573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b639190612cc5565b9050828114610b8f57604051631872fc8d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610bb18161134b565b505050565b5f610bc08261104e565b6080015192915050565b610bd26116fe565b610bdb5f611759565b565b610be56116fe565b610bee816117c9565b5050565b5f610bfb6116fe565b610c058383611aad565b90505b92915050565b5f805160206136098339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb5610c4186611235565b604001516040518263ffffffff1660e01b8152600401610c619190612cb3565b6040805180830381865af4158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f919061315f565b9150915080610cc557604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610cdf90612b2e565b90505f03610d035760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610d2957610d296129bf565b14610d5c575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b5f8281526006840160205260408120610d74916127f2565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206136098339815191529190610e4a90612b2e565b90505f03610e6e5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e9457610e946129bf565b14610ec7575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f009190600401613180565b6020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190612cc5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f845750825b90505f826001600160401b03166001148015610f9f5750303b155b905081158015610fad575080155b15610fcb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ff557845460ff60401b1916600160401b1785555b610fff8787612095565b831561104557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611056612829565b5f8281525f80516020613629833981519152602052604090819020815160e0810190925280545f80516020613609833981519152929190829060ff1660058111156110a3576110a36129bf565b60058111156110b4576110b46129bf565b81526020016001820180546110c890612b2e565b80601f01602080910402602001604051908101604052809291908181526020018280546110f490612b2e565b801561113f5780601f106111165761010080835404028352916020019161113f565b820191905f5260205f20905b81548152906001019060200180831161112257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6111a56116fe565b6001600160a01b0381166111ce57604051631e4fbdf760e01b81525f6004820152602401610499565b6111d781611759565b50565b6040515f905f80516020613609833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061121d908690869061320a565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112c09190810190613219565b91509150806112e257604051636b2f19e960e01b815260040160405180910390fd5b815115611308578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b031615611344576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f611354612829565b5f805160206136098339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561138788611235565b604001516040518263ffffffff1660e01b81526004016113a79190612cb3565b6040805180830381865af41580156113c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e5919061315f565b91509150801561140c57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561143d5761143d6129bf565b600581111561144e5761144e6129bf565b815260200160018201805461146290612b2e565b80601f016020809104026020016040519081016040528092919081815260200182805461148e90612b2e565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115611544576115446129bf565b141580156115655750600181516005811115611562576115626129bf565b14155b1561158657805160405163170cc93360e21b81526104999190600401612b66565b60038151600581111561159b5761159b6129bf565b036115a957600481526115ae565b600581525b8360080181602001516040516115c49190612e19565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115611608576116086129bf565b0217905550602082015160018201906116219082612e7a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116c7576116c76129bf565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bdb5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117d1612829565b5f8281525f805160206136298339815191526020526040808220815160e0810190925280545f8051602061360983398151915293929190829060ff16600581111561181e5761181e6129bf565b600581111561182f5761182f6129bf565b815260200160018201805461184390612b2e565b80601f016020809104026020016040519081016040528092919081815260200182805461186f90612b2e565b80156118ba5780601f10611891576101008083540402835291602001916118ba565b820191905f5260205f20905b81548152906001019060200180831161189d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611928576119286129bf565b1461195b575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b66565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561199f5761199f6129bf565b0217905550602082015160018201906119b89082612e7a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a5685826120af565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611af157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061360983398151915242611b1060608601604087016132a6565b6001600160401b0316111580611b4a5750611b2e6202a30042612f4d565b611b3e60608601604087016132a6565b6001600160401b031610155b15611b8457611b5f60608501604086016132a6565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b99611b9460608601866132bf565b612286565b611ba9611b9460808601866132bf565b6030611bb860208601866132d3565b905014611bea57611bcc60208501856132d3565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bf484806132d3565b90505f03611c2157611c0684806132d3565b604051633e08a12560e11b8152600401610499929190613315565b5f60088201611c3086806132d3565b604051611c3e92919061320a565b90815260200160405180910390205414611c7757611c5c84806132d3565b60405163a41f772f60e01b8152600401610499929190613315565b611c81835f6123ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101611cbe8a806132d3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d06908b018b6132d3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d4f60608b0160408c016132a6565b6001600160401b03168152602001611d6a60608b018b6132bf565b611d7390613328565b8152602001611d8560808b018b6132bf565b611d8e90613328565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dbc9190613455565b5f60405180830381865af4158015611dd6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dfd919081019061350c565b5f82815260068601602052604090209193509150611e1b8282612e7a565b508160088401611e2b88806132d3565b604051611e3992919061320a565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e75908590600401612cb3565b6020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190612cc5565b6040805160e081019091529091508060018152602001611ed589806132d3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611f6457611f646129bf565b021790555060208201516001820190611f7d9082612e7a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558061201b88806132d3565b60405161202992919061320a565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061206791906132a6565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61209d612612565b6120a68261265b565b610bee81612674565b5f8281525f80516020613629833981519152602052604081206002015481905f8051602061360983398151915290600160801b90046001600160401b03166120f785826123ef565b5f61210187612685565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156121aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d19190810190612c7a565b6040518263ffffffff1660e01b81526004016121ed9190612cb3565b6020604051808303815f875af1158015612209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222d9190612cc5565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61229360208201826128fb565b63ffffffff161580156122b357506122ae6020820182612cdc565b151590505b156122fa576122c560208201826128fb565b6122d26020830183612cdc565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6123076020820182612cdc565b905061231660208301836128fb565b63ffffffff16111561232f576122c560208201826128fb565b60015b61233f6020830183612cdc565b9050811015610bee576123556020830183612cdc565b61236060018461354f565b81811061236f5761236f612d21565b90506020020160208101906123849190612aa1565b6001600160a01b031661239a6020840184612cdc565b838181106123aa576123aa612d21565b90506020020160208101906123bf9190612aa1565b6001600160a01b031610156123e757604051630dbc8d5f60e31b815260040160405180910390fd5b600101612332565b5f805160206136098339815191525f6001600160401b0380841690851611156124235761241c8385613562565b9050612430565b61242d8484613562565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061249257506001840154815161248e916001600160401b031690612f4d565b8210155b156124b8576001600160401b0383166060820152818152604081015160208201526124d7565b82816060018181516124ca9190613582565b6001600160401b03169052505b60608101516124e79060646135a2565b602082015160018601546001600160401b0392909216916125129190600160401b900460ff16612f82565b101561254257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b03168160400181815161255d9190612f4d565b9052506040810180516001600160401b038716919061257d90839061354f565b905250600184015460408201516064916125a291600160401b90910460ff1690612f82565b10156125c9578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610bdb57604051631afcd79f60e31b815260040160405180910390fd5b612663612612565b61266b6126fa565b6111d781612702565b61267c612612565b6111d7816127ea565b5f8181525f805160206136298339815191526020526040812060020180545f8051602061360983398151915291906008906126cf90600160401b90046001600160401b03166135cd565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610bdb612612565b61270a612612565b80355f80516020613609833981519152908155601461272f60608401604085016135e8565b60ff16118061274e575061274960608301604084016135e8565b60ff16155b156127825761276360608301604084016135e8565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61279260608301604084016135e8565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556127c360408301602084016132a6565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111a5612612565b5080546127fe90612b2e565b5f825580601f1061280d575050565b601f0160209004905f5260205f20908101906111d79190612866565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561287a575f8155600101612867565b5090565b5f6020828403121561288e575f80fd5b5035919050565b803563ffffffff811681146128a8575f80fd5b919050565b5f80604083850312156128be575f80fd5b82356001600160401b038111156128d3575f80fd5b8301608081860312156128e4575f80fd5b91506128f260208401612895565b90509250929050565b5f6020828403121561290b575f80fd5b610c0582612895565b80356001600160401b03811681146128a8575f80fd5b5f806040838503121561293b575f80fd5b82356001600160401b03811115612950575f80fd5b830160a08186031215612961575f80fd5b91506128f260208401612914565b6001600160a01b03811681146111d7575f80fd5b5f808284036080811215612995575f80fd5b60608112156129a2575f80fd5b5082915060608301356129b48161296f565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106129ef57634e487b7160e01b5f52602160045260245ffd5b9052565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152612a336020820183516129d3565b5f602083015160e06040840152612a4e6101008401826129f3565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612ab1575f80fd5b8135612abc8161296f565b9392505050565b5f8060208385031215612ad4575f80fd5b82356001600160401b0380821115612aea575f80fd5b818501915085601f830112612afd575f80fd5b813581811115612b0b575f80fd5b866020828501011115612b1c575f80fd5b60209290920196919550909350505050565b600181811c90821680612b4257607f821691505b602082108103612b6057634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c0882846129d3565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612baa57612baa612b74565b60405290565b604080519081016001600160401b0381118282101715612baa57612baa612b74565b604051601f8201601f191681016001600160401b0381118282101715612bfa57612bfa612b74565b604052919050565b5f6001600160401b03821115612c1a57612c1a612b74565b50601f01601f191660200190565b5f82601f830112612c37575f80fd5b8151612c4a612c4582612c02565b612bd2565b818152846020838601011115612c5e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215612c8a575f80fd5b81516001600160401b03811115612c9f575f80fd5b612cab84828501612c28565b949350505050565b602081525f610c0560208301846129f3565b5f60208284031215612cd5575f80fd5b5051919050565b5f808335601e19843603018112612cf1575f80fd5b8301803591506001600160401b03821115612d0a575f80fd5b6020019150600581901b360382131561227f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d49575f80fd5b9190910192915050565b5f82601f830112612d62575f80fd5b8135612d70612c4582612c02565b818152846020838601011115612d84575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612db0575f80fd5b612db8612b88565b82356001600160401b0380821115612dce575f80fd5b612dda36838701612d53565b83526020850135915080821115612def575f80fd5b50612dfc36828601612d53565b602083015250612e0e60408401612914565b604082015292915050565b5f82518060208501845e5f920191825250919050565b601f821115610bb157805f5260205f20601f840160051c81016020851015612e545750805b601f840160051c820191505b81811015612e73575f8155600101612e60565b5050505050565b81516001600160401b03811115612e9357612e93612b74565b612ea781612ea18454612b2e565b84612e2f565b602080601f831160018114612eda575f8415612ec35750858301515b5f19600386901b1c1916600185901b178555612f31565b5f85815260208120601f198616915b82811015612f0857888601518255948401946001909101908401612ee9565b5085821015612f2557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0857610c08612f39565b5f63ffffffff808316818103612f7857612f78612f39565b6001019392505050565b8082028115828204841417610c0857610c08612f39565b5f808335601e19843603018112612fae575f80fd5b83016020810192503590506001600160401b03811115612fcc575f80fd5b80360382131561227f575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156130af57848303601f19018952813536889003605e1901811261303e575f80fd5b8701606061304c8280612f99565b82875261305c8388018284612fda565b9250505061306c86830183612f99565b8683038888015261307e838284612fda565b9250505060406001600160401b03613097828501612914565b16950194909452509783019790830190600101613019565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356130e08161296f565b6001600160a01b031660608381019190915283013536849003601e19018112613107575f80fd5b83016020810190356001600160401b03811115613122575f80fd5b8060051b3603821315613133575f80fd5b60808085015261314760a085018284613002565b95945050505050565b805180151581146128a8575f80fd5b5f8060408385031215613170575f80fd5b825191506128f260208401613150565b5f60208083525f845461319281612b2e565b806020870152604060018084165f81146131b357600181146131cf576131fc565b60ff19851660408a0152604084151560051b8a010195506131fc565b895f5260205f205f5b858110156131f35781548b82018601529083019088016131d8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f806040838503121561322a575f80fd5b82516001600160401b0380821115613240575f80fd5b9084019060608287031215613253575f80fd5b61325b612b88565b82518152602083015161326d8161296f565b6020820152604083015182811115613283575f80fd5b61328f88828601612c28565b60408301525093506128f291505060208401613150565b5f602082840312156132b6575f80fd5b610c0582612914565b5f8235603e19833603018112612d49575f80fd5b5f808335601e198436030181126132e8575f80fd5b8301803591506001600160401b03821115613301575f80fd5b60200191503681900382131561227f575f80fd5b602081525f612cab602083018486612fda565b5f60408236031215613338575f80fd5b613340612bb0565b61334983612895565b81526020808401356001600160401b0380821115613365575f80fd5b9085019036601f830112613377575f80fd5b81358181111561338957613389612b74565b8060051b915061339a848301612bd2565b81815291830184019184810190368411156133b3575f80fd5b938501935b838510156133dd57843592506133cd8361296f565b82825293850193908501906133b8565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561344a5784516001600160a01b03168252938301936001929092019190830190613421565b509695505050505050565b60208152815160208201525f602083015160e0604084015261347b6101008401826129f3565b90506040840151601f198085840301606086015261349983836129f3565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134c983836133ef565b925060a08601519150808584030160c0860152506134e782826133ef565b91505060c084015161350460e08501826001600160401b03169052565b509392505050565b5f806040838503121561351d575f80fd5b8251915060208301516001600160401b03811115613539575f80fd5b61354585828601612c28565b9150509250929050565b81810381811115610c0857610c08612f39565b6001600160401b0382811682821603908082111561134457611344612f39565b6001600160401b0381811683821601908082111561134457611344612f39565b6001600160401b038181168382160280821691908281146135c5576135c5612f39565b505092915050565b5f6001600160401b03808316818103612f7857612f78612f39565b5f602082840312156135f8575f80fd5b813560ff81168114612abc575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220f90bd50d71afec718957216078721668080cbd5385bd95622edb665e483dcba964736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040516137da3803806137da83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61368d8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461287e565b610312565b005b6101496101593660046128ad565b6105a2565b61014961016c3660046128fb565b610ba8565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461287e565b610bb6565b6040516001600160401b03909116815260200161018a565b610149610bca565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461287e565b610bdd565b6101cd61025a36600461292a565b610bf2565b61014961026d3660046128fb565b610c0e565b6102216005600160991b0181565b6101cd5f8051602061361883398151915281565b6101496102a236600461287e565b610e03565b6101e3601481565b6101496102bd366004612983565b610f40565b6102d56102d036600461287e565b61104e565b60405161018a9190612a40565b6101a66202a30081565b6101496102fa366004612ac0565b61119d565b6101cd61030d366004612ae2565b6111da565b5f8181525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561035f5761035f6129bf565b6005811115610370576103706129bf565b815260200160018201805461038490612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612b4d565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610466576104666129bf565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60405180910390fd5b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c96565b6040518263ffffffff1660e01b815260040161055c9190612cc7565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612cd9565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206136188339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612cd9565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612ac0565b6001600160a01b0316146106d8576106b36060840160408501612ac0565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612cf0565b905090505f805b828163ffffffff1610156109ce575f6107096060880188612cf0565b8363ffffffff1681811061071f5761071f612d35565b90506020028101906107319190612d49565b61073a90612db4565b80516040519192505f91600888019161075291612e2d565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612cc7565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612e2d565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612cd9565b90508086600801835f01516040516108219190612e2d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156108a3576108a36129bf565b0217905550602082015160018201906108bc9082612e89565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610961911685612f5c565b825160405191955061097291612e2d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109c790612f6f565b90506106ed565b506004830181905560018301546064906109f290600160401b900460ff1683612f91565b1015610a1457604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610a3887611235565b604001516040518263ffffffff1660e01b8152600401610a589190612cc7565b602060405180830381865af4158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190612cd9565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ad191906130cb565b5f60405180830381865af4158015610aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b129190810190612c96565b90505f600282604051610b259190612e2d565b602060405180830381855afa158015610b40573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b639190612cd9565b9050828114610b8f57604051631872fc8d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610bb18161134b565b505050565b5f610bc08261104e565b6080015192915050565b610bd26116fe565b610bdb5f611759565b565b610be56116fe565b610bee816117c9565b5050565b5f610bfb6116fe565b610c058383611aad565b90505b92915050565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb5610c4186611235565b604001516040518263ffffffff1660e01b8152600401610c619190612cc7565b6040805180830381865af4158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f919061316e565b9150915080610cc557604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610cdf90612b4d565b90505f03610d035760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610d2957610d296129bf565b14610d5c575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f8281526006840160205260408120610d74916127f2565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206136188339815191529190610e4a90612b4d565b90505f03610e6e5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e9457610e946129bf565b14610ec7575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f00919060040161318f565b6020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190612cd9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f845750825b90505f826001600160401b03166001148015610f9f5750303b155b905081158015610fad575080155b15610fcb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ff557845460ff60401b1916600160401b1785555b610fff8787612095565b831561104557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611056612829565b5f8281525f80516020613638833981519152602052604090819020815160e0810190925280545f80516020613618833981519152929190829060ff1660058111156110a3576110a36129bf565b60058111156110b4576110b46129bf565b81526020016001820180546110c890612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546110f490612b4d565b801561113f5780601f106111165761010080835404028352916020019161113f565b820191905f5260205f20905b81548152906001019060200180831161112257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6111a56116fe565b6001600160a01b0381166111ce57604051631e4fbdf760e01b81525f6004820152602401610499565b6111d781611759565b50565b6040515f905f80516020613618833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061121d9086908690613219565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112c09190810190613228565b91509150806112e257604051636b2f19e960e01b815260040160405180910390fd5b815115611308578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b031615611344576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f611354612829565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561138788611235565b604001516040518263ffffffff1660e01b81526004016113a79190612cc7565b6040805180830381865af41580156113c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e5919061316e565b91509150801561140c57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561143d5761143d6129bf565b600581111561144e5761144e6129bf565b815260200160018201805461146290612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461148e90612b4d565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115611544576115446129bf565b141580156115655750600181516005811115611562576115626129bf565b14155b1561158657805160405163170cc93360e21b81526104999190600401612b85565b60038151600581111561159b5761159b6129bf565b036115a957600481526115ae565b600581525b8360080181602001516040516115c49190612e2d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115611608576116086129bf565b0217905550602082015160018201906116219082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116c7576116c76129bf565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bdb5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117d1612829565b5f8281525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561181e5761181e6129bf565b600581111561182f5761182f6129bf565b815260200160018201805461184390612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461186f90612b4d565b80156118ba5780601f10611891576101008083540402835291602001916118ba565b820191905f5260205f20905b81548152906001019060200180831161189d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611928576119286129bf565b1461195b575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561199f5761199f6129bf565b0217905550602082015160018201906119b89082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a5685826120af565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611af157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061361883398151915242611b1060608601604087016132b5565b6001600160401b0316111580611b4a5750611b2e6202a30042612f5c565b611b3e60608601604087016132b5565b6001600160401b031610155b15611b8457611b5f60608501604086016132b5565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b99611b9460608601866132ce565b612286565b611ba9611b9460808601866132ce565b6030611bb860208601866132e2565b905014611bea57611bcc60208501856132e2565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bf484806132e2565b90505f03611c2157611c0684806132e2565b604051633e08a12560e11b8152600401610499929190613324565b5f60088201611c3086806132e2565b604051611c3e929190613219565b90815260200160405180910390205414611c7757611c5c84806132e2565b60405163a41f772f60e01b8152600401610499929190613324565b611c81835f6123ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101611cbe8a806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d06908b018b6132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d4f60608b0160408c016132b5565b6001600160401b03168152602001611d6a60608b018b6132ce565b611d7390613337565b8152602001611d8560808b018b6132ce565b611d8e90613337565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dbc9190613464565b5f60405180830381865af4158015611dd6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dfd919081019061351b565b5f82815260068601602052604090209193509150611e1b8282612e89565b508160088401611e2b88806132e2565b604051611e39929190613219565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e75908590600401612cc7565b6020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190612cd9565b6040805160e081019091529091508060018152602001611ed589806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611f6457611f646129bf565b021790555060208201516001820190611f7d9082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558061201b88806132e2565b604051612029929190613219565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061206791906132b5565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61209d612612565b6120a68261265b565b610bee81612674565b5f8281525f80516020613638833981519152602052604081206002015481905f8051602061361883398151915290600160801b90046001600160401b03166120f785826123ef565b5f61210187612685565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156121aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d19190810190612c96565b6040518263ffffffff1660e01b81526004016121ed9190612cc7565b6020604051808303815f875af1158015612209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222d9190612cd9565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61229360208201826128fb565b63ffffffff161580156122b357506122ae6020820182612cf0565b151590505b156122fa576122c560208201826128fb565b6122d26020830183612cf0565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6123076020820182612cf0565b905061231660208301836128fb565b63ffffffff16111561232f576122c560208201826128fb565b60015b61233f6020830183612cf0565b9050811015610bee576123556020830183612cf0565b61236060018461355e565b81811061236f5761236f612d35565b90506020020160208101906123849190612ac0565b6001600160a01b031661239a6020840184612cf0565b838181106123aa576123aa612d35565b90506020020160208101906123bf9190612ac0565b6001600160a01b031610156123e757604051630dbc8d5f60e31b815260040160405180910390fd5b600101612332565b5f805160206136188339815191525f6001600160401b0380841690851611156124235761241c8385613571565b9050612430565b61242d8484613571565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061249257506001840154815161248e916001600160401b031690612f5c565b8210155b156124b8576001600160401b0383166060820152818152604081015160208201526124d7565b82816060018181516124ca9190613591565b6001600160401b03169052505b60608101516124e79060646135b1565b602082015160018601546001600160401b0392909216916125129190600160401b900460ff16612f91565b101561254257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b03168160400181815161255d9190612f5c565b9052506040810180516001600160401b038716919061257d90839061355e565b905250600184015460408201516064916125a291600160401b90910460ff1690612f91565b10156125c9578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610bdb57604051631afcd79f60e31b815260040160405180910390fd5b612663612612565b61266b6126fa565b6111d781612702565b61267c612612565b6111d7816127ea565b5f8181525f805160206136388339815191526020526040812060020180545f8051602061361883398151915291906008906126cf90600160401b90046001600160401b03166135dc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610bdb612612565b61270a612612565b80355f80516020613618833981519152908155601461272f60608401604085016135f7565b60ff16118061274e575061274960608301604084016135f7565b60ff16155b156127825761276360608301604084016135f7565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61279260608301604084016135f7565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556127c360408301602084016132b5565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111a5612612565b5080546127fe90612b4d565b5f825580601f1061280d575050565b601f0160209004905f5260205f20908101906111d79190612866565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561287a575f8155600101612867565b5090565b5f6020828403121561288e575f80fd5b5035919050565b803563ffffffff811681146128a8575f80fd5b919050565b5f80604083850312156128be575f80fd5b82356001600160401b038111156128d3575f80fd5b8301608081860312156128e4575f80fd5b91506128f260208401612895565b90509250929050565b5f6020828403121561290b575f80fd5b610c0582612895565b80356001600160401b03811681146128a8575f80fd5b5f806040838503121561293b575f80fd5b82356001600160401b03811115612950575f80fd5b830160a08186031215612961575f80fd5b91506128f260208401612914565b6001600160a01b03811681146111d7575f80fd5b5f808284036080811215612995575f80fd5b60608112156129a2575f80fd5b5082915060608301356129b48161296f565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106129ef57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612a0d5781810151838201526020016129f5565b50505f910152565b5f8151808452612a2c8160208601602086016129f3565b601f01601f19169290920160200192915050565b60208152612a526020820183516129d3565b5f602083015160e06040840152612a6d610100840182612a15565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612ad0575f80fd5b8135612adb8161296f565b9392505050565b5f8060208385031215612af3575f80fd5b82356001600160401b0380821115612b09575f80fd5b818501915085601f830112612b1c575f80fd5b813581811115612b2a575f80fd5b866020828501011115612b3b575f80fd5b60209290920196919550909350505050565b600181811c90821680612b6157607f821691505b602082108103612b7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c0882846129d3565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612bc957612bc9612b93565b60405290565b604080519081016001600160401b0381118282101715612bc957612bc9612b93565b604051601f8201601f191681016001600160401b0381118282101715612c1957612c19612b93565b604052919050565b5f6001600160401b03821115612c3957612c39612b93565b50601f01601f191660200190565b5f82601f830112612c56575f80fd5b8151612c69612c6482612c21565b612bf1565b818152846020838601011115612c7d575f80fd5b612c8e8260208301602087016129f3565b949350505050565b5f60208284031215612ca6575f80fd5b81516001600160401b03811115612cbb575f80fd5b612c8e84828501612c47565b602081525f610c056020830184612a15565b5f60208284031215612ce9575f80fd5b5051919050565b5f808335601e19843603018112612d05575f80fd5b8301803591506001600160401b03821115612d1e575f80fd5b6020019150600581901b360382131561227f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d5d575f80fd5b9190910192915050565b5f82601f830112612d76575f80fd5b8135612d84612c6482612c21565b818152846020838601011115612d98575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612dc4575f80fd5b612dcc612ba7565b82356001600160401b0380821115612de2575f80fd5b612dee36838701612d67565b83526020850135915080821115612e03575f80fd5b50612e1036828601612d67565b602083015250612e2260408401612914565b604082015292915050565b5f8251612d5d8184602087016129f3565b601f821115610bb157805f5260205f20601f840160051c81016020851015612e635750805b601f840160051c820191505b81811015612e82575f8155600101612e6f565b5050505050565b81516001600160401b03811115612ea257612ea2612b93565b612eb681612eb08454612b4d565b84612e3e565b602080601f831160018114612ee9575f8415612ed25750858301515b5f19600386901b1c1916600185901b178555612f40565b5f85815260208120601f198616915b82811015612f1757888601518255948401946001909101908401612ef8565b5085821015612f3457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0857610c08612f48565b5f63ffffffff808316818103612f8757612f87612f48565b6001019392505050565b8082028115828204841417610c0857610c08612f48565b5f808335601e19843603018112612fbd575f80fd5b83016020810192503590506001600160401b03811115612fdb575f80fd5b80360382131561227f575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156130be57848303601f19018952813536889003605e1901811261304d575f80fd5b8701606061305b8280612fa8565b82875261306b8388018284612fe9565b9250505061307b86830183612fa8565b8683038888015261308d838284612fe9565b9250505060406001600160401b036130a6828501612914565b16950194909452509783019790830190600101613028565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356130ef8161296f565b6001600160a01b031660608381019190915283013536849003601e19018112613116575f80fd5b83016020810190356001600160401b03811115613131575f80fd5b8060051b3603821315613142575f80fd5b60808085015261315660a085018284613011565b95945050505050565b805180151581146128a8575f80fd5b5f806040838503121561317f575f80fd5b825191506128f26020840161315f565b5f60208083525f84546131a181612b4d565b806020870152604060018084165f81146131c257600181146131de5761320b565b60ff19851660408a0152604084151560051b8a0101955061320b565b895f5260205f205f5b858110156132025781548b82018601529083019088016131e7565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f8060408385031215613239575f80fd5b82516001600160401b038082111561324f575f80fd5b9084019060608287031215613262575f80fd5b61326a612ba7565b82518152602083015161327c8161296f565b6020820152604083015182811115613292575f80fd5b61329e88828601612c47565b60408301525093506128f29150506020840161315f565b5f602082840312156132c5575f80fd5b610c0582612914565b5f8235603e19833603018112612d5d575f80fd5b5f808335601e198436030181126132f7575f80fd5b8301803591506001600160401b03821115613310575f80fd5b60200191503681900382131561227f575f80fd5b602081525f612c8e602083018486612fe9565b5f60408236031215613347575f80fd5b61334f612bcf565b61335883612895565b81526020808401356001600160401b0380821115613374575f80fd5b9085019036601f830112613386575f80fd5b81358181111561339857613398612b93565b8060051b91506133a9848301612bf1565b81815291830184019184810190368411156133c2575f80fd5b938501935b838510156133ec57843592506133dc8361296f565b82825293850193908501906133c7565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156134595784516001600160a01b03168252938301936001929092019190830190613430565b509695505050505050565b60208152815160208201525f602083015160e0604084015261348a610100840182612a15565b90506040840151601f19808584030160608601526134a88383612a15565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134d883836133fe565b925060a08601519150808584030160c0860152506134f682826133fe565b91505060c084015161351360e08501826001600160401b03169052565b509392505050565b5f806040838503121561352c575f80fd5b8251915060208301516001600160401b03811115613548575f80fd5b61355485828601612c47565b9150509250929050565b81810381811115610c0857610c08612f48565b6001600160401b0382811682821603908082111561134457611344612f48565b6001600160401b0381811683821601908082111561134457611344612f48565b6001600160401b038181168382160280821691908281146135d4576135d4612f48565b505092915050565b5f6001600160401b03808316818103612f8757612f87612f48565b5f60208284031215613607575f80fd5b813560ff81168114612adb575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212200dc58b43f7c5b3d7e1e4a5efa2639d967fff9e57b3fdf2e81a11f4dc03b6197864736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -7608,7 +7608,7 @@ func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(lo // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x6120f3610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e19190611982565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119b6565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e53660046119ef565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611a8b565b610255610250366004611c26565b61154a565b6040516100e1929190611d22565b610145610271366004611d3a565b611737565b610145610284366004611d64565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611daa565b6102e6906008611dbd565b61ffff168582815181106102fc576102fc611dd4565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611daa565b61035f906008611dbd565b63ffffffff1686610371836002611de8565b8151811061038157610381611dd4565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611daa565b6103e0906008611dbd565b876103ec836006611de8565b815181106103fc576103fc611dd4565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611daa565b610436906008611dbd565b6001600160401b03168861044b836026611de8565b8151811061045b5761045b611dd4565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611daa565b6104d6906008611dbd565b61ffff168482815181106104ec576104ec611dd4565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611daa565b61054f906008611dbd565b63ffffffff1685610561836002611de8565b8151811061057157610571611dd4565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611daa565b6105d0906008611dbd565b866105dc836006611de8565b815181106105ec576105ec611dd4565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611daa565b610664906008611dbd565b61ffff1685828151811061067a5761067a611dd4565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611daa565b6106dd906008611dbd565b63ffffffff16866106ef836002611de8565b815181106106ff576106ff611dd4565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611daa565b610760906008611dbd565b8761076c836006611de8565b8151811061077c5761077c611dd4565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611dd4565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611dfb565b6107f16060890189611e14565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e14565b90508110156109a2578161088e6060860186611e14565b8381811061089e5761089e611dd4565b90506020028101906108b09190611e60565b6108ba9080611e7e565b90506108c96060870187611e14565b848181106108d9576108d9611dd4565b90506020028101906108eb9190611e60565b6108f59080611e7e565b6109026060890189611e14565b8681811061091257610912611dd4565b90506020028101906109249190611e60565b610932906020810190611e7e565b61093f60608b018b611e14565b8881811061094f5761094f611dd4565b90506020028101906109619190611e60565b610972906060810190604001611ec0565b6040516020016109889796959493929190611ef0565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611daa565b610a02906008611dbd565b61ffff16868281518110610a1857610a18611dd4565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611daa565b610a7b906008611dbd565b63ffffffff1687610a8d836002611de8565b81518110610a9d57610a9d611dd4565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611daa565b610afe906008611dbd565b88610b0a836006611de8565b81518110610b1a57610b1a611dd4565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611daa565b610b54906008611dbd565b6001600160401b031689610b69836026611de8565b81518110610b7957610b79611dd4565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611daa565b610bb3906008611dbd565b6001600160401b03168a610bc883602e611de8565b81518110610bd857610bd8611dd4565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611daa565b610c32906008611dbd565b61ffff1686610c4763ffffffff871684611de8565b81518110610c5757610c57611dd4565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f4f565b9250505f805b6004811015610d0857610cbd816003611daa565b610cc8906008611dbd565b63ffffffff16868563ffffffff1683610ce19190611de8565b81518110610cf157610cf1611dd4565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f4f565b9250505f805b6020811015610d9857610d5581601f611daa565b610d60906008611dbd565b86610d7163ffffffff871684611de8565b81518110610d8157610d81611dd4565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f4f565b9250505f805b6004811015610e0c57610dc1816003611daa565b610dcc906008611dbd565b63ffffffff16868563ffffffff1683610de59190611de8565b81518110610df557610df5611dd4565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f4f565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611de8565b81518110610e9757610e97611dd4565b602001015160f81c60f81b828281518110610eb457610eb4611dd4565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f4f565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611de8565b81518110610f3557610f35611dd4565b602001015160f81c60f81b828281518110610f5257610f52611dd4565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f4f565b9350505f805b6008811015610fe957610f9d816007611daa565b610fa8906008611dbd565b6001600160401b031687610fc263ffffffff881684611de8565b81518110610fd257610fd2611dd4565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f4f565b9350505f805f5b600481101561106a5761101f816003611daa565b61102a906008611dbd565b63ffffffff16888763ffffffff16836110439190611de8565b8151811061105357611053611dd4565b016020015160f81c901b919091179060010161100b565b50611076600486611f4f565b94505f5b60048110156110d95761108e816003611daa565b611099906008611dbd565b63ffffffff16888763ffffffff16836110b29190611de8565b815181106110c2576110c2611dd4565b016020015160f81c901b929092179160010161107a565b506110e5600486611f4f565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611de8565b8151811061118e5761118e611dd4565b602001015160f81c60f81b8282815181106111ab576111ab611dd4565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611dd4565b6001600160a01b039092166020928302919091019091015261120860148a611f4f565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611daa565b611259906008611dbd565b63ffffffff16898863ffffffff16836112729190611de8565b8151811061128257611282611dd4565b016020015160f81c901b919091179060010161123a565b506112a5600487611f4f565b95505f5b6004811015611308576112bd816003611daa565b6112c8906008611dbd565b63ffffffff16898863ffffffff16836112e19190611de8565b815181106112f1576112f1611dd4565b016020015160f81c901b92909217916001016112a9565b50611314600487611f4f565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611de8565b815181106113bd576113bd611dd4565b602001015160f81c60f81b8282815181106113da576113da611dd4565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611dd4565b6001600160a01b039092166020928302919091019091015261143760148b611f4f565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f4f565b61147b906014611f6c565b61148685607a611f4f565b6114909190611f4f565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611daa565b6114ee906008611dbd565b6001600160401b03168a61150863ffffffff8b1684611de8565b8151811061151857611518611dd4565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611f94565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611dd4565b602002602001015160405160200161160c929190612015565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612041565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611dd4565b602002602001015160405160200161169e929190612015565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf918391602001612074565b60405160208183030381529060405290506002816040516116f0919061209b565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e91906120a6565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6119946020830184611954565b9392505050565b80356001600160401b03811681146119b1575f80fd5b919050565b5f805f606084860312156119c8575f80fd5b833592506119d86020850161199b565b91506119e66040850161199b565b90509250925092565b5f602082840312156119ff575f80fd5b81356001600160401b03811115611a14575f80fd5b820160808185031215611994575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a805784516001600160a01b03168252938301936001929092019190830190611a57565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ab1610100840182611954565b90506040840151601f1980858403016060860152611acf8383611954565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611aff8383611a25565b925060a08601519150808584030160c086015250611b1d8282611a25565b91505060c0840151611b3a60e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119b1575f80fd5b5f60408284031215611b68575f80fd5b611b7061181f565b9050813563ffffffff81168114611b85575f80fd5b81526020828101356001600160401b0380821115611ba1575f80fd5b818501915085601f830112611bb4575f80fd5b813581811115611bc657611bc661180b565b8060051b9150611bd7848301611869565b8181529183018401918481019088841115611bf0575f80fd5b938501935b83851015611c1557611c0685611b42565b82529385019390850190611bf5565b808688015250505050505092915050565b5f60208284031215611c36575f80fd5b81356001600160401b0380821115611c4c575f80fd5b9083019060e08286031215611c5f575f80fd5b611c67611847565b82358152602083013582811115611c7c575f80fd5b611c8887828601611899565b602083015250604083013582811115611c9f575f80fd5b611cab87828601611899565b604083015250611cbd6060840161199b565b6060820152608083013582811115611cd3575f80fd5b611cdf87828601611b58565b60808301525060a083013582811115611cf6575f80fd5b611d0287828601611b58565b60a083015250611d1460c0840161199b565b60c082015295945050505050565b828152604060208201525f6119356040830184611954565b5f8060408385031215611d4b575f80fd5b82359150611d5b6020840161199b565b90509250929050565b5f8060408385031215611d75575f80fd5b8235915060208301358015158114611d8b575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611d96565b808202811582820484141761177b5761177b611d96565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611d96565b5f60208284031215611e0b575f80fd5b61199482611b42565b5f808335601e19843603018112611e29575f80fd5b8301803591506001600160401b03821115611e42575f80fd5b6020019150600581901b3603821315611e59575f80fd5b9250929050565b5f8235605e19833603018112611e74575f80fd5b9190910192915050565b5f808335601e19843603018112611e93575f80fd5b8301803591506001600160401b03821115611eac575f80fd5b602001915036819003821315611e59575f80fd5b5f60208284031215611ed0575f80fd5b6119948261199b565b5f81518060208401855e5f93019283525090919050565b5f611efb828a611ed9565b60e089901b6001600160e01b0319168152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611d96565b63ffffffff818116838216028082169190828114611f8c57611f8c611d96565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152611fdc611fd6602a85018a611ed9565b88611ed9565b60c09690961b6001600160c01b031916865260e094851b811660088701529290931b909116600c84015250506010019695505050505050565b5f6120208285611ed9565b60609390931b6bffffffffffffffffffffffff191683525050601401919050565b5f61204c8286611ed9565b6001600160e01b031960e095861b811682529390941b90921660048401525050600801919050565b5f61207f8285611ed9565b60c09390931b6001600160c01b03191683525050600801919050565b5f6119948284611ed9565b5f602082840312156120b6575f80fd5b505191905056fea26469706673582212207d656061d8f95ab589d4afa49d2d1306b172ed85e5bb91ff860b1398145156c164736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index d491f1f42..700478801 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -75,7 +75,7 @@ function generate_bindings() { cwd=$(pwd) cd $TELEPORTER_PATH - solc --optimize --optimize-runs 200 --combined-json abi,bin,metadata,ast,devdoc,userdoc $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json + solc --optimize --evm-version shanghai --combined-json abi,bin,metadata,ast,devdoc,userdoc $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json cd $cwd echo "Generating Go bindings for $contract_name..." From ff76c1c03caa361ee6eaab20b6e3684f598c6e52 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Mon, 21 Oct 2024 16:52:09 -0500 Subject: [PATCH 12/43] pretty output --- scripts/abi_bindings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 700478801..d846f71ec 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -75,7 +75,7 @@ function generate_bindings() { cwd=$(pwd) cd $TELEPORTER_PATH - solc --optimize --evm-version shanghai --combined-json abi,bin,metadata,ast,devdoc,userdoc $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json + solc --optimize --evm-version shanghai --combined-json abi,bin,metadata,ast,devdoc,userdoc --pretty-json $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json cd $cwd echo "Generating Go bindings for $contract_name..." From c54d8803853fb2b5ceb25b5f43988929e954322c Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Mon, 21 Oct 2024 17:20:18 -0500 Subject: [PATCH 13/43] remove internal validatormessages pt1 --- .../tests/PoSValidatorManagerTests.t.sol | 333 ++++++++++++++++-- .../tests/ValidatorManagerTests.t.sol | 40 ++- 2 files changed, 336 insertions(+), 37 deletions(-) diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index d4921fac3..7f2132555 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -572,12 +572,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testResendEndValidation() public override { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, - expectedNonce: 1, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); @@ -628,12 +634,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInitializeDelegatorRegistrationValidatorPendingRemoved() public { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, - completionTimestamp: DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION, - expectedNonce: 1, + completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); @@ -663,12 +675,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); uint64 validatorEndTime = DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION; + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 2, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, validatorEndTime-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: validatorEndTime, - expectedNonce: 2, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); @@ -685,12 +703,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInitializeEndDelegationValidatorPendingRemoved() public { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, - completionTimestamp: DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION, - expectedNonce: 1, + completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); @@ -724,12 +748,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); uint64 validationEndTime = DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP + 1; + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 3, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, validationEndTime-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: validationEndTime, - expectedNonce: 3, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); @@ -1017,12 +1047,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testCompleteEndValidation() public virtual override { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, - expectedNonce: 1, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); @@ -1044,12 +1080,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInitializeEndValidation() public virtual override { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, - expectedNonce: 1, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); } @@ -1135,12 +1177,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testForceInitializeEndValidation() public { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, - expectedNonce: 1, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: true }); } @@ -1169,6 +1217,245 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _forceInitializeEndValidation(validationID, true); } + function testClaimValidationReward() public { + bytes32 validationID = _registerDefaultValidator(); + uint64 uptimePercentage = 80; + uint64 claimTime = DEFAULT_COMPLETION_TIMESTAMP; + uint256 expectedReward = rewardCalculator.calculateReward({ + stakeAmount: _weightToValue(DEFAULT_WEIGHT), + validatorStartTime: 0, + stakingStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + stakingEndTime: claimTime, + uptimeSeconds: 0, + initialSupply: 0, + endSupply: 0 + }); + + bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, (claimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ); + _mockGetUptimeWarpMessage(uptimeMsg, true); + _mockGetBlockchainID(); + + vm.warp(claimTime); + _expectValidationRewardsIssuance(validationID, address(this), expectedReward); + posValidatorManager.claimValidationRewards(validationID, 0); + } + + function testClaimSubsequentValidationReward() public { + bytes32 validationID = _registerDefaultValidator(); + uint64 uptimePercentage = 80; + uint64 firstClaimTime = DEFAULT_COMPLETION_TIMESTAMP; + bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, (firstClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ); + _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + claimTime: firstClaimTime, + lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, + success: true + }); + + // Claim rewards again + uint64 secondClaimTime = firstClaimTime + 1000; + uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, + (secondClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ); + _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + claimTime: secondClaimTime, + lastClaimTime: firstClaimTime, + success: true + }); + } + + function testClaimValidationRewardStaleUptime() public { + uint64 validationStartTime = 0; + bytes32 validationID = _registerValidator({ + nodeID: DEFAULT_NODE_ID, + subnetID: DEFAULT_SUBNET_ID, + weight: DEFAULT_WEIGHT, + registrationExpiry: DEFAULT_EXPIRY, + blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, + registrationTimestamp: validationStartTime + }); + uint64 uptimePercentage = 80; + uint64 firstClaimTime = DEFAULT_MINIMUM_VALIDATION_DURATION + 1; // 24 hours + + bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, ((firstClaimTime - validationStartTime) * uptimePercentage / 100) + 1 + ); + _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: validationStartTime, + claimTime: firstClaimTime, + lastClaimTime: validationStartTime, + success: true + }); + + // Attempt to claim rewards again, but by submitting the same uptime + uint64 secondClaimTime = firstClaimTime + 5 hours; + _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: validationStartTime, + claimTime: secondClaimTime, + lastClaimTime: firstClaimTime, + success: false + }); + } + + function testClaimValidationRewardInsufficientUptime() public { + bytes32 validationID = _registerDefaultValidator(); + uint64 uptimePercentage = 79; + + bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, + (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ); + _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + claimTime: DEFAULT_COMPLETION_TIMESTAMP, + lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, + success: false + }); + } + + function testClaimValidationRewardWithDelegation() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + + // Claim validator rewards + uint64 uptimePercentage = 80; + uint64 claimTime = DEFAULT_COMPLETION_TIMESTAMP; + bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, (claimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ); + + _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + claimTime: claimTime, + lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, + success: true + }); + + // End the delegation and claim rewards + _initializeAndCompleteEndDelegationWithChecks(validationID, delegationID); + } + + function testEndValidationPreviouslyClaimedReward() public { + bytes32 validationID = _registerDefaultValidator(); + uint64 uptimePercentage = 80; + uint64 firstClaimTime = DEFAULT_COMPLETION_TIMESTAMP; + + bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, (firstClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ); + uint256 firstExpectedReward = _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + claimTime: firstClaimTime, + lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, + success: true + }); + + // Claim rewards again + uint64 secondClaimTime = firstClaimTime + 5 hours; + uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, + (secondClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ); + uint256 secondExpectedReward = _claimRewards({ + validationID: validationID, + uptimeMsg: uptimeMsg, + validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + claimTime: secondClaimTime, + lastClaimTime: firstClaimTime, + success: true + }); + + // Try to end the validation with a stale uptime + uint64 thirdClaimTime = secondClaimTime + 5 hours; + bytes memory setValidatorWeightPayload = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); + vm.expectRevert( + abi.encodeWithSelector(PoSValidatorManager.InvalidStakeAmount.selector, 1e11) + ); + _initializeEndValidation({ + validationID: validationID, + completionTimestamp: thirdClaimTime, + setWeightMessage: setValidatorWeightPayload, + includeUptime: false, + uptimeMessage: uptimeMsg, + force: false + }); + + // Try again with the correct uptime + uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, thirdClaimTime - DEFAULT_REGISTRATION_TIMESTAMP + ); + _initializeEndValidation({ + validationID: validationID, + completionTimestamp: thirdClaimTime, + setWeightMessage: setValidatorWeightPayload, + includeUptime: true, + uptimeMessage: uptimeMsg, + force: false + }); + + uint256 thirdExpectedReward = rewardCalculator.calculateReward({ + stakeAmount: _weightToValue(DEFAULT_WEIGHT), + validatorStartTime: 0, + stakingStartTime: secondClaimTime, + stakingEndTime: thirdClaimTime, + uptimeSeconds: 0, + initialSupply: 0, + endSupply: 0 + }); + + _completeEndValidationWithChecks({ + validationID: validationID, + validatorOwner: address(this), + expectedReward: thirdExpectedReward, + validatorWeight: DEFAULT_WEIGHT + }); + + // Confirm the pro-rated rewards match the total expected reward + uint256 totalExpectedReward = rewardCalculator.calculateReward({ + stakeAmount: _weightToValue(DEFAULT_WEIGHT), + validatorStartTime: 0, + stakingStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + stakingEndTime: thirdClaimTime, + uptimeSeconds: 0, + initialSupply: 0, + endSupply: 0 + }); + // Off-by one errors are possible due to integer rounding + if (totalExpectedReward > firstExpectedReward + secondExpectedReward + thirdExpectedReward) + { + assertTrue( + totalExpectedReward + - (firstExpectedReward + secondExpectedReward + thirdExpectedReward) <= 1 + ); + } else { + assertTrue( + (firstExpectedReward + secondExpectedReward + thirdExpectedReward) + - totalExpectedReward <= 1 + ); + } + } + function testValueToWeightTruncated() public { // default weightToValueFactor is 1e12 vm.expectRevert( @@ -1474,12 +1761,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 validatorWeight, uint64 expectedNonce ) internal { + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, expectedNonce, 0 + ); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, completionTimestamp-completeRegistrationTimestamp + ); _initializeEndValidation({ validationID: validationID, - registrationTimestamp: completeRegistrationTimestamp, completionTimestamp: completionTimestamp, - expectedNonce: expectedNonce, + setWeightMessage: setWeightMessage, includeUptime: true, + uptimeMessage: uptimeMessage, force: false }); diff --git a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol index f0a6ab50c..989ef5208 100644 --- a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol @@ -7,7 +7,7 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; import {ValidatorManager, SubnetConversionData, InitialValidator} from "../ValidatorManager.sol"; -import {ValidatorMessages} from "./utils/ValidatorMessagesInternal.sol"; +import {ValidatorMessages} from "../ValidatorMessages.sol"; import { ValidatorStatus, ValidatorRegistrationInput, @@ -213,24 +213,32 @@ abstract contract ValidatorManagerTest is Test { function testInitializeEndValidation() public virtual { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage; _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, - expectedNonce: 1, + setWeightMessage: setWeightMessage, includeUptime: false, + uptimeMessage: uptimeMessage, force: false }); } function testResendEndValidation() public virtual { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage; _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, - expectedNonce: 1, + setWeightMessage: setWeightMessage, includeUptime: false, + uptimeMessage: uptimeMessage, force: false }); @@ -242,12 +250,16 @@ abstract contract ValidatorManagerTest is Test { function testCompleteEndValidation() public virtual { bytes32 validationID = _registerDefaultValidator(); + bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, 0 + ); + bytes memory uptimeMessage; _initializeEndValidation({ validationID: validationID, - registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, - expectedNonce: 1, + setWeightMessage: setWeightMessage, includeUptime: false, + uptimeMessage: uptimeMessage, force: false }); @@ -468,21 +480,15 @@ abstract contract ValidatorManagerTest is Test { function _initializeEndValidation( bytes32 validationID, - uint64 registrationTimestamp, uint64 completionTimestamp, - uint64 expectedNonce, + bytes memory setWeightMessage, bool includeUptime, + bytes memory uptimeMessage, bool force ) internal { - bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, expectedNonce, 0); - _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); - + _mockSendWarpMessage(setWeightMessage, bytes32(0)); if (includeUptime) { - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, completionTimestamp - registrationTimestamp - ); - _mockGetUptimeWarpMessage(uptimeMsg, true); + _mockGetUptimeWarpMessage(uptimeMessage, true); _mockGetBlockchainID(); } From dc6772d89ce1ec45cbffc3e8ebff599003a134ed Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Mon, 21 Oct 2024 17:42:11 -0500 Subject: [PATCH 14/43] remove internal validatormessages --- .../tests/PoSValidatorManagerTests.t.sol | 237 ++++--- .../tests/ValidatorManagerTests.t.sol | 15 +- .../tests/utils/ValidatorMessagesInternal.sol | 671 ------------------ 3 files changed, 153 insertions(+), 770 deletions(-) delete mode 100644 contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index 7f2132555..6cfb2630c 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -13,7 +13,7 @@ import { WarpMessage, IWarpMessenger } from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/IWarpMessenger.sol"; -import {ValidatorMessages} from "./utils/ValidatorMessagesInternal.sol"; +import {ValidatorMessages} from "../ValidatorMessages.sol"; import {ValidatorRegistrationInput, ValidatorStatus} from "../interfaces/IValidatorManager.sol"; abstract contract PoSValidatorManagerTest is ValidatorManagerTest { @@ -368,12 +368,14 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { expectedNonce: 2 }); // Mark delegator1 as registered by delivering the weight update from nonce 2 (delegator 2's nonce) + bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 2, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT + ); + _setUpCompleteDelegatorRegistration( - validationID, delegationID1, DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, - DEFAULT_DELEGATOR_WEIGHT + DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT, - 2 + setValidatorWeightPayload ); } @@ -572,11 +574,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testResendEndValidation() public override { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -634,11 +635,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInitializeDelegatorRegistrationValidatorPendingRemoved() public { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -675,11 +675,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); uint64 validatorEndTime = DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION; - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 2, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 2, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, validatorEndTime-DEFAULT_REGISTRATION_TIMESTAMP + validationID, validatorEndTime - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -703,11 +702,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInitializeEndDelegationValidatorPendingRemoved() public { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -748,11 +746,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); uint64 validationEndTime = DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP + 1; - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 3, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 3, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, validationEndTime-DEFAULT_REGISTRATION_TIMESTAMP + validationID, validationEndTime - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -1047,11 +1044,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testCompleteEndValidation() public virtual override { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -1080,11 +1076,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInitializeEndValidation() public virtual override { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -1177,11 +1172,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testForceInitializeEndValidation() public { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, DEFAULT_COMPLETION_TIMESTAMP-DEFAULT_REGISTRATION_TIMESTAMP + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, @@ -1403,8 +1397,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { // Try again with the correct uptime uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, thirdClaimTime - DEFAULT_REGISTRATION_TIMESTAMP - ); + validationID, thirdClaimTime - DEFAULT_REGISTRATION_TIMESTAMP + ); _initializeEndValidation({ validationID: validationID, completionTimestamp: thirdClaimTime, @@ -1560,15 +1554,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { } function _setUpCompleteDelegatorRegistration( - bytes32 validationID, bytes32 delegationID, uint64 completeRegistrationTimestamp, - uint64 expectedValidatorWeight, - uint64 expectedNonce + bytes memory setValidatorWeightPayload ) internal { - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, expectedNonce, expectedValidatorWeight - ); _mockGetPChainWarpMessage(setValidatorWeightPayload, true); vm.warp(completeRegistrationTimestamp); @@ -1582,6 +1571,9 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 expectedValidatorWeight, uint64 expectedNonce ) internal { + bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, expectedNonce, expectedValidatorWeight + ); vm.expectEmit(true, true, true, true, address(posValidatorManager)); emit DelegatorRegistered({ delegationID: delegationID, @@ -1589,11 +1581,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { startTime: completeRegistrationTimestamp }); _setUpCompleteDelegatorRegistration( - validationID, - delegationID, - completeRegistrationTimestamp, - expectedValidatorWeight, - expectedNonce + delegationID, completeRegistrationTimestamp, setValidatorWeightPayload ); } @@ -1630,12 +1618,13 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes32 validationID, bytes32 delegationID ) internal { + bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, 1, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT + ); _setUpCompleteDelegatorRegistration({ - validationID: validationID, delegationID: delegationID, completeRegistrationTimestamp: DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, - expectedValidatorWeight: DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT, - expectedNonce: 1 + setValidatorWeightPayload: setValidatorWeightPayload }); } @@ -1656,12 +1645,12 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { expectedValidatorWeight: expectedValidatorWeight, expectedNonce: expectedNonce }); + bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, expectedNonce, expectedValidatorWeight + ); + _setUpCompleteDelegatorRegistration( - validationID, - delegationID, - completeRegistrationTimestamp, - expectedValidatorWeight, - expectedNonce + delegationID, completeRegistrationTimestamp, setValidatorWeightPayload ); return delegationID; } @@ -1677,6 +1666,12 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bool includeUptime, bool force ) internal { + bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, expectedNonce, expectedValidatorWeight + ); + bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( + validationID, endDelegationTimestamp - startDelegationTimestamp + ); vm.expectEmit(true, true, true, true, address(posValidatorManager)); emit ValidatorWeightUpdate({ validationID: validationID, @@ -1689,38 +1684,29 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { emit DelegatorRemovalInitialized({delegationID: delegationID, validationID: validationID}); _initializeEndDelegationValidatorActive({ - validationID: validationID, sender: sender, delegationID: delegationID, - startDelegationTimestamp: startDelegationTimestamp, endDelegationTimestamp: endDelegationTimestamp, - expectedValidatorWeight: expectedValidatorWeight, - expectedNonce: expectedNonce, includeUptime: includeUptime, - force: force + force: force, + setValidatorWeightPayload: setValidatorWeightPayload, + uptimePayload: uptimeMsg }); } function _initializeEndDelegationValidatorActive( - bytes32 validationID, address sender, bytes32 delegationID, - uint64 startDelegationTimestamp, uint64 endDelegationTimestamp, - uint64 expectedValidatorWeight, - uint64 expectedNonce, bool includeUptime, - bool force + bool force, + bytes memory setValidatorWeightPayload, + bytes memory uptimePayload ) internal { - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, expectedNonce, expectedValidatorWeight - ); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, endDelegationTimestamp - startDelegationTimestamp - ); + if (includeUptime) { - _mockGetUptimeWarpMessage(uptimeMsg, true); + _mockGetUptimeWarpMessage(uptimePayload, true); _mockGetBlockchainID(); } _initializeEndDelegation(sender, delegationID, endDelegationTimestamp, includeUptime, force); @@ -1761,11 +1747,10 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 validatorWeight, uint64 expectedNonce ) internal { - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, expectedNonce, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, expectedNonce, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, completionTimestamp-completeRegistrationTimestamp + validationID, completionTimestamp - completeRegistrationTimestamp ); _initializeEndValidation({ validationID: validationID, @@ -1798,6 +1783,9 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint256 expectedReward, uint64 validatorWeight ) internal { + bytes memory subnetValidatorRegistrationMessage = + ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); + vm.expectEmit(true, true, true, true, address(posValidatorManager)); emit ValidationPeriodEnded(validationID, ValidatorStatus.Completed); uint256 balanceBefore = _getStakeAssetBalance(validatorOwner); @@ -1805,7 +1793,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _expectStakeUnlock(validatorOwner, _weightToValue(validatorWeight)); _expectRewardIssuance(validatorOwner, expectedReward); - _completeEndValidation(validationID); + _completeEndValidation(subnetValidatorRegistrationMessage); assertEq( _getStakeAssetBalance(validatorOwner), @@ -1813,9 +1801,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { ); } - function _completeEndValidation(bytes32 validationID) internal { - bytes memory subnetValidatorRegistrationMessage = - ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); + function _completeEndValidation(bytes memory subnetValidatorRegistrationMessage) internal { _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); posValidatorManager.completeEndValidation(0); @@ -1834,6 +1820,9 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { ) internal { uint256 expectedValidatorFees = expectedTotalReward * delegationFeeBips / 10000; uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorFees; + bytes memory weightUpdateMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + validationID, expectedNonce, validatorWeight + ); vm.expectEmit(true, true, true, true, address(posValidatorManager)); emit DelegationEnded( @@ -1844,7 +1833,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _expectStakeUnlock(delegator, _weightToValue(delegatorWeight)); _expectRewardIssuance(delegator, expectedDelegatorReward); - _completeEndDelegation(validationID, delegationID, validatorWeight, expectedNonce); + _completeEndDelegation(delegationID, weightUpdateMessage); assertEq(posValidatorManager.getWeight(validationID), expectedValidatorWeight); assertEq( @@ -1854,17 +1843,85 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { } function _completeEndDelegation( - bytes32 validationID, bytes32 delegationID, - uint64 validatorWeight, - uint64 expectedNonce + bytes memory weightUpdateMessage ) internal { - bytes memory weightUpdateMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, expectedNonce, validatorWeight - ); _mockGetPChainWarpMessage(weightUpdateMessage, true); + posValidatorManager.completeEndDelegation(delegationID, 0); + } - posValidatorManager.completeEndDelegation(0, delegationID); + function _initializeAndCompleteEndDelegationWithChecks( + bytes32 validationID, + bytes32 delegationID + ) internal { + _initializeEndDelegationValidatorActiveWithChecks({ + validationID: validationID, + sender: DEFAULT_DELEGATOR_ADDRESS, + delegationID: delegationID, + startDelegationTimestamp: DEFAULT_DELEGATOR_INIT_REGISTRATION_TIMESTAMP, + endDelegationTimestamp: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, + expectedValidatorWeight: DEFAULT_WEIGHT, + expectedNonce: 2, + includeUptime: true, + force: false + }); + + uint256 expectedTotalReward = rewardCalculator.calculateReward({ + stakeAmount: _weightToValue(DEFAULT_DELEGATOR_WEIGHT), + validatorStartTime: 0, + stakingStartTime: DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, + stakingEndTime: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, + uptimeSeconds: 0, + initialSupply: 0, + endSupply: 0 + }); + + _completeEndDelegationWithChecks({ + validationID: validationID, + delegationID: delegationID, + delegator: DEFAULT_DELEGATOR_ADDRESS, + delegatorWeight: DEFAULT_DELEGATOR_WEIGHT, + expectedTotalReward: expectedTotalReward, + delegationFeeBips: DEFAULT_DELEGATION_FEE_BIPS, + validatorWeight: DEFAULT_WEIGHT, + expectedValidatorWeight: DEFAULT_WEIGHT, + expectedNonce: 2 + }); + } + + function _claimRewards( + bytes32 validationID, + bytes memory uptimeMsg, + uint64 validationStartTime, + uint64 claimTime, + uint64 lastClaimTime, + bool success + ) internal returns (uint256) { + uint256 expectedReward; + if (success) { + expectedReward = rewardCalculator.calculateReward({ + stakeAmount: _weightToValue(DEFAULT_WEIGHT), + validatorStartTime: validationStartTime, + stakingStartTime: lastClaimTime, + stakingEndTime: claimTime, + uptimeSeconds: 0, + initialSupply: 0, + endSupply: 0 + }); + _expectValidationRewardsIssuance(validationID, address(this), expectedReward); + } else { + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.ValidatorIneligibleForRewards.selector, validationID + ) + ); + } + + _mockGetUptimeWarpMessage(uptimeMsg, true); + _mockGetBlockchainID(); + vm.warp(claimTime); + posValidatorManager.claimValidationRewards(validationID, 0); + return expectedReward; } function _getStakeAssetBalance(address account) internal virtual returns (uint256); diff --git a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol index 989ef5208..847028324 100644 --- a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol @@ -213,9 +213,8 @@ abstract contract ValidatorManagerTest is Test { function testInitializeEndValidation() public virtual { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage; _initializeEndValidation({ validationID: validationID, @@ -229,9 +228,8 @@ abstract contract ValidatorManagerTest is Test { function testResendEndValidation() public virtual { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage; _initializeEndValidation({ validationID: validationID, @@ -250,9 +248,8 @@ abstract contract ValidatorManagerTest is Test { function testCompleteEndValidation() public virtual { bytes32 validationID = _registerDefaultValidator(); - bytes memory setWeightMessage = ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, 1, 0 - ); + bytes memory setWeightMessage = + ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); bytes memory uptimeMessage; _initializeEndValidation({ validationID: validationID, diff --git a/contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol b/contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol deleted file mode 100644 index afc3f2f5b..000000000 --- a/contracts/validator-manager/tests/utils/ValidatorMessagesInternal.sol +++ /dev/null @@ -1,671 +0,0 @@ -// (c) 2023, Ava Labs, Inc. All rights reserved. -// See the file LICENSE for licensing terms. - -// SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.25; - -import {SubnetConversionData, PChainOwner} from "../../interfaces/IValidatorManager.sol"; - -/** - * @dev Packing utilities for the Warp message types used by the Validator Manager contracts, as specified in ACP-77: - * https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets - */ -library ValidatorMessages { - // The information that uniquely identifies a subnet validation period. - // The validationID is the SHA-256 hash of the concatenation of the CODEC_ID, - // REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID, and the concatenated ValidationPeriod fields. - struct ValidationPeriod { - bytes32 subnetID; - bytes nodeID; - bytes blsPublicKey; - uint64 registrationExpiry; - PChainOwner remainingBalanceOwner; - PChainOwner disableOwner; - uint64 weight; - } - - // The P-Chain uses a hardcoded codecID of 0 for all messages. - uint16 internal constant CODEC_ID = 0; - - // The P-Chain signs a SubnetConversion message that is used to verify the Subnet's initial validators. - uint32 internal constant SUBNET_CONVERSION_MESSAGE_TYPE_ID = 0; - - // Subnets send a RegisterSubnetValidator message to the P-Chain to register a validator. - uint32 internal constant REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID = 1; - - // The P-Chain responds with a RegisterSubnetValidator message indicating whether the registration was successful - // for the given validation ID. - uint32 internal constant SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID = 2; - - // Subnets can send a SubnetValidatorWeight message to the P-Chain to update a validator's weight. - // The P-Chain responds with another SubnetValidatorWeight message acknowledging the weight update. - uint32 internal constant SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID = 3; - - // The Subnet will self-sign a ValidationUptimeMessage to be provided when a validator is initiating - // the end of their validation period. - uint32 internal constant VALIDATION_UPTIME_MESSAGE_TYPE_ID = 0; - - error InvalidMessageLength(uint32 actual, uint32 expected); - error InvalidCodecID(uint32 id); - error InvalidMessageType(); - error InvalidBLSPublicKey(); - - /** - * @notice Packs a SubnetConversionMessage message into a byte array. - * The message format specification is: - * +--------------------+----------+----------+ - * | codecID : uint16 | 2 bytes | - * +--------------------+----------+----------+ - * | typeID : uint32 | 4 bytes | - * +--------------------+----------+----------+ - * | subnetConversionID : [32]byte | 32 bytes | - * +--------------------+----------+----------+ - * | 38 bytes | - * +----------+ - * - * @param subnetConversionID The subnet conversion ID to pack into the message. - * @return The packed message. - */ - function packSubnetConversionMessage(bytes32 subnetConversionID) - internal - pure - returns (bytes memory) - { - return abi.encodePacked(CODEC_ID, SUBNET_CONVERSION_MESSAGE_TYPE_ID, subnetConversionID); - } - - /** - * @notice Unpacks a byte array as a SubnetConversionMessage message. - * The message format specification is the same as the one used in above for packing. - * - * @param input The byte array to unpack. - * @return the unpacked subnetConversionID. - */ - function unpackSubnetConversionMessage(bytes memory input) internal pure returns (bytes32) { - if (input.length != 38) { - revert InvalidMessageLength(uint32(input.length), 38); - } - - // Unpack the codec ID - uint16 codecID; - for (uint256 i; i < 2; ++i) { - codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); - } - if (codecID != CODEC_ID) { - revert InvalidCodecID(codecID); - } - - // Unpack the type ID - uint32 typeID; - for (uint256 i; i < 4; ++i) { - typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); - } - if (typeID != SUBNET_CONVERSION_MESSAGE_TYPE_ID) { - revert InvalidMessageType(); - } - - // Unpack the subnetConversionID - bytes32 subnetConversionID; - for (uint256 i; i < 32; ++i) { - subnetConversionID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); - } - - return subnetConversionID; - } - - /** - * @notice Packs SubnetConversionData into a byte array. - * This byte array is the SHA256 pre-image of the subnetConversionID hash - * The message format specification is: - * - * SubnetConversionData: - * +----------------+-----------------+--------------------------------------------------------+ - * | codecID : uint16 | 2 bytes | - * +----------------+-----------------+--------------------------------------------------------+ - * | subnetID : [32]byte | 32 bytes | - * +----------------+-----------------+--------------------------------------------------------+ - * | managerChainID : [32]byte | 32 bytes | - * +----------------+-----------------+--------------------------------------------------------+ - * | managerAddress : []byte | 4 + len(managerAddress) bytes | - * +----------------+-----------------+--------------------------------------------------------+ - * | validators : []ValidatorData | 4 + sum(validatorLengths) bytes | - * +----------------+-----------------+--------------------------------------------------------+ - * | 74 + len(managerAddress) + len(validatorLengths) bytes | - * +--------------------------------------------------------+ - * ValidatorData: - * +--------------+----------+------------------------+ - * | nodeID : []byte | 4 + len(nodeID) bytes | - * +--------------+----------+------------------------+ - * | blsPublicKey : [48]byte | 48 bytes | - * +--------------+----------+------------------------+ - * | weight : uint64 | 8 bytes | - * +--------------+----------+------------------------+ - * | 60 + len(nodeID) bytes | - * +------------------------+ - * - * @dev Input validation is skipped, since the returned value is intended to be compared - * directly with an authenticated Warp message. - * @param subnetConversionData The struct representing data to pack into the message. - * @return The packed message. - */ - function packSubnetConversionData(SubnetConversionData calldata subnetConversionData) - internal - pure - returns (bytes memory) - { - // Hardcoded 20 is for length of the managerAddress on EVM chains - // solhint-disable-next-line func-named-parameters - bytes memory res = abi.encodePacked( - CODEC_ID, - subnetConversionData.subnetID, - subnetConversionData.validatorManagerBlockchainID, - uint32(20), - subnetConversionData.validatorManagerAddress, - uint32(subnetConversionData.initialValidators.length) - ); - // The approach below of encoding initialValidators using `abi.encodePacked` in a loop - // was tested against pre-allocating the array and doing manual byte by byte packing and - // it was found to be more gas efficient. - for (uint256 i = 0; i < subnetConversionData.initialValidators.length; i++) { - res = abi.encodePacked( - res, - uint32(subnetConversionData.initialValidators[i].nodeID.length), - subnetConversionData.initialValidators[i].nodeID, - subnetConversionData.initialValidators[i].blsPublicKey, - subnetConversionData.initialValidators[i].weight - ); - } - return res; - } - - /** - * @notice Packs a RegisterSubnetValidatorMessage message into a byte array. - * The message format specification is: - * - * RegisterSubnetValidatorMessage: - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | codecID : uint16 | 2 bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | typeID : uint32 | 4 bytes | - * +-----------------------+-------------+-------------------------------------------------------------------+ - * | subnetID : [32]byte | 32 bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | nodeID : []byte | 4 + len(nodeID) bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | blsPublicKey : [48]byte | 48 bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | expiry : uint64 | 8 bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | remainingBalanceOwner : PChainOwner | 4 + len(addresses) * 20 bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | disableOwner : PChainOwner | 4 + len(addresses) * 20 bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | weight : uint64 | 8 bytes | - * +-----------------------+-------------+--------------------------------------------------------------------+ - * | 122 + len(nodeID) + (len(addresses1) + len(addresses2)) * 20 bytes | - * +--------------------------------------------------------------------+ - * - * PChainOwner: - * +-----------+------------+-------------------------------+ - * | threshold : uint32 | 4 bytes | - * +-----------+------------+-------------------------------+ - * | addresses : [][20]byte | 4 + len(addresses) * 20 bytes | - * +-----------+------------+-------------------------------+ - * | 8 + len(addresses) * 20 bytes | - * +-------------------------------+ - * - * @param validationPeriod The information to pack into the message. - * @return The validationID and the packed message. - */ - function packRegisterSubnetValidatorMessage(ValidationPeriod memory validationPeriod) - internal - pure - returns (bytes32, bytes memory) - { - if (validationPeriod.blsPublicKey.length != 48) { - revert InvalidBLSPublicKey(); - } - - // solhint-disable-next-line func-named-parameters - bytes memory res = abi.encodePacked( - CODEC_ID, - REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID, - validationPeriod.subnetID, - uint32(validationPeriod.nodeID.length), - validationPeriod.nodeID, - validationPeriod.blsPublicKey, - validationPeriod.registrationExpiry, - validationPeriod.remainingBalanceOwner.threshold, - uint32(validationPeriod.remainingBalanceOwner.addresses.length) - ); - for (uint256 i = 0; i < validationPeriod.remainingBalanceOwner.addresses.length; i++) { - res = abi.encodePacked(res, validationPeriod.remainingBalanceOwner.addresses[i]); - } - res = abi.encodePacked( - res, - validationPeriod.disableOwner.threshold, - uint32(validationPeriod.disableOwner.addresses.length) - ); - for (uint256 i = 0; i < validationPeriod.disableOwner.addresses.length; i++) { - res = abi.encodePacked(res, validationPeriod.disableOwner.addresses[i]); - } - res = abi.encodePacked(res, validationPeriod.weight); - - return (sha256(res), res); - } - - /** - * @notice Unpacks a byte array as a RegisterSubnetValidatorMessage message. - * The message format specification is the same as the one used in above for packing. - * - * @param input The byte array to unpack. - * @return the unpacked ValidationPeriod. - */ - function unpackRegisterSubnetValidatorMessage(bytes memory input) - internal - pure - returns (ValidationPeriod memory) - { - uint32 index = 0; - ValidationPeriod memory validation; - - // Unpack the codec ID - // Individual fields are unpacked in their own scopes to avoid stack too deep errors. - { - uint16 codecID; - for (uint256 i; i < 2; ++i) { - codecID |= uint16(uint8(input[i + index])) << uint16((8 * (1 - i))); - } - if (codecID != CODEC_ID) { - revert InvalidCodecID(codecID); - } - index += 2; - } - - // Unpack the type ID - { - uint32 typeID; - for (uint256 i; i < 4; ++i) { - typeID |= uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); - } - if (typeID != REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID) { - revert InvalidMessageType(); - } - index += 4; - } - - // Unpack the subnetID - { - bytes32 subnetID; - for (uint256 i; i < 32; ++i) { - subnetID |= bytes32(uint256(uint8(input[i + index])) << (8 * (31 - i))); - } - validation.subnetID = subnetID; - index += 32; - } - - // Unpack the nodeID length - uint32 nodeIDLength; - { - for (uint256 i; i < 4; ++i) { - nodeIDLength |= uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); - } - index += 4; - - // Unpack the nodeID - bytes memory nodeID = new bytes(nodeIDLength); - for (uint256 i; i < nodeIDLength; ++i) { - nodeID[i] = input[i + index]; - } - validation.nodeID = nodeID; - index += nodeIDLength; - } - - // Unpack the blsPublicKey - { - bytes memory blsPublicKey = new bytes(48); - for (uint256 i; i < 48; ++i) { - blsPublicKey[i] = input[i + index]; - } - validation.blsPublicKey = blsPublicKey; - index += 48; - } - - // Unpack the registration expiry - { - uint64 expiry; - for (uint256 i; i < 8; ++i) { - expiry |= uint64(uint8(input[i + index])) << uint64((8 * (7 - i))); - } - validation.registrationExpiry = expiry; - index += 8; - } - - // Unpack the remainingBalanceOwner threshold - uint32 remainingBalanceOwnerAddressesLength; - { - uint32 remainingBalanceOwnerThreshold; - for (uint256 i; i < 4; ++i) { - remainingBalanceOwnerThreshold |= - uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); - } - index += 4; - - // Unpack the remainingBalanceOwner addresses length - for (uint256 i; i < 4; ++i) { - remainingBalanceOwnerAddressesLength |= - uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); - } - index += 4; - - // Unpack the remainingBalanceOwner addresses - address[] memory remainingBalanceOwnerAddresses = - new address[](remainingBalanceOwnerAddressesLength); - for (uint256 i; i < remainingBalanceOwnerAddressesLength; ++i) { - bytes memory addrBytes = new bytes(20); - for (uint256 j; j < 20; ++j) { - addrBytes[j] = input[j + index]; - } - address addr; - // solhint-disable-next-line no-inline-assembly - assembly { - addr := mload(add(addrBytes, 20)) - } - remainingBalanceOwnerAddresses[i] = addr; - index += 20; - } - validation.remainingBalanceOwner = PChainOwner({ - threshold: remainingBalanceOwnerThreshold, - addresses: remainingBalanceOwnerAddresses - }); - } - - // Unpack the disableOwner threshold - uint32 disableOwnerAddressesLength; - { - uint32 disableOwnerThreshold; - for (uint256 i; i < 4; ++i) { - disableOwnerThreshold |= uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); - } - index += 4; - - // Unpack the disableOwner addresses length - for (uint256 i; i < 4; ++i) { - disableOwnerAddressesLength |= - uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); - } - index += 4; - - // Unpack the disableOwner addresses - address[] memory disableOwnerAddresses = new address[](disableOwnerAddressesLength); - for (uint256 i; i < disableOwnerAddressesLength; ++i) { - bytes memory addrBytes = new bytes(20); - for (uint256 j; j < 20; ++j) { - addrBytes[j] = input[j + index]; - } - address addr; - // solhint-disable-next-line no-inline-assembly - assembly { - addr := mload(add(addrBytes, 20)) - } - disableOwnerAddresses[i] = addr; - index += 20; - } - validation.disableOwner = - PChainOwner({threshold: disableOwnerThreshold, addresses: disableOwnerAddresses}); - } - // Now that we have all the variable lengths, validate the input length - uint32 expectedLength = 122 + nodeIDLength - + (remainingBalanceOwnerAddressesLength + disableOwnerAddressesLength) * 20; - if (input.length != expectedLength) { - revert InvalidMessageLength(uint32(input.length), expectedLength); - } - // Unpack the weight - { - uint64 weight; - for (uint256 i; i < 8; ++i) { - weight |= uint64(uint8(input[i + index])) << uint64((8 * (7 - i))); - } - validation.weight = weight; - } - - return validation; - } - - /** - * @notice Packs a SubnetValidatorRegistrationMessage into a byte array. - * The message format specification is: - * +--------------+----------+----------+ - * | codecID : uint16 | 2 bytes | - * +--------------+----------+----------+ - * | typeID : uint32 | 4 bytes | - * +--------------+----------+----------+ - * | validationID : [32]byte | 32 bytes | - * +--------------+----------+----------+ - * | valid : bool | 1 byte | - * +--------------+----------+----------+ - * | 39 bytes | - * +----------+ - * - * @param validationID The ID of the validation period. - * @param valid true if the validation period was registered, false if it was not and never will be. - * @return The packed message. - * - */ - function packSubnetValidatorRegistrationMessage( - bytes32 validationID, - bool valid - ) internal pure returns (bytes memory) { - return abi.encodePacked( - CODEC_ID, SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID, validationID, valid - ); - } - - /** - * @notice Unpacks a byte array as a SubnetValidatorRegistrationMessage message. - * The message format specification is the same as the one used in above for packing. - * - * @param input The byte array to unpack. - * @return The validationID and whether the validation period was registered - * or is not a validator and never will be a validator to do the expiry time passing. - */ - function unpackSubnetValidatorRegistrationMessage(bytes memory input) - internal - pure - returns (bytes32, bool) - { - if (input.length != 39) { - revert InvalidMessageLength(uint32(input.length), 39); - } - // Unpack the codec ID - uint16 codecID; - for (uint256 i; i < 2; ++i) { - codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); - } - if (codecID != CODEC_ID) { - revert InvalidCodecID(codecID); - } - - // Unpack the type ID - uint32 typeID; - for (uint256 i; i < 4; ++i) { - typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); - } - if (typeID != SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID) { - revert InvalidMessageType(); - } - - // Unpack the validation ID. - bytes32 validationID; - for (uint256 i; i < 32; ++i) { - validationID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); - } - - // Unpack the validity - bool valid = input[38] != 0; - - return (validationID, valid); - } - - /** - * @notice Packs a SubnetValidatorWeightMessage message into a byte array. - * The message format specification is: - * +--------------+----------+----------+ - * | codecID : uint16 | 2 bytes | - * +--------------+----------+----------+ - * | typeID : uint32 | 4 bytes | - * +--------------+----------+----------+ - * | validationID : [32]byte | 32 bytes | - * +--------------+----------+----------+ - * | nonce : uint64 | 8 bytes | - * +--------------+----------+----------+ - * | weight : uint64 | 8 bytes | - * +--------------+----------+----------+ - * | 54 bytes | - * +----------+ - * - * @param validationID The ID of the validation period. - * @param nonce The nonce of the validation ID. - * @param weight The new weight of the validator. - * @return The packed message. - */ - function packSubnetValidatorWeightMessage( - bytes32 validationID, - uint64 nonce, - uint64 weight - ) internal pure returns (bytes memory) { - return abi.encodePacked( - CODEC_ID, SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID, validationID, nonce, weight - ); - } - - /** - * @notice Unpacks a byte array as a SubnetValidatorWeight message. - * The message format specification is the same as the one used in above for packing. - * - * @param input The byte array to unpack. - * @return The validationID, nonce, and weight. - */ - function unpackSubnetValidatorWeightMessage(bytes memory input) - internal - pure - returns (bytes32, uint64, uint64) - { - if (input.length != 54) { - revert InvalidMessageLength(uint32(input.length), 54); - } - - // Unpack the codec ID. - uint16 codecID; - for (uint256 i; i < 2; ++i) { - codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); - } - if (codecID != CODEC_ID) { - revert InvalidCodecID(codecID); - } - - // Unpack the type ID. - uint32 typeID; - for (uint256 i; i < 4; ++i) { - typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); - } - if (typeID != SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID) { - revert InvalidMessageType(); - } - - // Unpack the validation ID. - bytes32 validationID; - for (uint256 i; i < 32; ++i) { - validationID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); - } - - // Unpack the nonce. - uint64 nonce; - for (uint256 i; i < 8; ++i) { - nonce |= uint64(uint8(input[i + 38])) << uint64((8 * (7 - i))); - } - - // Unpack the weight. - uint64 weight; - for (uint256 i; i < 8; ++i) { - weight |= uint64(uint8(input[i + 46])) << uint64((8 * (7 - i))); - } - - return (validationID, nonce, weight); - } - - /** - * @notice Packs a ValidationUptimeMessage into a byte array. - * The message format specification is: - * +--------------+----------+----------+ - * | codecID : uint16 | 2 bytes | - * +--------------+----------+----------+ - * | typeID : uint32 | 4 bytes | - * +--------------+----------+----------+ - * | validationID : [32]byte | 32 bytes | - * +--------------+----------+----------+ - * | uptime : uint64 | 8 bytes | - * +--------------+----------+----------+ - * | 46 bytes | - * +----------+ - * - * @param validationID The ID of the validation period. - * @param uptime The uptime of the validator. - * @return The packed message. - */ - function packValidationUptimeMessage( - bytes32 validationID, - uint64 uptime - ) internal pure returns (bytes memory) { - return abi.encodePacked(CODEC_ID, VALIDATION_UPTIME_MESSAGE_TYPE_ID, validationID, uptime); - } - - /** - * @notice Unpacks a byte array as a ValidationUptimeMessage. - * The message format specification is the same as the one used in above for packing. - * - * @param input The byte array to unpack. - * @return The validationID and uptime. - */ - function unpackValidationUptimeMessage(bytes memory input) - internal - pure - returns (bytes32, uint64) - { - if (input.length != 46) { - revert InvalidMessageLength(uint32(input.length), 46); - } - - // Unpack the codec ID. - uint16 codecID; - for (uint256 i; i < 2; ++i) { - codecID |= uint16(uint8(input[i])) << uint16((8 * (1 - i))); - } - if (codecID != CODEC_ID) { - revert InvalidCodecID(codecID); - } - - // Unpack the type ID. - uint32 typeID; - for (uint256 i; i < 4; ++i) { - typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); - } - if (typeID != VALIDATION_UPTIME_MESSAGE_TYPE_ID) { - revert InvalidMessageType(); - } - - // Unpack the validation ID. - bytes32 validationID; - for (uint256 i; i < 32; ++i) { - validationID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); - } - - // Unpack the uptime. - uint64 uptime; - for (uint256 i; i < 8; ++i) { - uptime |= uint64(uint8(input[i + 38])) << uint64((8 * (7 - i))); - } - - return (validationID, uptime); - } -} From 455e4646bf736023b65c5091fa331842329f1735 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 22 Oct 2024 09:33:45 -0500 Subject: [PATCH 15/43] exc experiment --- scripts/abi_bindings.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index d846f71ec..682a59d61 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -85,7 +85,8 @@ function generate_bindings() { $GOPATH/bin/abigen --pkg $(convertToLower $contract_name) \ --combined-json $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json \ --type $contract_name \ - --out $gen_path/$contract_name.go + --out $gen_path/$contract_name.go \ + --exc lib/subnet-evm/contracts/contracts/interfaces/IWarpMessenger.sol:IWarpMessenger echo "Done generating Go bindings for $contract_name." done } From 679cd0c5e347c1303f28dedf72c57c27adfb6049 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 22 Oct 2024 10:51:32 -0500 Subject: [PATCH 16/43] only abigen bound type --- .../go/INativeMinter/INativeMinter.go | 429 - abi-bindings/go/ProxyAdmin/ProxyAdmin.go | 4226 +--- .../TransparentUpgradeableProxy.go | 3782 ---- .../ValidatorSetSig/ValidatorSetSig.go | 611 - .../go/mocks/ExampleERC20/ExampleERC20.go | 4537 +---- .../TeleporterMessenger.go | 4276 ---- .../TeleporterRegistry/TeleporterRegistry.go | 2273 --- .../tests/TestMessenger/TestMessenger.go | 7996 -------- .../ERC20TokenStakingManager.go | 16181 ++-------------- .../ExampleRewardCalculator.go | 182 - .../NativeTokenStakingManager.go | 16099 ++------------- .../PoAValidatorManager.go | 7711 +------- scripts/abi_bindings.sh | 34 +- 13 files changed, 3889 insertions(+), 64448 deletions(-) diff --git a/abi-bindings/go/INativeMinter/INativeMinter.go b/abi-bindings/go/INativeMinter/INativeMinter.go index a1ea24404..132cffd65 100644 --- a/abi-bindings/go/INativeMinter/INativeMinter.go +++ b/abi-bindings/go/INativeMinter/INativeMinter.go @@ -29,435 +29,6 @@ var ( _ = abi.ConvertType ) -// IAllowListMetaData contains all meta data concerning the IAllowList contract. -var IAllowListMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IAllowListABI is the input ABI used to generate the binding from. -// Deprecated: Use IAllowListMetaData.ABI instead. -var IAllowListABI = IAllowListMetaData.ABI - -// IAllowList is an auto generated Go binding around an Ethereum contract. -type IAllowList struct { - IAllowListCaller // Read-only binding to the contract - IAllowListTransactor // Write-only binding to the contract - IAllowListFilterer // Log filterer for contract events -} - -// IAllowListCaller is an auto generated read-only Go binding around an Ethereum contract. -type IAllowListCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IAllowListTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IAllowListTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IAllowListFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IAllowListFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IAllowListSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IAllowListSession struct { - Contract *IAllowList // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IAllowListCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IAllowListCallerSession struct { - Contract *IAllowListCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IAllowListTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IAllowListTransactorSession struct { - Contract *IAllowListTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IAllowListRaw is an auto generated low-level Go binding around an Ethereum contract. -type IAllowListRaw struct { - Contract *IAllowList // Generic contract binding to access the raw methods on -} - -// IAllowListCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IAllowListCallerRaw struct { - Contract *IAllowListCaller // Generic read-only contract binding to access the raw methods on -} - -// IAllowListTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IAllowListTransactorRaw struct { - Contract *IAllowListTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIAllowList creates a new instance of IAllowList, bound to a specific deployed contract. -func NewIAllowList(address common.Address, backend bind.ContractBackend) (*IAllowList, error) { - contract, err := bindIAllowList(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IAllowList{IAllowListCaller: IAllowListCaller{contract: contract}, IAllowListTransactor: IAllowListTransactor{contract: contract}, IAllowListFilterer: IAllowListFilterer{contract: contract}}, nil -} - -// NewIAllowListCaller creates a new read-only instance of IAllowList, bound to a specific deployed contract. -func NewIAllowListCaller(address common.Address, caller bind.ContractCaller) (*IAllowListCaller, error) { - contract, err := bindIAllowList(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IAllowListCaller{contract: contract}, nil -} - -// NewIAllowListTransactor creates a new write-only instance of IAllowList, bound to a specific deployed contract. -func NewIAllowListTransactor(address common.Address, transactor bind.ContractTransactor) (*IAllowListTransactor, error) { - contract, err := bindIAllowList(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IAllowListTransactor{contract: contract}, nil -} - -// NewIAllowListFilterer creates a new log filterer instance of IAllowList, bound to a specific deployed contract. -func NewIAllowListFilterer(address common.Address, filterer bind.ContractFilterer) (*IAllowListFilterer, error) { - contract, err := bindIAllowList(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IAllowListFilterer{contract: contract}, nil -} - -// bindIAllowList binds a generic wrapper to an already deployed contract. -func bindIAllowList(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IAllowListMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IAllowList *IAllowListRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IAllowList.Contract.IAllowListCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IAllowList *IAllowListRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IAllowList.Contract.IAllowListTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IAllowList *IAllowListRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IAllowList.Contract.IAllowListTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IAllowList *IAllowListCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IAllowList.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IAllowList *IAllowListTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IAllowList.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IAllowList *IAllowListTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IAllowList.Contract.contract.Transact(opts, method, params...) -} - -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. -// -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_IAllowList *IAllowListCaller) ReadAllowList(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { - var out []interface{} - err := _IAllowList.contract.Call(opts, &out, "readAllowList", addr) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. -// -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_IAllowList *IAllowListSession) ReadAllowList(addr common.Address) (*big.Int, error) { - return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) -} - -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. -// -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_IAllowList *IAllowListCallerSession) ReadAllowList(addr common.Address) (*big.Int, error) { - return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) -} - -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetAdmin(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setAdmin", addr) -} - -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address addr) returns() -func (_IAllowList *IAllowListSession) SetAdmin(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) -} - -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetAdmin(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) -} - -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. -// -// Solidity: function setEnabled(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetEnabled(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setEnabled", addr) -} - -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. -// -// Solidity: function setEnabled(address addr) returns() -func (_IAllowList *IAllowListSession) SetEnabled(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) -} - -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. -// -// Solidity: function setEnabled(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetEnabled(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) -} - -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. -// -// Solidity: function setManager(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetManager(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setManager", addr) -} - -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. -// -// Solidity: function setManager(address addr) returns() -func (_IAllowList *IAllowListSession) SetManager(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) -} - -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. -// -// Solidity: function setManager(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetManager(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) -} - -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. -// -// Solidity: function setNone(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetNone(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setNone", addr) -} - -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. -// -// Solidity: function setNone(address addr) returns() -func (_IAllowList *IAllowListSession) SetNone(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) -} - -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. -// -// Solidity: function setNone(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetNone(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) -} - -// IAllowListRoleSetIterator is returned from FilterRoleSet and is used to iterate over the raw logs and unpacked data for RoleSet events raised by the IAllowList contract. -type IAllowListRoleSetIterator struct { - Event *IAllowListRoleSet // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IAllowListRoleSetIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IAllowListRoleSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IAllowListRoleSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IAllowListRoleSetIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IAllowListRoleSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IAllowListRoleSet represents a RoleSet event raised by the IAllowList contract. -type IAllowListRoleSet struct { - Role *big.Int - Account common.Address - Sender common.Address - OldRole *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRoleSet is a free log retrieval operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. -// -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_IAllowList *IAllowListFilterer) FilterRoleSet(opts *bind.FilterOpts, role []*big.Int, account []common.Address, sender []common.Address) (*IAllowListRoleSetIterator, error) { - - var roleRule []interface{} - for _, roleItem := range role { - roleRule = append(roleRule, roleItem) - } - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) - } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _IAllowList.contract.FilterLogs(opts, "RoleSet", roleRule, accountRule, senderRule) - if err != nil { - return nil, err - } - return &IAllowListRoleSetIterator{contract: _IAllowList.contract, event: "RoleSet", logs: logs, sub: sub}, nil -} - -// WatchRoleSet is a free log subscription operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. -// -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_IAllowList *IAllowListFilterer) WatchRoleSet(opts *bind.WatchOpts, sink chan<- *IAllowListRoleSet, role []*big.Int, account []common.Address, sender []common.Address) (event.Subscription, error) { - - var roleRule []interface{} - for _, roleItem := range role { - roleRule = append(roleRule, roleItem) - } - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) - } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _IAllowList.contract.WatchLogs(opts, "RoleSet", roleRule, accountRule, senderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IAllowListRoleSet) - if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRoleSet is a log parse operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. -// -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_IAllowList *IAllowListFilterer) ParseRoleSet(log types.Log) (*IAllowListRoleSet, error) { - event := new(IAllowListRoleSet) - if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // INativeMinterMetaData contains all meta data concerning the INativeMinter contract. var INativeMinterMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeCoinMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintNativeCoin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", diff --git a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go index 16575e905..97af9cc14 100644 --- a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go +++ b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go @@ -29,3632 +29,23 @@ var ( _ = abi.ConvertType ) -// AddressMetaData contains all meta data concerning the Address contract. -var AddressMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", -} - -// AddressABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressMetaData.ABI instead. -var AddressABI = AddressMetaData.ABI - -// AddressBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressMetaData.Bin instead. -var AddressBin = AddressMetaData.Bin - -// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. -func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// Address is an auto generated Go binding around an Ethereum contract. -type Address struct { - AddressCaller // Read-only binding to the contract - AddressTransactor // Write-only binding to the contract - AddressFilterer // Log filterer for contract events -} - -// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type AddressSession struct { - Contract *Address // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type AddressCallerSession struct { - Contract *AddressCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type AddressTransactorSession struct { - Contract *AddressTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressRaw struct { - Contract *Address // Generic contract binding to access the raw methods on -} - -// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressCallerRaw struct { - Contract *AddressCaller // Generic read-only contract binding to access the raw methods on -} - -// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressTransactorRaw struct { - Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewAddress creates a new instance of Address, bound to a specific deployed contract. -func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { - contract, err := bindAddress(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. -func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { - contract, err := bindAddress(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &AddressCaller{contract: contract}, nil -} - -// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. -func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { - contract, err := bindAddress(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &AddressTransactor{contract: contract}, nil -} - -// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. -func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { - contract, err := bindAddress(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &AddressFilterer{contract: contract}, nil -} - -// bindAddress binds a generic wrapper to an already deployed contract. -func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.contract.Transact(opts, method, params...) -} - -// ContextMetaData contains all meta data concerning the Context contract. -var ContextMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ContextABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextMetaData.ABI instead. -var ContextABI = ContextMetaData.ABI - -// Context is an auto generated Go binding around an Ethereum contract. -type Context struct { - ContextCaller // Read-only binding to the contract - ContextTransactor // Write-only binding to the contract - ContextFilterer // Log filterer for contract events -} - -// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextSession struct { - Contract *Context // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextCallerSession struct { - Contract *ContextCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextTransactorSession struct { - Contract *ContextTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextRaw struct { - Contract *Context // Generic contract binding to access the raw methods on -} - -// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextCallerRaw struct { - Contract *ContextCaller // Generic read-only contract binding to access the raw methods on -} - -// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextTransactorRaw struct { - Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewContext creates a new instance of Context, bound to a specific deployed contract. -func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { - contract, err := bindContext(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil -} - -// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. -func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { - contract, err := bindContext(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContextCaller{contract: contract}, nil -} - -// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. -func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { - contract, err := bindContext(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextTransactor{contract: contract}, nil -} - -// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. -func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { - contract, err := bindContext(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextFilterer{contract: contract}, nil -} - -// bindContext binds a generic wrapper to an already deployed contract. -func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.contract.Transact(opts, method, params...) -} - -// ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. -var ERC1967ProxyMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220d2be5bfccbcd73d67bdb73a62a6fe90dfd71ce6de78cb8cfa6aa7dcc5a928a7864736f6c63430008190033", -} - -// ERC1967ProxyABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC1967ProxyMetaData.ABI instead. -var ERC1967ProxyABI = ERC1967ProxyMetaData.ABI - -// ERC1967ProxyBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC1967ProxyMetaData.Bin instead. -var ERC1967ProxyBin = ERC1967ProxyMetaData.Bin - -// DeployERC1967Proxy deploys a new Ethereum contract, binding an instance of ERC1967Proxy to it. -func DeployERC1967Proxy(auth *bind.TransactOpts, backend bind.ContractBackend, implementation common.Address, _data []byte) (common.Address, *types.Transaction, *ERC1967Proxy, error) { - parsed, err := ERC1967ProxyMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967ProxyBin), backend, implementation, _data) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil -} - -// ERC1967Proxy is an auto generated Go binding around an Ethereum contract. -type ERC1967Proxy struct { - ERC1967ProxyCaller // Read-only binding to the contract - ERC1967ProxyTransactor // Write-only binding to the contract - ERC1967ProxyFilterer // Log filterer for contract events -} - -// ERC1967ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC1967ProxyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC1967ProxyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC1967ProxyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967ProxySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC1967ProxySession struct { - Contract *ERC1967Proxy // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC1967ProxyCallerSession struct { - Contract *ERC1967ProxyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC1967ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC1967ProxyTransactorSession struct { - Contract *ERC1967ProxyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC1967ProxyRaw struct { - Contract *ERC1967Proxy // Generic contract binding to access the raw methods on -} - -// ERC1967ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC1967ProxyCallerRaw struct { - Contract *ERC1967ProxyCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC1967ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC1967ProxyTransactorRaw struct { - Contract *ERC1967ProxyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC1967Proxy creates a new instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967Proxy(address common.Address, backend bind.ContractBackend) (*ERC1967Proxy, error) { - contract, err := bindERC1967Proxy(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil -} - -// NewERC1967ProxyCaller creates a new read-only instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967ProxyCaller(address common.Address, caller bind.ContractCaller) (*ERC1967ProxyCaller, error) { - contract, err := bindERC1967Proxy(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC1967ProxyCaller{contract: contract}, nil -} - -// NewERC1967ProxyTransactor creates a new write-only instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967ProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967ProxyTransactor, error) { - contract, err := bindERC1967Proxy(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC1967ProxyTransactor{contract: contract}, nil -} - -// NewERC1967ProxyFilterer creates a new log filterer instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967ProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967ProxyFilterer, error) { - contract, err := bindERC1967Proxy(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC1967ProxyFilterer{contract: contract}, nil -} - -// bindERC1967Proxy binds a generic wrapper to an already deployed contract. -func bindERC1967Proxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC1967ProxyMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Proxy *ERC1967ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Proxy.Contract.ERC1967ProxyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Proxy *ERC1967ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Proxy *ERC1967ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Proxy *ERC1967ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Proxy.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.contract.Transact(opts, method, params...) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ERC1967Proxy *ERC1967ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _ERC1967Proxy.contract.RawTransact(opts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ERC1967Proxy *ERC1967ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ERC1967Proxy *ERC1967ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) -} - -// ERC1967ProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Proxy contract. -type ERC1967ProxyUpgradedIterator struct { - Event *ERC1967ProxyUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967ProxyUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967ProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967ProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967ProxyUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967ProxyUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967ProxyUpgraded represents a Upgraded event raised by the ERC1967Proxy contract. -type ERC1967ProxyUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967ProxyUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Proxy.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ERC1967ProxyUpgradedIterator{contract: _ERC1967Proxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Proxy.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967ProxyUpgraded) - if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC1967ProxyUpgraded, error) { - event := new(ERC1967ProxyUpgraded) - if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. -var ERC1967UtilsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122091b976241e37023f15c3b457a029bc623cf4618fc3f25eba2af91d303d10992664736f6c63430008190033", -} - -// ERC1967UtilsABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC1967UtilsMetaData.ABI instead. -var ERC1967UtilsABI = ERC1967UtilsMetaData.ABI - -// ERC1967UtilsBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC1967UtilsMetaData.Bin instead. -var ERC1967UtilsBin = ERC1967UtilsMetaData.Bin - -// DeployERC1967Utils deploys a new Ethereum contract, binding an instance of ERC1967Utils to it. -func DeployERC1967Utils(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC1967Utils, error) { - parsed, err := ERC1967UtilsMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967UtilsBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil -} - -// ERC1967Utils is an auto generated Go binding around an Ethereum contract. -type ERC1967Utils struct { - ERC1967UtilsCaller // Read-only binding to the contract - ERC1967UtilsTransactor // Write-only binding to the contract - ERC1967UtilsFilterer // Log filterer for contract events -} - -// ERC1967UtilsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC1967UtilsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC1967UtilsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC1967UtilsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UtilsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC1967UtilsSession struct { - Contract *ERC1967Utils // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967UtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC1967UtilsCallerSession struct { - Contract *ERC1967UtilsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC1967UtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC1967UtilsTransactorSession struct { - Contract *ERC1967UtilsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967UtilsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC1967UtilsRaw struct { - Contract *ERC1967Utils // Generic contract binding to access the raw methods on -} - -// ERC1967UtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC1967UtilsCallerRaw struct { - Contract *ERC1967UtilsCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC1967UtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC1967UtilsTransactorRaw struct { - Contract *ERC1967UtilsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC1967Utils creates a new instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967Utils(address common.Address, backend bind.ContractBackend) (*ERC1967Utils, error) { - contract, err := bindERC1967Utils(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil -} - -// NewERC1967UtilsCaller creates a new read-only instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967UtilsCaller(address common.Address, caller bind.ContractCaller) (*ERC1967UtilsCaller, error) { - contract, err := bindERC1967Utils(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC1967UtilsCaller{contract: contract}, nil -} - -// NewERC1967UtilsTransactor creates a new write-only instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967UtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967UtilsTransactor, error) { - contract, err := bindERC1967Utils(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC1967UtilsTransactor{contract: contract}, nil -} - -// NewERC1967UtilsFilterer creates a new log filterer instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967UtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967UtilsFilterer, error) { - contract, err := bindERC1967Utils(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC1967UtilsFilterer{contract: contract}, nil -} - -// bindERC1967Utils binds a generic wrapper to an already deployed contract. -func bindERC1967Utils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC1967UtilsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Utils *ERC1967UtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Utils.Contract.ERC1967UtilsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Utils *ERC1967UtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Utils *ERC1967UtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Utils *ERC1967UtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Utils.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Utils.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Utils.Contract.contract.Transact(opts, method, params...) -} - -// ERC1967UtilsAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ERC1967Utils contract. -type ERC1967UtilsAdminChangedIterator struct { - Event *ERC1967UtilsAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UtilsAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UtilsAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UtilsAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UtilsAdminChanged represents a AdminChanged event raised by the ERC1967Utils contract. -type ERC1967UtilsAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967Utils *ERC1967UtilsFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UtilsAdminChangedIterator, error) { - - logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &ERC1967UtilsAdminChangedIterator{contract: _ERC1967Utils.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967Utils *ERC1967UtilsFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsAdminChanged) (event.Subscription, error) { - - logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UtilsAdminChanged) - if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967Utils *ERC1967UtilsFilterer) ParseAdminChanged(log types.Log) (*ERC1967UtilsAdminChanged, error) { - event := new(ERC1967UtilsAdminChanged) - if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UtilsBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ERC1967Utils contract. -type ERC1967UtilsBeaconUpgradedIterator struct { - Event *ERC1967UtilsBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UtilsBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UtilsBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UtilsBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UtilsBeaconUpgraded represents a BeaconUpgraded event raised by the ERC1967Utils contract. -type ERC1967UtilsBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967Utils *ERC1967UtilsFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UtilsBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &ERC1967UtilsBeaconUpgradedIterator{contract: _ERC1967Utils.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967Utils *ERC1967UtilsFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UtilsBeaconUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967Utils *ERC1967UtilsFilterer) ParseBeaconUpgraded(log types.Log) (*ERC1967UtilsBeaconUpgraded, error) { - event := new(ERC1967UtilsBeaconUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UtilsUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Utils contract. -type ERC1967UtilsUpgradedIterator struct { - Event *ERC1967UtilsUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UtilsUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UtilsUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UtilsUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UtilsUpgraded represents a Upgraded event raised by the ERC1967Utils contract. -type ERC1967UtilsUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Utils *ERC1967UtilsFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UtilsUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ERC1967UtilsUpgradedIterator{contract: _ERC1967Utils.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Utils *ERC1967UtilsFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UtilsUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Utils *ERC1967UtilsFilterer) ParseUpgraded(log types.Log) (*ERC1967UtilsUpgraded, error) { - event := new(ERC1967UtilsUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IBeaconMetaData contains all meta data concerning the IBeacon contract. -var IBeaconMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IBeaconABI is the input ABI used to generate the binding from. -// Deprecated: Use IBeaconMetaData.ABI instead. -var IBeaconABI = IBeaconMetaData.ABI - -// IBeacon is an auto generated Go binding around an Ethereum contract. -type IBeacon struct { - IBeaconCaller // Read-only binding to the contract - IBeaconTransactor // Write-only binding to the contract - IBeaconFilterer // Log filterer for contract events -} - -// IBeaconCaller is an auto generated read-only Go binding around an Ethereum contract. -type IBeaconCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IBeaconTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IBeaconFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IBeaconSession struct { - Contract *IBeacon // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IBeaconCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IBeaconCallerSession struct { - Contract *IBeaconCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IBeaconTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IBeaconTransactorSession struct { - Contract *IBeaconTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IBeaconRaw is an auto generated low-level Go binding around an Ethereum contract. -type IBeaconRaw struct { - Contract *IBeacon // Generic contract binding to access the raw methods on -} - -// IBeaconCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IBeaconCallerRaw struct { - Contract *IBeaconCaller // Generic read-only contract binding to access the raw methods on -} - -// IBeaconTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IBeaconTransactorRaw struct { - Contract *IBeaconTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIBeacon creates a new instance of IBeacon, bound to a specific deployed contract. -func NewIBeacon(address common.Address, backend bind.ContractBackend) (*IBeacon, error) { - contract, err := bindIBeacon(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IBeacon{IBeaconCaller: IBeaconCaller{contract: contract}, IBeaconTransactor: IBeaconTransactor{contract: contract}, IBeaconFilterer: IBeaconFilterer{contract: contract}}, nil -} - -// NewIBeaconCaller creates a new read-only instance of IBeacon, bound to a specific deployed contract. -func NewIBeaconCaller(address common.Address, caller bind.ContractCaller) (*IBeaconCaller, error) { - contract, err := bindIBeacon(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IBeaconCaller{contract: contract}, nil -} - -// NewIBeaconTransactor creates a new write-only instance of IBeacon, bound to a specific deployed contract. -func NewIBeaconTransactor(address common.Address, transactor bind.ContractTransactor) (*IBeaconTransactor, error) { - contract, err := bindIBeacon(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IBeaconTransactor{contract: contract}, nil -} - -// NewIBeaconFilterer creates a new log filterer instance of IBeacon, bound to a specific deployed contract. -func NewIBeaconFilterer(address common.Address, filterer bind.ContractFilterer) (*IBeaconFilterer, error) { - contract, err := bindIBeacon(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IBeaconFilterer{contract: contract}, nil -} - -// bindIBeacon binds a generic wrapper to an already deployed contract. -func bindIBeacon(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IBeaconMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IBeacon *IBeaconRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IBeacon.Contract.IBeaconCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IBeacon *IBeaconRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IBeacon.Contract.IBeaconTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IBeacon *IBeaconRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IBeacon.Contract.IBeaconTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IBeacon *IBeaconCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IBeacon.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IBeacon *IBeaconTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IBeacon.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IBeacon *IBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IBeacon.Contract.contract.Transact(opts, method, params...) -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeacon *IBeaconCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IBeacon.contract.Call(opts, &out, "implementation") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeacon *IBeaconSession) Implementation() (common.Address, error) { - return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeacon *IBeaconCallerSession) Implementation() (common.Address, error) { - return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) -} - -// IERC1967MetaData contains all meta data concerning the IERC1967 contract. -var IERC1967MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", -} - -// IERC1967ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC1967MetaData.ABI instead. -var IERC1967ABI = IERC1967MetaData.ABI - -// IERC1967 is an auto generated Go binding around an Ethereum contract. -type IERC1967 struct { - IERC1967Caller // Read-only binding to the contract - IERC1967Transactor // Write-only binding to the contract - IERC1967Filterer // Log filterer for contract events -} - -// IERC1967Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC1967Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC1967Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC1967Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC1967Session struct { - Contract *IERC1967 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1967CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC1967CallerSession struct { - Contract *IERC1967Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC1967TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC1967TransactorSession struct { - Contract *IERC1967Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1967Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC1967Raw struct { - Contract *IERC1967 // Generic contract binding to access the raw methods on -} - -// IERC1967CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC1967CallerRaw struct { - Contract *IERC1967Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC1967TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC1967TransactorRaw struct { - Contract *IERC1967Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC1967 creates a new instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967(address common.Address, backend bind.ContractBackend) (*IERC1967, error) { - contract, err := bindIERC1967(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC1967{IERC1967Caller: IERC1967Caller{contract: contract}, IERC1967Transactor: IERC1967Transactor{contract: contract}, IERC1967Filterer: IERC1967Filterer{contract: contract}}, nil -} - -// NewIERC1967Caller creates a new read-only instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967Caller(address common.Address, caller bind.ContractCaller) (*IERC1967Caller, error) { - contract, err := bindIERC1967(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC1967Caller{contract: contract}, nil -} - -// NewIERC1967Transactor creates a new write-only instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC1967Transactor, error) { - contract, err := bindIERC1967(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC1967Transactor{contract: contract}, nil -} - -// NewIERC1967Filterer creates a new log filterer instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC1967Filterer, error) { - contract, err := bindIERC1967(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC1967Filterer{contract: contract}, nil -} - -// bindIERC1967 binds a generic wrapper to an already deployed contract. -func bindIERC1967(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC1967MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1967 *IERC1967Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1967.Contract.IERC1967Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1967 *IERC1967Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1967.Contract.IERC1967Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1967 *IERC1967Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1967.Contract.IERC1967Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1967 *IERC1967CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1967.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1967 *IERC1967TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1967.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1967 *IERC1967TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1967.Contract.contract.Transact(opts, method, params...) -} - -// IERC1967AdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the IERC1967 contract. -type IERC1967AdminChangedIterator struct { - Event *IERC1967AdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967AdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967AdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967AdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967AdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967AdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967AdminChanged represents a AdminChanged event raised by the IERC1967 contract. -type IERC1967AdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967 *IERC1967Filterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967AdminChangedIterator, error) { - - logs, sub, err := _IERC1967.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &IERC1967AdminChangedIterator{contract: _IERC1967.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967 *IERC1967Filterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967AdminChanged) (event.Subscription, error) { - - logs, sub, err := _IERC1967.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967AdminChanged) - if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967 *IERC1967Filterer) ParseAdminChanged(log types.Log) (*IERC1967AdminChanged, error) { - event := new(IERC1967AdminChanged) - if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC1967BeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the IERC1967 contract. -type IERC1967BeaconUpgradedIterator struct { - Event *IERC1967BeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967BeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967BeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967BeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967BeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967BeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967BeaconUpgraded represents a BeaconUpgraded event raised by the IERC1967 contract. -type IERC1967BeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967 *IERC1967Filterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967BeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _IERC1967.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &IERC1967BeaconUpgradedIterator{contract: _IERC1967.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967 *IERC1967Filterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967BeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _IERC1967.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967BeaconUpgraded) - if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967 *IERC1967Filterer) ParseBeaconUpgraded(log types.Log) (*IERC1967BeaconUpgraded, error) { - event := new(IERC1967BeaconUpgraded) - if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC1967UpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the IERC1967 contract. -type IERC1967UpgradedIterator struct { - Event *IERC1967Upgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967UpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967Upgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967Upgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967UpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967UpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967Upgraded represents a Upgraded event raised by the IERC1967 contract. -type IERC1967Upgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967 *IERC1967Filterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _IERC1967.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &IERC1967UpgradedIterator{contract: _IERC1967.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967 *IERC1967Filterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967Upgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _IERC1967.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967Upgraded) - if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967 *IERC1967Filterer) ParseUpgraded(log types.Log) (*IERC1967Upgraded, error) { - event := new(IERC1967Upgraded) - if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITransparentUpgradeableProxyMetaData contains all meta data concerning the ITransparentUpgradeableProxy contract. -var ITransparentUpgradeableProxyMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", -} - -// ITransparentUpgradeableProxyABI is the input ABI used to generate the binding from. -// Deprecated: Use ITransparentUpgradeableProxyMetaData.ABI instead. -var ITransparentUpgradeableProxyABI = ITransparentUpgradeableProxyMetaData.ABI - -// ITransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. -type ITransparentUpgradeableProxy struct { - ITransparentUpgradeableProxyCaller // Read-only binding to the contract - ITransparentUpgradeableProxyTransactor // Write-only binding to the contract - ITransparentUpgradeableProxyFilterer // Log filterer for contract events -} - -// ITransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ITransparentUpgradeableProxyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ITransparentUpgradeableProxySession struct { - Contract *ITransparentUpgradeableProxy // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ITransparentUpgradeableProxyCallerSession struct { - Contract *ITransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ITransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ITransparentUpgradeableProxyTransactorSession struct { - Contract *ITransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyRaw struct { - Contract *ITransparentUpgradeableProxy // Generic contract binding to access the raw methods on -} - -// ITransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyCallerRaw struct { - Contract *ITransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on -} - -// ITransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyTransactorRaw struct { - Contract *ITransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewITransparentUpgradeableProxy creates a new instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*ITransparentUpgradeableProxy, error) { - contract, err := bindITransparentUpgradeableProxy(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxy{ITransparentUpgradeableProxyCaller: ITransparentUpgradeableProxyCaller{contract: contract}, ITransparentUpgradeableProxyTransactor: ITransparentUpgradeableProxyTransactor{contract: contract}, ITransparentUpgradeableProxyFilterer: ITransparentUpgradeableProxyFilterer{contract: contract}}, nil -} - -// NewITransparentUpgradeableProxyCaller creates a new read-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*ITransparentUpgradeableProxyCaller, error) { - contract, err := bindITransparentUpgradeableProxy(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyCaller{contract: contract}, nil -} - -// NewITransparentUpgradeableProxyTransactor creates a new write-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ITransparentUpgradeableProxyTransactor, error) { - contract, err := bindITransparentUpgradeableProxy(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyTransactor{contract: contract}, nil -} - -// NewITransparentUpgradeableProxyFilterer creates a new log filterer instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ITransparentUpgradeableProxyFilterer, error) { - contract, err := bindITransparentUpgradeableProxy(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyFilterer{contract: contract}, nil -} - -// bindITransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. -func bindITransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ITransparentUpgradeableProxyMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address , bytes ) payable returns() -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactor) UpgradeToAndCall(opts *bind.TransactOpts, arg0 common.Address, arg1 []byte) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.contract.Transact(opts, "upgradeToAndCall", arg0, arg1) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address , bytes ) payable returns() -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxySession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address , bytes ) payable returns() -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorSession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) -} - -// ITransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyAdminChangedIterator struct { - Event *ITransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITransparentUpgradeableProxyAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITransparentUpgradeableProxyAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITransparentUpgradeableProxyAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ITransparentUpgradeableProxyAdminChangedIterator, error) { - - logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyAdminChangedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { - - logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITransparentUpgradeableProxyAdminChanged) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*ITransparentUpgradeableProxyAdminChanged, error) { - event := new(ITransparentUpgradeableProxyAdminChanged) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITransparentUpgradeableProxyBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyBeaconUpgradedIterator struct { - Event *ITransparentUpgradeableProxyBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITransparentUpgradeableProxyBeaconUpgraded represents a BeaconUpgraded event raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ITransparentUpgradeableProxyBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyBeaconUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseBeaconUpgraded(log types.Log) (*ITransparentUpgradeableProxyBeaconUpgraded, error) { - event := new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyUpgradedIterator struct { - Event *ITransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITransparentUpgradeableProxyUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITransparentUpgradeableProxyUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITransparentUpgradeableProxyUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ITransparentUpgradeableProxyUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITransparentUpgradeableProxyUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*ITransparentUpgradeableProxyUpgraded, error) { - event := new(ITransparentUpgradeableProxyUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableMetaData contains all meta data concerning the Ownable contract. -var OwnableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// OwnableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableMetaData.ABI instead. -var OwnableABI = OwnableMetaData.ABI - -// Ownable is an auto generated Go binding around an Ethereum contract. -type Ownable struct { - OwnableCaller // Read-only binding to the contract - OwnableTransactor // Write-only binding to the contract - OwnableFilterer // Log filterer for contract events -} - -// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableSession struct { - Contract *Ownable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableCallerSession struct { - Contract *OwnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableTransactorSession struct { - Contract *OwnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableRaw struct { - Contract *Ownable // Generic contract binding to access the raw methods on -} - -// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableCallerRaw struct { - Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableTransactorRaw struct { - Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. -func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { - contract, err := bindOwnable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil -} - -// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { - contract, err := bindOwnable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableCaller{contract: contract}, nil -} - -// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { - contract, err := bindOwnable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableTransactor{contract: contract}, nil -} - -// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. -func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { - contract, err := bindOwnable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableFilterer{contract: contract}, nil -} - -// bindOwnable binds a generic wrapper to an already deployed contract. -func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Ownable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableSession) Owner() (common.Address, error) { - return _Ownable.Contract.Owner(&_Ownable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) { - return _Ownable.Contract.Owner(&_Ownable.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} - -// OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract. -type OwnableOwnershipTransferredIterator struct { - Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract. -type OwnableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableOwnershipTransferred) - if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) { - event := new(OwnableOwnershipTransferred) - if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProxyMetaData contains all meta data concerning the Proxy contract. -var ProxyMetaData = &bind.MetaData{ - ABI: "[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", -} - -// ProxyABI is the input ABI used to generate the binding from. -// Deprecated: Use ProxyMetaData.ABI instead. -var ProxyABI = ProxyMetaData.ABI - -// Proxy is an auto generated Go binding around an Ethereum contract. -type Proxy struct { - ProxyCaller // Read-only binding to the contract - ProxyTransactor // Write-only binding to the contract - ProxyFilterer // Log filterer for contract events -} - -// ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ProxyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ProxyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ProxyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ProxySession struct { - Contract *Proxy // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ProxyCallerSession struct { - Contract *ProxyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ProxyTransactorSession struct { - Contract *ProxyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ProxyRaw struct { - Contract *Proxy // Generic contract binding to access the raw methods on -} - -// ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ProxyCallerRaw struct { - Contract *ProxyCaller // Generic read-only contract binding to access the raw methods on -} - -// ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ProxyTransactorRaw struct { - Contract *ProxyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewProxy creates a new instance of Proxy, bound to a specific deployed contract. -func NewProxy(address common.Address, backend bind.ContractBackend) (*Proxy, error) { - contract, err := bindProxy(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Proxy{ProxyCaller: ProxyCaller{contract: contract}, ProxyTransactor: ProxyTransactor{contract: contract}, ProxyFilterer: ProxyFilterer{contract: contract}}, nil -} - -// NewProxyCaller creates a new read-only instance of Proxy, bound to a specific deployed contract. -func NewProxyCaller(address common.Address, caller bind.ContractCaller) (*ProxyCaller, error) { - contract, err := bindProxy(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ProxyCaller{contract: contract}, nil -} - -// NewProxyTransactor creates a new write-only instance of Proxy, bound to a specific deployed contract. -func NewProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyTransactor, error) { - contract, err := bindProxy(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ProxyTransactor{contract: contract}, nil -} - -// NewProxyFilterer creates a new log filterer instance of Proxy, bound to a specific deployed contract. -func NewProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyFilterer, error) { - contract, err := bindProxy(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ProxyFilterer{contract: contract}, nil -} - -// bindProxy binds a generic wrapper to an already deployed contract. -func bindProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ProxyMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Proxy *ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Proxy.Contract.ProxyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Proxy *ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proxy.Contract.ProxyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Proxy *ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Proxy.Contract.ProxyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Proxy *ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Proxy.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Proxy *ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proxy.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Proxy *ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Proxy.Contract.contract.Transact(opts, method, params...) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Proxy *ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _Proxy.contract.RawTransact(opts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Proxy *ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { - return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Proxy *ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) -} - -// ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. -var ProxyAdminMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033", -} - -// ProxyAdminABI is the input ABI used to generate the binding from. -// Deprecated: Use ProxyAdminMetaData.ABI instead. -var ProxyAdminABI = ProxyAdminMetaData.ABI - -// ProxyAdminBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ProxyAdminMetaData.Bin instead. -var ProxyAdminBin = ProxyAdminMetaData.Bin - -// DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. -func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { - parsed, err := ProxyAdminMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, initialOwner) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil -} - -// ProxyAdmin is an auto generated Go binding around an Ethereum contract. -type ProxyAdmin struct { - ProxyAdminCaller // Read-only binding to the contract - ProxyAdminTransactor // Write-only binding to the contract - ProxyAdminFilterer // Log filterer for contract events -} - -// ProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. -type ProxyAdminCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ProxyAdminTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ProxyAdminFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyAdminSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ProxyAdminSession struct { - Contract *ProxyAdmin // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ProxyAdminCallerSession struct { - Contract *ProxyAdminCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ProxyAdminTransactorSession struct { - Contract *ProxyAdminTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. -type ProxyAdminRaw struct { - Contract *ProxyAdmin // Generic contract binding to access the raw methods on -} - -// ProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ProxyAdminCallerRaw struct { - Contract *ProxyAdminCaller // Generic read-only contract binding to access the raw methods on -} - -// ProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ProxyAdminTransactorRaw struct { - Contract *ProxyAdminTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewProxyAdmin creates a new instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdmin(address common.Address, backend bind.ContractBackend) (*ProxyAdmin, error) { - contract, err := bindProxyAdmin(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil -} - -// NewProxyAdminCaller creates a new read-only instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*ProxyAdminCaller, error) { - contract, err := bindProxyAdmin(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ProxyAdminCaller{contract: contract}, nil -} - -// NewProxyAdminTransactor creates a new write-only instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyAdminTransactor, error) { - contract, err := bindProxyAdmin(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ProxyAdminTransactor{contract: contract}, nil -} - -// NewProxyAdminFilterer creates a new log filterer instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyAdminFilterer, error) { - contract, err := bindProxyAdmin(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ProxyAdminFilterer{contract: contract}, nil -} - -// bindProxyAdmin binds a generic wrapper to an already deployed contract. -func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ProxyAdminMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ProxyAdmin *ProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ProxyAdmin.Contract.ProxyAdminCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ProxyAdmin *ProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ProxyAdmin *ProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ProxyAdmin *ProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ProxyAdmin.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ProxyAdmin *ProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ProxyAdmin *ProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ProxyAdmin.Contract.contract.Transact(opts, method, params...) -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ProxyAdmin.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminSession) UPGRADEINTERFACEVERSION() (string, error) { - return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminCallerSession) UPGRADEINTERFACEVERSION() (string, error) { - return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ProxyAdmin.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminSession) Owner() (common.Address, error) { - return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminCallerSession) Owner() (common.Address, error) { - return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminSession) RenounceOwnership() (*types.Transaction, error) { - return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) -} - -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. -// -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "upgradeAndCall", proxy, implementation, data) -} - -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. -// -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) -} - -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. -// -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) -} - -// ProxyAdminOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ProxyAdmin contract. -type ProxyAdminOwnershipTransferredIterator struct { - Event *ProxyAdminOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProxyAdminOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProxyAdminOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProxyAdminOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProxyAdminOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProxyAdminOwnershipTransferred represents a OwnershipTransferred event raised by the ProxyAdmin contract. -type ProxyAdminOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProxyAdminOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ProxyAdmin.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ProxyAdminOwnershipTransferredIterator{contract: _ProxyAdmin.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProxyAdminOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ProxyAdmin.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProxyAdminOwnershipTransferred) - if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) (*ProxyAdminOwnershipTransferred, error) { - event := new(ProxyAdminOwnershipTransferred) - if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// StorageSlotMetaData contains all meta data concerning the StorageSlot contract. -var StorageSlotMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122061b8359cae68a927413faa74d17711eed0ee4a12f05e1d821afc102de131177364736f6c63430008190033", +// ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. +var ProxyAdminMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033", } -// StorageSlotABI is the input ABI used to generate the binding from. -// Deprecated: Use StorageSlotMetaData.ABI instead. -var StorageSlotABI = StorageSlotMetaData.ABI +// ProxyAdminABI is the input ABI used to generate the binding from. +// Deprecated: Use ProxyAdminMetaData.ABI instead. +var ProxyAdminABI = ProxyAdminMetaData.ABI -// StorageSlotBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use StorageSlotMetaData.Bin instead. -var StorageSlotBin = StorageSlotMetaData.Bin +// ProxyAdminBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ProxyAdminMetaData.Bin instead. +var ProxyAdminBin = ProxyAdminMetaData.Bin -// DeployStorageSlot deploys a new Ethereum contract, binding an instance of StorageSlot to it. -func DeployStorageSlot(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StorageSlot, error) { - parsed, err := StorageSlotMetaData.GetAbi() +// DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. +func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { + parsed, err := ProxyAdminMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -3662,284 +53,111 @@ func DeployStorageSlot(auth *bind.TransactOpts, backend bind.ContractBackend) (c return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StorageSlotBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, initialOwner) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil + return address, tx, &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil } -// StorageSlot is an auto generated Go binding around an Ethereum contract. -type StorageSlot struct { - StorageSlotCaller // Read-only binding to the contract - StorageSlotTransactor // Write-only binding to the contract - StorageSlotFilterer // Log filterer for contract events +// ProxyAdmin is an auto generated Go binding around an Ethereum contract. +type ProxyAdmin struct { + ProxyAdminCaller // Read-only binding to the contract + ProxyAdminTransactor // Write-only binding to the contract + ProxyAdminFilterer // Log filterer for contract events } -// StorageSlotCaller is an auto generated read-only Go binding around an Ethereum contract. -type StorageSlotCaller struct { +// ProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProxyAdminCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// StorageSlotTransactor is an auto generated write-only Go binding around an Ethereum contract. -type StorageSlotTransactor struct { +// ProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProxyAdminTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// StorageSlotFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type StorageSlotFilterer struct { +// ProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProxyAdminFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// StorageSlotSession is an auto generated Go binding around an Ethereum contract, +// ProxyAdminSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type StorageSlotSession struct { - Contract *StorageSlot // Generic contract binding to set the session for +type ProxyAdminSession struct { + Contract *ProxyAdmin // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// StorageSlotCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type StorageSlotCallerSession struct { - Contract *StorageSlotCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// StorageSlotTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type StorageSlotTransactorSession struct { - Contract *StorageSlotTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// StorageSlotRaw is an auto generated low-level Go binding around an Ethereum contract. -type StorageSlotRaw struct { - Contract *StorageSlot // Generic contract binding to access the raw methods on -} - -// StorageSlotCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type StorageSlotCallerRaw struct { - Contract *StorageSlotCaller // Generic read-only contract binding to access the raw methods on -} - -// StorageSlotTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type StorageSlotTransactorRaw struct { - Contract *StorageSlotTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewStorageSlot creates a new instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlot(address common.Address, backend bind.ContractBackend) (*StorageSlot, error) { - contract, err := bindStorageSlot(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil -} - -// NewStorageSlotCaller creates a new read-only instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlotCaller(address common.Address, caller bind.ContractCaller) (*StorageSlotCaller, error) { - contract, err := bindStorageSlot(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &StorageSlotCaller{contract: contract}, nil -} - -// NewStorageSlotTransactor creates a new write-only instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlotTransactor(address common.Address, transactor bind.ContractTransactor) (*StorageSlotTransactor, error) { - contract, err := bindStorageSlot(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &StorageSlotTransactor{contract: contract}, nil -} - -// NewStorageSlotFilterer creates a new log filterer instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlotFilterer(address common.Address, filterer bind.ContractFilterer) (*StorageSlotFilterer, error) { - contract, err := bindStorageSlot(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &StorageSlotFilterer{contract: contract}, nil -} - -// bindStorageSlot binds a generic wrapper to an already deployed contract. -func bindStorageSlot(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := StorageSlotMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_StorageSlot *StorageSlotRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _StorageSlot.Contract.StorageSlotCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_StorageSlot *StorageSlotRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _StorageSlot.Contract.StorageSlotTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_StorageSlot *StorageSlotRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _StorageSlot.Contract.StorageSlotTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_StorageSlot *StorageSlotCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _StorageSlot.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_StorageSlot *StorageSlotTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _StorageSlot.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_StorageSlot *StorageSlotTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _StorageSlot.Contract.contract.Transact(opts, method, params...) -} - -// TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. -var TransparentUpgradeableProxyMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60a0604052604051610e0d380380610e0d8339810160408190526100229161038c565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610471565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610ded833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610456565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610ded8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806108f183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561038457818101518382015260200161036c565b50505f910152565b5f805f6060848603121561039e575f80fd5b6103a78461033b565b92506103b56020850161033b565b60408501519092506001600160401b03808211156103d1575f80fd5b818601915086601f8301126103e4575f80fd5b8151818111156103f6576103f6610356565b604051601f8201601f19908116603f0116810190838211818310171561041e5761041e610356565b81604052828152896020848701011115610436575f80fd5b61044783602083016020880161036a565b80955050505050509250925092565b5f825161046781846020870161036a565b9190910192915050565b6080516104696104885f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea264697066735822122038547b7be2e8dc97a709b274eea3f2cd650f3a37e1292e546ca26aa7d84d361e64736f6c63430008190033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", -} - -// TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. -// Deprecated: Use TransparentUpgradeableProxyMetaData.ABI instead. -var TransparentUpgradeableProxyABI = TransparentUpgradeableProxyMetaData.ABI - -// TransparentUpgradeableProxyBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use TransparentUpgradeableProxyMetaData.Bin instead. -var TransparentUpgradeableProxyBin = TransparentUpgradeableProxyMetaData.Bin - -// DeployTransparentUpgradeableProxy deploys a new Ethereum contract, binding an instance of TransparentUpgradeableProxy to it. -func DeployTransparentUpgradeableProxy(auth *bind.TransactOpts, backend bind.ContractBackend, _logic common.Address, initialOwner common.Address, _data []byte) (common.Address, *types.Transaction, *TransparentUpgradeableProxy, error) { - parsed, err := TransparentUpgradeableProxyMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TransparentUpgradeableProxyBin), backend, _logic, initialOwner, _data) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &TransparentUpgradeableProxy{TransparentUpgradeableProxyCaller: TransparentUpgradeableProxyCaller{contract: contract}, TransparentUpgradeableProxyTransactor: TransparentUpgradeableProxyTransactor{contract: contract}, TransparentUpgradeableProxyFilterer: TransparentUpgradeableProxyFilterer{contract: contract}}, nil -} - -// TransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. -type TransparentUpgradeableProxy struct { - TransparentUpgradeableProxyCaller // Read-only binding to the contract - TransparentUpgradeableProxyTransactor // Write-only binding to the contract - TransparentUpgradeableProxyFilterer // Log filterer for contract events -} - -// TransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. -type TransparentUpgradeableProxyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type TransparentUpgradeableProxyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type TransparentUpgradeableProxyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type TransparentUpgradeableProxySession struct { - Contract *TransparentUpgradeableProxy // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type TransparentUpgradeableProxyCallerSession struct { - Contract *TransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ProxyAdminCallerSession struct { + Contract *ProxyAdminCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// TransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type TransparentUpgradeableProxyTransactorSession struct { - Contract *TransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ProxyAdminTransactorSession struct { + Contract *ProxyAdminTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// TransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. -type TransparentUpgradeableProxyRaw struct { - Contract *TransparentUpgradeableProxy // Generic contract binding to access the raw methods on +// ProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProxyAdminRaw struct { + Contract *ProxyAdmin // Generic contract binding to access the raw methods on } -// TransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type TransparentUpgradeableProxyCallerRaw struct { - Contract *TransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on +// ProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProxyAdminCallerRaw struct { + Contract *ProxyAdminCaller // Generic read-only contract binding to access the raw methods on } -// TransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type TransparentUpgradeableProxyTransactorRaw struct { - Contract *TransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on +// ProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProxyAdminTransactorRaw struct { + Contract *ProxyAdminTransactor // Generic write-only contract binding to access the raw methods on } -// NewTransparentUpgradeableProxy creates a new instance of TransparentUpgradeableProxy, bound to a specific deployed contract. -func NewTransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*TransparentUpgradeableProxy, error) { - contract, err := bindTransparentUpgradeableProxy(address, backend, backend, backend) +// NewProxyAdmin creates a new instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdmin(address common.Address, backend bind.ContractBackend) (*ProxyAdmin, error) { + contract, err := bindProxyAdmin(address, backend, backend, backend) if err != nil { return nil, err } - return &TransparentUpgradeableProxy{TransparentUpgradeableProxyCaller: TransparentUpgradeableProxyCaller{contract: contract}, TransparentUpgradeableProxyTransactor: TransparentUpgradeableProxyTransactor{contract: contract}, TransparentUpgradeableProxyFilterer: TransparentUpgradeableProxyFilterer{contract: contract}}, nil + return &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil } -// NewTransparentUpgradeableProxyCaller creates a new read-only instance of TransparentUpgradeableProxy, bound to a specific deployed contract. -func NewTransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*TransparentUpgradeableProxyCaller, error) { - contract, err := bindTransparentUpgradeableProxy(address, caller, nil, nil) +// NewProxyAdminCaller creates a new read-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*ProxyAdminCaller, error) { + contract, err := bindProxyAdmin(address, caller, nil, nil) if err != nil { return nil, err } - return &TransparentUpgradeableProxyCaller{contract: contract}, nil + return &ProxyAdminCaller{contract: contract}, nil } -// NewTransparentUpgradeableProxyTransactor creates a new write-only instance of TransparentUpgradeableProxy, bound to a specific deployed contract. -func NewTransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*TransparentUpgradeableProxyTransactor, error) { - contract, err := bindTransparentUpgradeableProxy(address, nil, transactor, nil) +// NewProxyAdminTransactor creates a new write-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyAdminTransactor, error) { + contract, err := bindProxyAdmin(address, nil, transactor, nil) if err != nil { return nil, err } - return &TransparentUpgradeableProxyTransactor{contract: contract}, nil + return &ProxyAdminTransactor{contract: contract}, nil } -// NewTransparentUpgradeableProxyFilterer creates a new log filterer instance of TransparentUpgradeableProxy, bound to a specific deployed contract. -func NewTransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*TransparentUpgradeableProxyFilterer, error) { - contract, err := bindTransparentUpgradeableProxy(address, nil, nil, filterer) +// NewProxyAdminFilterer creates a new log filterer instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyAdminFilterer, error) { + contract, err := bindProxyAdmin(address, nil, nil, filterer) if err != nil { return nil, err } - return &TransparentUpgradeableProxyFilterer{contract: contract}, nil + return &ProxyAdminFilterer{contract: contract}, nil } -// bindTransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. -func bindTransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := TransparentUpgradeableProxyMetaData.GetAbi() +// bindProxyAdmin binds a generic wrapper to an already deployed contract. +func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProxyAdminMetaData.GetAbi() if err != nil { return nil, err } @@ -3950,199 +168,168 @@ func bindTransparentUpgradeableProxy(address common.Address, caller bind.Contrac // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) +func (_ProxyAdmin *ProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.ProxyAdminCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyTransactor.contract.Transfer(opts) +func (_ProxyAdmin *ProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) +func (_ProxyAdmin *ProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) +func (_ProxyAdmin *ProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TransparentUpgradeableProxy.Contract.contract.Transfer(opts) +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transact(opts, method, params...) } -// Fallback is a paid mutator transaction binding the contract fallback function. +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. // -// Solidity: fallback() payable returns() -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _TransparentUpgradeableProxy.contract.RawTransact(opts, calldata) +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + } -// Fallback is a paid mutator transaction binding the contract fallback function. +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. // -// Solidity: fallback() payable returns() -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxySession) Fallback(calldata []byte) (*types.Transaction, error) { - return _TransparentUpgradeableProxy.Contract.Fallback(&_TransparentUpgradeableProxy.TransactOpts, calldata) +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) } -// Fallback is a paid mutator transaction binding the contract fallback function. +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. // -// Solidity: fallback() payable returns() -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _TransparentUpgradeableProxy.Contract.Fallback(&_TransparentUpgradeableProxy.TransactOpts, calldata) +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) } -// TransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TransparentUpgradeableProxy contract. -type TransparentUpgradeableProxyAdminChangedIterator struct { - Event *TransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "owner") - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data + if err != nil { + return *new(common.Address), err + } - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TransparentUpgradeableProxyAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TransparentUpgradeableProxyAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return out0, err - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TransparentUpgradeableProxyAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TransparentUpgradeableProxyAdminChangedIterator) Error() error { - return it.fail +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCallerSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TransparentUpgradeableProxyAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "renounceOwnership") } -// TransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the TransparentUpgradeableProxy contract. -type TransparentUpgradeableProxyAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) } -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*TransparentUpgradeableProxyAdminChangedIterator, error) { +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +} - logs, sub, err := _TransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &TransparentUpgradeableProxyAdminChangedIterator{contract: _TransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "transferOwnership", newOwner) } -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *TransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} - logs, sub, err := _TransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TransparentUpgradeableProxyAdminChanged) - if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "upgradeAndCall", proxy, implementation, data) } -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. // -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*TransparentUpgradeableProxyAdminChanged, error) { - event := new(TransparentUpgradeableProxyAdminChanged) - if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) } -// TransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the TransparentUpgradeableProxy contract. -type TransparentUpgradeableProxyUpgradedIterator struct { - Event *TransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log +// ProxyAdminOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferredIterator struct { + Event *ProxyAdminOwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -4156,7 +343,7 @@ type TransparentUpgradeableProxyUpgradedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TransparentUpgradeableProxyUpgradedIterator) Next() bool { +func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -4165,7 +352,7 @@ func (it *TransparentUpgradeableProxyUpgradedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TransparentUpgradeableProxyUpgraded) + it.Event = new(ProxyAdminOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4180,7 +367,7 @@ func (it *TransparentUpgradeableProxyUpgradedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TransparentUpgradeableProxyUpgraded) + it.Event = new(ProxyAdminOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4196,51 +383,60 @@ func (it *TransparentUpgradeableProxyUpgradedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TransparentUpgradeableProxyUpgradedIterator) Error() error { +func (it *ProxyAdminOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TransparentUpgradeableProxyUpgradedIterator) Close() error { +func (it *ProxyAdminOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// TransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the TransparentUpgradeableProxy contract. -type TransparentUpgradeableProxyUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos +// ProxyAdminOwnershipTransferred represents a OwnershipTransferred event raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Upgraded(address indexed implementation) -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*TransparentUpgradeableProxyUpgradedIterator, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProxyAdminOwnershipTransferredIterator, error) { - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + logs, sub, err := _ProxyAdmin.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &TransparentUpgradeableProxyUpgradedIterator{contract: _TransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil + return &ProxyAdminOwnershipTransferredIterator{contract: _ProxyAdmin.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Upgraded(address indexed implementation) -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *TransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProxyAdminOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + logs, sub, err := _ProxyAdmin.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -4250,8 +446,8 @@ func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchUp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TransparentUpgradeableProxyUpgraded) - if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -4272,12 +468,12 @@ func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchUp }), nil } -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Upgraded(address indexed implementation) -func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*TransparentUpgradeableProxyUpgraded, error) { - event := new(TransparentUpgradeableProxyUpgraded) - if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) (*ProxyAdminOwnershipTransferred, error) { + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } event.Raw = log diff --git a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go index 7fd6c48bc..cb0ec7800 100644 --- a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go +++ b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go @@ -29,3788 +29,6 @@ var ( _ = abi.ConvertType ) -// AddressMetaData contains all meta data concerning the Address contract. -var AddressMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", -} - -// AddressABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressMetaData.ABI instead. -var AddressABI = AddressMetaData.ABI - -// AddressBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressMetaData.Bin instead. -var AddressBin = AddressMetaData.Bin - -// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. -func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// Address is an auto generated Go binding around an Ethereum contract. -type Address struct { - AddressCaller // Read-only binding to the contract - AddressTransactor // Write-only binding to the contract - AddressFilterer // Log filterer for contract events -} - -// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type AddressSession struct { - Contract *Address // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type AddressCallerSession struct { - Contract *AddressCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type AddressTransactorSession struct { - Contract *AddressTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressRaw struct { - Contract *Address // Generic contract binding to access the raw methods on -} - -// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressCallerRaw struct { - Contract *AddressCaller // Generic read-only contract binding to access the raw methods on -} - -// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressTransactorRaw struct { - Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewAddress creates a new instance of Address, bound to a specific deployed contract. -func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { - contract, err := bindAddress(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. -func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { - contract, err := bindAddress(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &AddressCaller{contract: contract}, nil -} - -// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. -func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { - contract, err := bindAddress(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &AddressTransactor{contract: contract}, nil -} - -// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. -func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { - contract, err := bindAddress(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &AddressFilterer{contract: contract}, nil -} - -// bindAddress binds a generic wrapper to an already deployed contract. -func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.contract.Transact(opts, method, params...) -} - -// ContextMetaData contains all meta data concerning the Context contract. -var ContextMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ContextABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextMetaData.ABI instead. -var ContextABI = ContextMetaData.ABI - -// Context is an auto generated Go binding around an Ethereum contract. -type Context struct { - ContextCaller // Read-only binding to the contract - ContextTransactor // Write-only binding to the contract - ContextFilterer // Log filterer for contract events -} - -// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextSession struct { - Contract *Context // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextCallerSession struct { - Contract *ContextCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextTransactorSession struct { - Contract *ContextTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextRaw struct { - Contract *Context // Generic contract binding to access the raw methods on -} - -// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextCallerRaw struct { - Contract *ContextCaller // Generic read-only contract binding to access the raw methods on -} - -// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextTransactorRaw struct { - Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewContext creates a new instance of Context, bound to a specific deployed contract. -func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { - contract, err := bindContext(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil -} - -// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. -func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { - contract, err := bindContext(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContextCaller{contract: contract}, nil -} - -// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. -func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { - contract, err := bindContext(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextTransactor{contract: contract}, nil -} - -// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. -func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { - contract, err := bindContext(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextFilterer{contract: contract}, nil -} - -// bindContext binds a generic wrapper to an already deployed contract. -func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.contract.Transact(opts, method, params...) -} - -// ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. -var ERC1967ProxyMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220d2be5bfccbcd73d67bdb73a62a6fe90dfd71ce6de78cb8cfa6aa7dcc5a928a7864736f6c63430008190033", -} - -// ERC1967ProxyABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC1967ProxyMetaData.ABI instead. -var ERC1967ProxyABI = ERC1967ProxyMetaData.ABI - -// ERC1967ProxyBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC1967ProxyMetaData.Bin instead. -var ERC1967ProxyBin = ERC1967ProxyMetaData.Bin - -// DeployERC1967Proxy deploys a new Ethereum contract, binding an instance of ERC1967Proxy to it. -func DeployERC1967Proxy(auth *bind.TransactOpts, backend bind.ContractBackend, implementation common.Address, _data []byte) (common.Address, *types.Transaction, *ERC1967Proxy, error) { - parsed, err := ERC1967ProxyMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967ProxyBin), backend, implementation, _data) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil -} - -// ERC1967Proxy is an auto generated Go binding around an Ethereum contract. -type ERC1967Proxy struct { - ERC1967ProxyCaller // Read-only binding to the contract - ERC1967ProxyTransactor // Write-only binding to the contract - ERC1967ProxyFilterer // Log filterer for contract events -} - -// ERC1967ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC1967ProxyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC1967ProxyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC1967ProxyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967ProxySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC1967ProxySession struct { - Contract *ERC1967Proxy // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC1967ProxyCallerSession struct { - Contract *ERC1967ProxyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC1967ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC1967ProxyTransactorSession struct { - Contract *ERC1967ProxyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC1967ProxyRaw struct { - Contract *ERC1967Proxy // Generic contract binding to access the raw methods on -} - -// ERC1967ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC1967ProxyCallerRaw struct { - Contract *ERC1967ProxyCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC1967ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC1967ProxyTransactorRaw struct { - Contract *ERC1967ProxyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC1967Proxy creates a new instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967Proxy(address common.Address, backend bind.ContractBackend) (*ERC1967Proxy, error) { - contract, err := bindERC1967Proxy(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil -} - -// NewERC1967ProxyCaller creates a new read-only instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967ProxyCaller(address common.Address, caller bind.ContractCaller) (*ERC1967ProxyCaller, error) { - contract, err := bindERC1967Proxy(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC1967ProxyCaller{contract: contract}, nil -} - -// NewERC1967ProxyTransactor creates a new write-only instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967ProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967ProxyTransactor, error) { - contract, err := bindERC1967Proxy(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC1967ProxyTransactor{contract: contract}, nil -} - -// NewERC1967ProxyFilterer creates a new log filterer instance of ERC1967Proxy, bound to a specific deployed contract. -func NewERC1967ProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967ProxyFilterer, error) { - contract, err := bindERC1967Proxy(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC1967ProxyFilterer{contract: contract}, nil -} - -// bindERC1967Proxy binds a generic wrapper to an already deployed contract. -func bindERC1967Proxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC1967ProxyMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Proxy *ERC1967ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Proxy.Contract.ERC1967ProxyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Proxy *ERC1967ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Proxy *ERC1967ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Proxy *ERC1967ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Proxy.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.contract.Transact(opts, method, params...) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ERC1967Proxy *ERC1967ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _ERC1967Proxy.contract.RawTransact(opts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ERC1967Proxy *ERC1967ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ERC1967Proxy *ERC1967ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) -} - -// ERC1967ProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Proxy contract. -type ERC1967ProxyUpgradedIterator struct { - Event *ERC1967ProxyUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967ProxyUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967ProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967ProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967ProxyUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967ProxyUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967ProxyUpgraded represents a Upgraded event raised by the ERC1967Proxy contract. -type ERC1967ProxyUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967ProxyUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Proxy.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ERC1967ProxyUpgradedIterator{contract: _ERC1967Proxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Proxy.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967ProxyUpgraded) - if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC1967ProxyUpgraded, error) { - event := new(ERC1967ProxyUpgraded) - if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. -var ERC1967UtilsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122091b976241e37023f15c3b457a029bc623cf4618fc3f25eba2af91d303d10992664736f6c63430008190033", -} - -// ERC1967UtilsABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC1967UtilsMetaData.ABI instead. -var ERC1967UtilsABI = ERC1967UtilsMetaData.ABI - -// ERC1967UtilsBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC1967UtilsMetaData.Bin instead. -var ERC1967UtilsBin = ERC1967UtilsMetaData.Bin - -// DeployERC1967Utils deploys a new Ethereum contract, binding an instance of ERC1967Utils to it. -func DeployERC1967Utils(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC1967Utils, error) { - parsed, err := ERC1967UtilsMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967UtilsBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil -} - -// ERC1967Utils is an auto generated Go binding around an Ethereum contract. -type ERC1967Utils struct { - ERC1967UtilsCaller // Read-only binding to the contract - ERC1967UtilsTransactor // Write-only binding to the contract - ERC1967UtilsFilterer // Log filterer for contract events -} - -// ERC1967UtilsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC1967UtilsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC1967UtilsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC1967UtilsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UtilsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC1967UtilsSession struct { - Contract *ERC1967Utils // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967UtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC1967UtilsCallerSession struct { - Contract *ERC1967UtilsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC1967UtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC1967UtilsTransactorSession struct { - Contract *ERC1967UtilsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967UtilsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC1967UtilsRaw struct { - Contract *ERC1967Utils // Generic contract binding to access the raw methods on -} - -// ERC1967UtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC1967UtilsCallerRaw struct { - Contract *ERC1967UtilsCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC1967UtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC1967UtilsTransactorRaw struct { - Contract *ERC1967UtilsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC1967Utils creates a new instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967Utils(address common.Address, backend bind.ContractBackend) (*ERC1967Utils, error) { - contract, err := bindERC1967Utils(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil -} - -// NewERC1967UtilsCaller creates a new read-only instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967UtilsCaller(address common.Address, caller bind.ContractCaller) (*ERC1967UtilsCaller, error) { - contract, err := bindERC1967Utils(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC1967UtilsCaller{contract: contract}, nil -} - -// NewERC1967UtilsTransactor creates a new write-only instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967UtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967UtilsTransactor, error) { - contract, err := bindERC1967Utils(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC1967UtilsTransactor{contract: contract}, nil -} - -// NewERC1967UtilsFilterer creates a new log filterer instance of ERC1967Utils, bound to a specific deployed contract. -func NewERC1967UtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967UtilsFilterer, error) { - contract, err := bindERC1967Utils(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC1967UtilsFilterer{contract: contract}, nil -} - -// bindERC1967Utils binds a generic wrapper to an already deployed contract. -func bindERC1967Utils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC1967UtilsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Utils *ERC1967UtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Utils.Contract.ERC1967UtilsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Utils *ERC1967UtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Utils *ERC1967UtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967Utils *ERC1967UtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967Utils.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967Utils.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967Utils.Contract.contract.Transact(opts, method, params...) -} - -// ERC1967UtilsAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ERC1967Utils contract. -type ERC1967UtilsAdminChangedIterator struct { - Event *ERC1967UtilsAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UtilsAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UtilsAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UtilsAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UtilsAdminChanged represents a AdminChanged event raised by the ERC1967Utils contract. -type ERC1967UtilsAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967Utils *ERC1967UtilsFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UtilsAdminChangedIterator, error) { - - logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &ERC1967UtilsAdminChangedIterator{contract: _ERC1967Utils.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967Utils *ERC1967UtilsFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsAdminChanged) (event.Subscription, error) { - - logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UtilsAdminChanged) - if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967Utils *ERC1967UtilsFilterer) ParseAdminChanged(log types.Log) (*ERC1967UtilsAdminChanged, error) { - event := new(ERC1967UtilsAdminChanged) - if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UtilsBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ERC1967Utils contract. -type ERC1967UtilsBeaconUpgradedIterator struct { - Event *ERC1967UtilsBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UtilsBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UtilsBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UtilsBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UtilsBeaconUpgraded represents a BeaconUpgraded event raised by the ERC1967Utils contract. -type ERC1967UtilsBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967Utils *ERC1967UtilsFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UtilsBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &ERC1967UtilsBeaconUpgradedIterator{contract: _ERC1967Utils.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967Utils *ERC1967UtilsFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UtilsBeaconUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967Utils *ERC1967UtilsFilterer) ParseBeaconUpgraded(log types.Log) (*ERC1967UtilsBeaconUpgraded, error) { - event := new(ERC1967UtilsBeaconUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UtilsUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Utils contract. -type ERC1967UtilsUpgradedIterator struct { - Event *ERC1967UtilsUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UtilsUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UtilsUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UtilsUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UtilsUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UtilsUpgraded represents a Upgraded event raised by the ERC1967Utils contract. -type ERC1967UtilsUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Utils *ERC1967UtilsFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UtilsUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ERC1967UtilsUpgradedIterator{contract: _ERC1967Utils.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Utils *ERC1967UtilsFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UtilsUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967Utils *ERC1967UtilsFilterer) ParseUpgraded(log types.Log) (*ERC1967UtilsUpgraded, error) { - event := new(ERC1967UtilsUpgraded) - if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IBeaconMetaData contains all meta data concerning the IBeacon contract. -var IBeaconMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IBeaconABI is the input ABI used to generate the binding from. -// Deprecated: Use IBeaconMetaData.ABI instead. -var IBeaconABI = IBeaconMetaData.ABI - -// IBeacon is an auto generated Go binding around an Ethereum contract. -type IBeacon struct { - IBeaconCaller // Read-only binding to the contract - IBeaconTransactor // Write-only binding to the contract - IBeaconFilterer // Log filterer for contract events -} - -// IBeaconCaller is an auto generated read-only Go binding around an Ethereum contract. -type IBeaconCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IBeaconTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IBeaconFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IBeaconSession struct { - Contract *IBeacon // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IBeaconCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IBeaconCallerSession struct { - Contract *IBeaconCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IBeaconTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IBeaconTransactorSession struct { - Contract *IBeaconTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IBeaconRaw is an auto generated low-level Go binding around an Ethereum contract. -type IBeaconRaw struct { - Contract *IBeacon // Generic contract binding to access the raw methods on -} - -// IBeaconCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IBeaconCallerRaw struct { - Contract *IBeaconCaller // Generic read-only contract binding to access the raw methods on -} - -// IBeaconTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IBeaconTransactorRaw struct { - Contract *IBeaconTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIBeacon creates a new instance of IBeacon, bound to a specific deployed contract. -func NewIBeacon(address common.Address, backend bind.ContractBackend) (*IBeacon, error) { - contract, err := bindIBeacon(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IBeacon{IBeaconCaller: IBeaconCaller{contract: contract}, IBeaconTransactor: IBeaconTransactor{contract: contract}, IBeaconFilterer: IBeaconFilterer{contract: contract}}, nil -} - -// NewIBeaconCaller creates a new read-only instance of IBeacon, bound to a specific deployed contract. -func NewIBeaconCaller(address common.Address, caller bind.ContractCaller) (*IBeaconCaller, error) { - contract, err := bindIBeacon(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IBeaconCaller{contract: contract}, nil -} - -// NewIBeaconTransactor creates a new write-only instance of IBeacon, bound to a specific deployed contract. -func NewIBeaconTransactor(address common.Address, transactor bind.ContractTransactor) (*IBeaconTransactor, error) { - contract, err := bindIBeacon(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IBeaconTransactor{contract: contract}, nil -} - -// NewIBeaconFilterer creates a new log filterer instance of IBeacon, bound to a specific deployed contract. -func NewIBeaconFilterer(address common.Address, filterer bind.ContractFilterer) (*IBeaconFilterer, error) { - contract, err := bindIBeacon(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IBeaconFilterer{contract: contract}, nil -} - -// bindIBeacon binds a generic wrapper to an already deployed contract. -func bindIBeacon(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IBeaconMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IBeacon *IBeaconRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IBeacon.Contract.IBeaconCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IBeacon *IBeaconRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IBeacon.Contract.IBeaconTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IBeacon *IBeaconRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IBeacon.Contract.IBeaconTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IBeacon *IBeaconCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IBeacon.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IBeacon *IBeaconTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IBeacon.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IBeacon *IBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IBeacon.Contract.contract.Transact(opts, method, params...) -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeacon *IBeaconCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IBeacon.contract.Call(opts, &out, "implementation") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeacon *IBeaconSession) Implementation() (common.Address, error) { - return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeacon *IBeaconCallerSession) Implementation() (common.Address, error) { - return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) -} - -// IERC1967MetaData contains all meta data concerning the IERC1967 contract. -var IERC1967MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", -} - -// IERC1967ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC1967MetaData.ABI instead. -var IERC1967ABI = IERC1967MetaData.ABI - -// IERC1967 is an auto generated Go binding around an Ethereum contract. -type IERC1967 struct { - IERC1967Caller // Read-only binding to the contract - IERC1967Transactor // Write-only binding to the contract - IERC1967Filterer // Log filterer for contract events -} - -// IERC1967Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC1967Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC1967Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC1967Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC1967Session struct { - Contract *IERC1967 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1967CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC1967CallerSession struct { - Contract *IERC1967Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC1967TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC1967TransactorSession struct { - Contract *IERC1967Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1967Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC1967Raw struct { - Contract *IERC1967 // Generic contract binding to access the raw methods on -} - -// IERC1967CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC1967CallerRaw struct { - Contract *IERC1967Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC1967TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC1967TransactorRaw struct { - Contract *IERC1967Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC1967 creates a new instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967(address common.Address, backend bind.ContractBackend) (*IERC1967, error) { - contract, err := bindIERC1967(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC1967{IERC1967Caller: IERC1967Caller{contract: contract}, IERC1967Transactor: IERC1967Transactor{contract: contract}, IERC1967Filterer: IERC1967Filterer{contract: contract}}, nil -} - -// NewIERC1967Caller creates a new read-only instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967Caller(address common.Address, caller bind.ContractCaller) (*IERC1967Caller, error) { - contract, err := bindIERC1967(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC1967Caller{contract: contract}, nil -} - -// NewIERC1967Transactor creates a new write-only instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC1967Transactor, error) { - contract, err := bindIERC1967(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC1967Transactor{contract: contract}, nil -} - -// NewIERC1967Filterer creates a new log filterer instance of IERC1967, bound to a specific deployed contract. -func NewIERC1967Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC1967Filterer, error) { - contract, err := bindIERC1967(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC1967Filterer{contract: contract}, nil -} - -// bindIERC1967 binds a generic wrapper to an already deployed contract. -func bindIERC1967(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC1967MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1967 *IERC1967Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1967.Contract.IERC1967Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1967 *IERC1967Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1967.Contract.IERC1967Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1967 *IERC1967Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1967.Contract.IERC1967Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1967 *IERC1967CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1967.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1967 *IERC1967TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1967.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1967 *IERC1967TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1967.Contract.contract.Transact(opts, method, params...) -} - -// IERC1967AdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the IERC1967 contract. -type IERC1967AdminChangedIterator struct { - Event *IERC1967AdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967AdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967AdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967AdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967AdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967AdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967AdminChanged represents a AdminChanged event raised by the IERC1967 contract. -type IERC1967AdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967 *IERC1967Filterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967AdminChangedIterator, error) { - - logs, sub, err := _IERC1967.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &IERC1967AdminChangedIterator{contract: _IERC1967.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967 *IERC1967Filterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967AdminChanged) (event.Subscription, error) { - - logs, sub, err := _IERC1967.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967AdminChanged) - if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967 *IERC1967Filterer) ParseAdminChanged(log types.Log) (*IERC1967AdminChanged, error) { - event := new(IERC1967AdminChanged) - if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC1967BeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the IERC1967 contract. -type IERC1967BeaconUpgradedIterator struct { - Event *IERC1967BeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967BeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967BeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967BeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967BeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967BeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967BeaconUpgraded represents a BeaconUpgraded event raised by the IERC1967 contract. -type IERC1967BeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967 *IERC1967Filterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967BeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _IERC1967.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &IERC1967BeaconUpgradedIterator{contract: _IERC1967.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967 *IERC1967Filterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967BeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _IERC1967.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967BeaconUpgraded) - if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967 *IERC1967Filterer) ParseBeaconUpgraded(log types.Log) (*IERC1967BeaconUpgraded, error) { - event := new(IERC1967BeaconUpgraded) - if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC1967UpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the IERC1967 contract. -type IERC1967UpgradedIterator struct { - Event *IERC1967Upgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967UpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967Upgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967Upgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967UpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967UpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967Upgraded represents a Upgraded event raised by the IERC1967 contract. -type IERC1967Upgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967 *IERC1967Filterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _IERC1967.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &IERC1967UpgradedIterator{contract: _IERC1967.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967 *IERC1967Filterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967Upgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _IERC1967.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967Upgraded) - if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967 *IERC1967Filterer) ParseUpgraded(log types.Log) (*IERC1967Upgraded, error) { - event := new(IERC1967Upgraded) - if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITransparentUpgradeableProxyMetaData contains all meta data concerning the ITransparentUpgradeableProxy contract. -var ITransparentUpgradeableProxyMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", -} - -// ITransparentUpgradeableProxyABI is the input ABI used to generate the binding from. -// Deprecated: Use ITransparentUpgradeableProxyMetaData.ABI instead. -var ITransparentUpgradeableProxyABI = ITransparentUpgradeableProxyMetaData.ABI - -// ITransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. -type ITransparentUpgradeableProxy struct { - ITransparentUpgradeableProxyCaller // Read-only binding to the contract - ITransparentUpgradeableProxyTransactor // Write-only binding to the contract - ITransparentUpgradeableProxyFilterer // Log filterer for contract events -} - -// ITransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ITransparentUpgradeableProxyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ITransparentUpgradeableProxySession struct { - Contract *ITransparentUpgradeableProxy // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ITransparentUpgradeableProxyCallerSession struct { - Contract *ITransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ITransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ITransparentUpgradeableProxyTransactorSession struct { - Contract *ITransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyRaw struct { - Contract *ITransparentUpgradeableProxy // Generic contract binding to access the raw methods on -} - -// ITransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyCallerRaw struct { - Contract *ITransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on -} - -// ITransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ITransparentUpgradeableProxyTransactorRaw struct { - Contract *ITransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewITransparentUpgradeableProxy creates a new instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*ITransparentUpgradeableProxy, error) { - contract, err := bindITransparentUpgradeableProxy(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxy{ITransparentUpgradeableProxyCaller: ITransparentUpgradeableProxyCaller{contract: contract}, ITransparentUpgradeableProxyTransactor: ITransparentUpgradeableProxyTransactor{contract: contract}, ITransparentUpgradeableProxyFilterer: ITransparentUpgradeableProxyFilterer{contract: contract}}, nil -} - -// NewITransparentUpgradeableProxyCaller creates a new read-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*ITransparentUpgradeableProxyCaller, error) { - contract, err := bindITransparentUpgradeableProxy(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyCaller{contract: contract}, nil -} - -// NewITransparentUpgradeableProxyTransactor creates a new write-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ITransparentUpgradeableProxyTransactor, error) { - contract, err := bindITransparentUpgradeableProxy(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyTransactor{contract: contract}, nil -} - -// NewITransparentUpgradeableProxyFilterer creates a new log filterer instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. -func NewITransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ITransparentUpgradeableProxyFilterer, error) { - contract, err := bindITransparentUpgradeableProxy(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyFilterer{contract: contract}, nil -} - -// bindITransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. -func bindITransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ITransparentUpgradeableProxyMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address , bytes ) payable returns() -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactor) UpgradeToAndCall(opts *bind.TransactOpts, arg0 common.Address, arg1 []byte) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.contract.Transact(opts, "upgradeToAndCall", arg0, arg1) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address , bytes ) payable returns() -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxySession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address , bytes ) payable returns() -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorSession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { - return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) -} - -// ITransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyAdminChangedIterator struct { - Event *ITransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITransparentUpgradeableProxyAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITransparentUpgradeableProxyAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITransparentUpgradeableProxyAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ITransparentUpgradeableProxyAdminChangedIterator, error) { - - logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyAdminChangedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { - - logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITransparentUpgradeableProxyAdminChanged) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*ITransparentUpgradeableProxyAdminChanged, error) { - event := new(ITransparentUpgradeableProxyAdminChanged) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITransparentUpgradeableProxyBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyBeaconUpgradedIterator struct { - Event *ITransparentUpgradeableProxyBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITransparentUpgradeableProxyBeaconUpgraded represents a BeaconUpgraded event raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ITransparentUpgradeableProxyBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyBeaconUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseBeaconUpgraded(log types.Log) (*ITransparentUpgradeableProxyBeaconUpgraded, error) { - event := new(ITransparentUpgradeableProxyBeaconUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyUpgradedIterator struct { - Event *ITransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITransparentUpgradeableProxyUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITransparentUpgradeableProxyUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITransparentUpgradeableProxyUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITransparentUpgradeableProxyUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the ITransparentUpgradeableProxy contract. -type ITransparentUpgradeableProxyUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ITransparentUpgradeableProxyUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ITransparentUpgradeableProxyUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITransparentUpgradeableProxyUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*ITransparentUpgradeableProxyUpgraded, error) { - event := new(ITransparentUpgradeableProxyUpgraded) - if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableMetaData contains all meta data concerning the Ownable contract. -var OwnableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// OwnableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableMetaData.ABI instead. -var OwnableABI = OwnableMetaData.ABI - -// Ownable is an auto generated Go binding around an Ethereum contract. -type Ownable struct { - OwnableCaller // Read-only binding to the contract - OwnableTransactor // Write-only binding to the contract - OwnableFilterer // Log filterer for contract events -} - -// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableSession struct { - Contract *Ownable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableCallerSession struct { - Contract *OwnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableTransactorSession struct { - Contract *OwnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableRaw struct { - Contract *Ownable // Generic contract binding to access the raw methods on -} - -// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableCallerRaw struct { - Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableTransactorRaw struct { - Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. -func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { - contract, err := bindOwnable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil -} - -// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { - contract, err := bindOwnable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableCaller{contract: contract}, nil -} - -// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { - contract, err := bindOwnable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableTransactor{contract: contract}, nil -} - -// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. -func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { - contract, err := bindOwnable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableFilterer{contract: contract}, nil -} - -// bindOwnable binds a generic wrapper to an already deployed contract. -func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Ownable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableSession) Owner() (common.Address, error) { - return _Ownable.Contract.Owner(&_Ownable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) { - return _Ownable.Contract.Owner(&_Ownable.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} - -// OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract. -type OwnableOwnershipTransferredIterator struct { - Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract. -type OwnableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableOwnershipTransferred) - if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) { - event := new(OwnableOwnershipTransferred) - if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProxyMetaData contains all meta data concerning the Proxy contract. -var ProxyMetaData = &bind.MetaData{ - ABI: "[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", -} - -// ProxyABI is the input ABI used to generate the binding from. -// Deprecated: Use ProxyMetaData.ABI instead. -var ProxyABI = ProxyMetaData.ABI - -// Proxy is an auto generated Go binding around an Ethereum contract. -type Proxy struct { - ProxyCaller // Read-only binding to the contract - ProxyTransactor // Write-only binding to the contract - ProxyFilterer // Log filterer for contract events -} - -// ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ProxyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ProxyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ProxyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ProxySession struct { - Contract *Proxy // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ProxyCallerSession struct { - Contract *ProxyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ProxyTransactorSession struct { - Contract *ProxyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ProxyRaw struct { - Contract *Proxy // Generic contract binding to access the raw methods on -} - -// ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ProxyCallerRaw struct { - Contract *ProxyCaller // Generic read-only contract binding to access the raw methods on -} - -// ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ProxyTransactorRaw struct { - Contract *ProxyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewProxy creates a new instance of Proxy, bound to a specific deployed contract. -func NewProxy(address common.Address, backend bind.ContractBackend) (*Proxy, error) { - contract, err := bindProxy(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Proxy{ProxyCaller: ProxyCaller{contract: contract}, ProxyTransactor: ProxyTransactor{contract: contract}, ProxyFilterer: ProxyFilterer{contract: contract}}, nil -} - -// NewProxyCaller creates a new read-only instance of Proxy, bound to a specific deployed contract. -func NewProxyCaller(address common.Address, caller bind.ContractCaller) (*ProxyCaller, error) { - contract, err := bindProxy(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ProxyCaller{contract: contract}, nil -} - -// NewProxyTransactor creates a new write-only instance of Proxy, bound to a specific deployed contract. -func NewProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyTransactor, error) { - contract, err := bindProxy(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ProxyTransactor{contract: contract}, nil -} - -// NewProxyFilterer creates a new log filterer instance of Proxy, bound to a specific deployed contract. -func NewProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyFilterer, error) { - contract, err := bindProxy(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ProxyFilterer{contract: contract}, nil -} - -// bindProxy binds a generic wrapper to an already deployed contract. -func bindProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ProxyMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Proxy *ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Proxy.Contract.ProxyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Proxy *ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proxy.Contract.ProxyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Proxy *ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Proxy.Contract.ProxyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Proxy *ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Proxy.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Proxy *ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proxy.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Proxy *ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Proxy.Contract.contract.Transact(opts, method, params...) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Proxy *ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _Proxy.contract.RawTransact(opts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Proxy *ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { - return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_Proxy *ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) -} - -// ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. -var ProxyAdminMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220fea62b74dfd4f98bcc69d84445b5612e608ed96dbfab472cf9b9af0c45894ae364736f6c63430008190033", -} - -// ProxyAdminABI is the input ABI used to generate the binding from. -// Deprecated: Use ProxyAdminMetaData.ABI instead. -var ProxyAdminABI = ProxyAdminMetaData.ABI - -// ProxyAdminBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ProxyAdminMetaData.Bin instead. -var ProxyAdminBin = ProxyAdminMetaData.Bin - -// DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. -func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { - parsed, err := ProxyAdminMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, initialOwner) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil -} - -// ProxyAdmin is an auto generated Go binding around an Ethereum contract. -type ProxyAdmin struct { - ProxyAdminCaller // Read-only binding to the contract - ProxyAdminTransactor // Write-only binding to the contract - ProxyAdminFilterer // Log filterer for contract events -} - -// ProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. -type ProxyAdminCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ProxyAdminTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ProxyAdminFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProxyAdminSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ProxyAdminSession struct { - Contract *ProxyAdmin // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ProxyAdminCallerSession struct { - Contract *ProxyAdminCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ProxyAdminTransactorSession struct { - Contract *ProxyAdminTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. -type ProxyAdminRaw struct { - Contract *ProxyAdmin // Generic contract binding to access the raw methods on -} - -// ProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ProxyAdminCallerRaw struct { - Contract *ProxyAdminCaller // Generic read-only contract binding to access the raw methods on -} - -// ProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ProxyAdminTransactorRaw struct { - Contract *ProxyAdminTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewProxyAdmin creates a new instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdmin(address common.Address, backend bind.ContractBackend) (*ProxyAdmin, error) { - contract, err := bindProxyAdmin(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil -} - -// NewProxyAdminCaller creates a new read-only instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*ProxyAdminCaller, error) { - contract, err := bindProxyAdmin(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ProxyAdminCaller{contract: contract}, nil -} - -// NewProxyAdminTransactor creates a new write-only instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyAdminTransactor, error) { - contract, err := bindProxyAdmin(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ProxyAdminTransactor{contract: contract}, nil -} - -// NewProxyAdminFilterer creates a new log filterer instance of ProxyAdmin, bound to a specific deployed contract. -func NewProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyAdminFilterer, error) { - contract, err := bindProxyAdmin(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ProxyAdminFilterer{contract: contract}, nil -} - -// bindProxyAdmin binds a generic wrapper to an already deployed contract. -func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ProxyAdminMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ProxyAdmin *ProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ProxyAdmin.Contract.ProxyAdminCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ProxyAdmin *ProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ProxyAdmin *ProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ProxyAdmin *ProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ProxyAdmin.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ProxyAdmin *ProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ProxyAdmin *ProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ProxyAdmin.Contract.contract.Transact(opts, method, params...) -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ProxyAdmin.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminSession) UPGRADEINTERFACEVERSION() (string, error) { - return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) -} - -// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. -// -// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) -func (_ProxyAdmin *ProxyAdminCallerSession) UPGRADEINTERFACEVERSION() (string, error) { - return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ProxyAdmin.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminSession) Owner() (common.Address, error) { - return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ProxyAdmin *ProxyAdminCallerSession) Owner() (common.Address, error) { - return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminSession) RenounceOwnership() (*types.Transaction, error) { - return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) -} - -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. -// -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.contract.Transact(opts, "upgradeAndCall", proxy, implementation, data) -} - -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. -// -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) -} - -// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. -// -// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() -func (_ProxyAdmin *ProxyAdminTransactorSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { - return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) -} - -// ProxyAdminOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ProxyAdmin contract. -type ProxyAdminOwnershipTransferredIterator struct { - Event *ProxyAdminOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProxyAdminOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProxyAdminOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProxyAdminOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProxyAdminOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProxyAdminOwnershipTransferred represents a OwnershipTransferred event raised by the ProxyAdmin contract. -type ProxyAdminOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProxyAdminOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ProxyAdmin.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ProxyAdminOwnershipTransferredIterator{contract: _ProxyAdmin.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProxyAdminOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ProxyAdmin.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProxyAdminOwnershipTransferred) - if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) (*ProxyAdminOwnershipTransferred, error) { - event := new(ProxyAdminOwnershipTransferred) - if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// StorageSlotMetaData contains all meta data concerning the StorageSlot contract. -var StorageSlotMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122061b8359cae68a927413faa74d17711eed0ee4a12f05e1d821afc102de131177364736f6c63430008190033", -} - -// StorageSlotABI is the input ABI used to generate the binding from. -// Deprecated: Use StorageSlotMetaData.ABI instead. -var StorageSlotABI = StorageSlotMetaData.ABI - -// StorageSlotBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use StorageSlotMetaData.Bin instead. -var StorageSlotBin = StorageSlotMetaData.Bin - -// DeployStorageSlot deploys a new Ethereum contract, binding an instance of StorageSlot to it. -func DeployStorageSlot(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StorageSlot, error) { - parsed, err := StorageSlotMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StorageSlotBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil -} - -// StorageSlot is an auto generated Go binding around an Ethereum contract. -type StorageSlot struct { - StorageSlotCaller // Read-only binding to the contract - StorageSlotTransactor // Write-only binding to the contract - StorageSlotFilterer // Log filterer for contract events -} - -// StorageSlotCaller is an auto generated read-only Go binding around an Ethereum contract. -type StorageSlotCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// StorageSlotTransactor is an auto generated write-only Go binding around an Ethereum contract. -type StorageSlotTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// StorageSlotFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type StorageSlotFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// StorageSlotSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type StorageSlotSession struct { - Contract *StorageSlot // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// StorageSlotCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type StorageSlotCallerSession struct { - Contract *StorageSlotCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// StorageSlotTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type StorageSlotTransactorSession struct { - Contract *StorageSlotTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// StorageSlotRaw is an auto generated low-level Go binding around an Ethereum contract. -type StorageSlotRaw struct { - Contract *StorageSlot // Generic contract binding to access the raw methods on -} - -// StorageSlotCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type StorageSlotCallerRaw struct { - Contract *StorageSlotCaller // Generic read-only contract binding to access the raw methods on -} - -// StorageSlotTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type StorageSlotTransactorRaw struct { - Contract *StorageSlotTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewStorageSlot creates a new instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlot(address common.Address, backend bind.ContractBackend) (*StorageSlot, error) { - contract, err := bindStorageSlot(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil -} - -// NewStorageSlotCaller creates a new read-only instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlotCaller(address common.Address, caller bind.ContractCaller) (*StorageSlotCaller, error) { - contract, err := bindStorageSlot(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &StorageSlotCaller{contract: contract}, nil -} - -// NewStorageSlotTransactor creates a new write-only instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlotTransactor(address common.Address, transactor bind.ContractTransactor) (*StorageSlotTransactor, error) { - contract, err := bindStorageSlot(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &StorageSlotTransactor{contract: contract}, nil -} - -// NewStorageSlotFilterer creates a new log filterer instance of StorageSlot, bound to a specific deployed contract. -func NewStorageSlotFilterer(address common.Address, filterer bind.ContractFilterer) (*StorageSlotFilterer, error) { - contract, err := bindStorageSlot(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &StorageSlotFilterer{contract: contract}, nil -} - -// bindStorageSlot binds a generic wrapper to an already deployed contract. -func bindStorageSlot(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := StorageSlotMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_StorageSlot *StorageSlotRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _StorageSlot.Contract.StorageSlotCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_StorageSlot *StorageSlotRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _StorageSlot.Contract.StorageSlotTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_StorageSlot *StorageSlotRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _StorageSlot.Contract.StorageSlotTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_StorageSlot *StorageSlotCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _StorageSlot.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_StorageSlot *StorageSlotTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _StorageSlot.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_StorageSlot *StorageSlotTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _StorageSlot.Contract.contract.Transact(opts, method, params...) -} - // TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. var TransparentUpgradeableProxyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", diff --git a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go index 930e6947a..cc2d5a87c 100644 --- a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go +++ b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go @@ -39,617 +39,6 @@ type ValidatorSetSigMessage struct { Payload []byte } -// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. -type WarpBlockHash struct { - SourceChainID [32]byte - BlockHash [32]byte -} - -// WarpMessage is an auto generated low-level Go binding around an user-defined struct. -type WarpMessage struct { - SourceChainID [32]byte - OriginSenderAddress common.Address - Payload []byte -} - -// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. -var IWarpMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWarpMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use IWarpMessengerMetaData.ABI instead. -var IWarpMessengerABI = IWarpMessengerMetaData.ABI - -// IWarpMessenger is an auto generated Go binding around an Ethereum contract. -type IWarpMessenger struct { - IWarpMessengerCaller // Read-only binding to the contract - IWarpMessengerTransactor // Write-only binding to the contract - IWarpMessengerFilterer // Log filterer for contract events -} - -// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWarpMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWarpMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWarpMessengerSession struct { - Contract *IWarpMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWarpMessengerCallerSession struct { - Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWarpMessengerTransactorSession struct { - Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWarpMessengerRaw struct { - Contract *IWarpMessenger // Generic contract binding to access the raw methods on -} - -// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWarpMessengerCallerRaw struct { - Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactorRaw struct { - Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { - contract, err := bindIWarpMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil -} - -// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { - contract, err := bindIWarpMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerCaller{contract: contract}, nil -} - -// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { - contract, err := bindIWarpMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerTransactor{contract: contract}, nil -} - -// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { - contract, err := bindIWarpMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWarpMessengerFilterer{contract: contract}, nil -} - -// bindIWarpMessenger binds a generic wrapper to an already deployed contract. -func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWarpMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) - - outstruct := new(struct { - WarpBlockHash WarpBlockHash - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) - - outstruct := new(struct { - Message WarpMessage - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessageIterator struct { - Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWarpMessengerSendWarpMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWarpMessengerSendWarpMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessage struct { - Sender common.Address - MessageID [32]byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil -} - -// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReentrancyGuardMetaData contains all meta data concerning the ReentrancyGuard contract. -var ReentrancyGuardMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}]", -} - -// ReentrancyGuardABI is the input ABI used to generate the binding from. -// Deprecated: Use ReentrancyGuardMetaData.ABI instead. -var ReentrancyGuardABI = ReentrancyGuardMetaData.ABI - -// ReentrancyGuard is an auto generated Go binding around an Ethereum contract. -type ReentrancyGuard struct { - ReentrancyGuardCaller // Read-only binding to the contract - ReentrancyGuardTransactor // Write-only binding to the contract - ReentrancyGuardFilterer // Log filterer for contract events -} - -// ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReentrancyGuardCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReentrancyGuardTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReentrancyGuardFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReentrancyGuardSession struct { - Contract *ReentrancyGuard // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReentrancyGuardCallerSession struct { - Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReentrancyGuardTransactorSession struct { - Contract *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReentrancyGuardRaw struct { - Contract *ReentrancyGuard // Generic contract binding to access the raw methods on -} - -// ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReentrancyGuardCallerRaw struct { - Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on -} - -// ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReentrancyGuardTransactorRaw struct { - Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) { - contract, err := bindReentrancyGuard(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil -} - -// NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) { - contract, err := bindReentrancyGuard(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardCaller{contract: contract}, nil -} - -// NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) { - contract, err := bindReentrancyGuard(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardTransactor{contract: contract}, nil -} - -// NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) { - contract, err := bindReentrancyGuard(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReentrancyGuardFilterer{contract: contract}, nil -} - -// bindReentrancyGuard binds a generic wrapper to an already deployed contract. -func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReentrancyGuardMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...) -} - // ValidatorSetSigMetaData contains all meta data concerning the ValidatorSetSig contract. var ValidatorSetSigMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Delivered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"executeCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"targetBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorSetSigAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structValidatorSetSigMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"validateMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", diff --git a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go index e740db984..7ec170cfb 100644 --- a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go +++ b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go @@ -29,264 +29,135 @@ var ( _ = abi.ConvertType ) -// ContextMetaData contains all meta data concerning the Context contract. -var ContextMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ContextABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextMetaData.ABI instead. -var ContextABI = ContextMetaData.ABI - -// Context is an auto generated Go binding around an Ethereum contract. -type Context struct { - ContextCaller // Read-only binding to the contract - ContextTransactor // Write-only binding to the contract - ContextFilterer // Log filterer for contract events -} - -// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextSession struct { - Contract *Context // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextCallerSession struct { - Contract *ContextCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextTransactorSession struct { - Contract *ContextTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextRaw struct { - Contract *Context // Generic contract binding to access the raw methods on -} - -// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextCallerRaw struct { - Contract *ContextCaller // Generic read-only contract binding to access the raw methods on -} - -// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextTransactorRaw struct { - Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on +// ExampleERC20MetaData contains all meta data concerning the ExampleERC20 contract. +var ExampleERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b6108eb8061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a0712d68146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806342966c681461015957806370a082311461016c57806379cc679014610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806340c10f1914610144575b5f80fd5b6100d761020d565b6040516100e4919061072e565b60405180910390f35b6101006100fb366004610795565b61029d565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b6101006101303660046107bd565b6102b6565b604051601281526020016100e4565b610157610152366004610795565b6102d9565b005b6101576101673660046107f6565b610344565b61011461017a36600461080d565b6001600160a01b03165f9081526020819052604090205490565b6101576101a2366004610795565b610351565b6100d7610366565b6101576101bd3660046107f6565b610375565b6101006101d0366004610795565b6103d7565b6101146101e336600461082d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c9061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546102489061085e565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa8185856103e4565b60019150505b92915050565b5f336102c38582856103f6565b6102ce858585610471565b506001949350505050565b678ac7230489e800008111156103365760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61034082826104ce565b5050565b61034e3382610502565b50565b61035c8233836103f6565b6103408282610502565b60606004805461021c9061085e565b678ac7230489e800008111156103cd5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604482015260640161032d565b61034e33826104ce565b5f336102aa818585610471565b6103f18383836001610536565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046b578181101561045d57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161032d565b61046b84848484035f610536565b50505050565b6001600160a01b03831661049a57604051634b637e8f60e11b81525f600482015260240161032d565b6001600160a01b0382166104c35760405163ec442f0560e01b81525f600482015260240161032d565b6103f1838383610608565b6001600160a01b0382166104f75760405163ec442f0560e01b81525f600482015260240161032d565b6103405f8383610608565b6001600160a01b03821661052b57604051634b637e8f60e11b81525f600482015260240161032d565b610340825f83610608565b6001600160a01b03841661055f5760405163e602df0560e01b81525f600482015260240161032d565b6001600160a01b03831661058857604051634a1406b160e11b81525f600482015260240161032d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610632578060025f8282546106279190610896565b909155506106a29050565b6001600160a01b0383165f90815260208190526040902054818110156106845760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161032d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106be576002805482900390556106dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161072191815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561075a5785810183015185820160400152820161073e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610790575f80fd5b919050565b5f80604083850312156107a6575f80fd5b6107af8361077a565b946020939093013593505050565b5f805f606084860312156107cf575f80fd5b6107d88461077a565b92506107e66020850161077a565b9150604084013590509250925092565b5f60208284031215610806575f80fd5b5035919050565b5f6020828403121561081d575f80fd5b6108268261077a565b9392505050565b5f806040838503121561083e575f80fd5b6108478361077a565b91506108556020840161077a565b90509250929050565b600181811c9082168061087257607f821691505b60208210810361089057634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102b057634e487b7160e01b5f52601160045260245ffdfea26469706673582212206e5a3aa4344b05b49dfabcfd4b35e46dfa45722df16672ecdd056adb7115fb4464736f6c63430008190033", } -// NewContext creates a new instance of Context, bound to a specific deployed contract. -func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { - contract, err := bindContext(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil -} +// ExampleERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ExampleERC20MetaData.ABI instead. +var ExampleERC20ABI = ExampleERC20MetaData.ABI -// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. -func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { - contract, err := bindContext(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContextCaller{contract: contract}, nil -} +// ExampleERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ExampleERC20MetaData.Bin instead. +var ExampleERC20Bin = ExampleERC20MetaData.Bin -// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. -func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { - contract, err := bindContext(address, nil, transactor, nil) +// DeployExampleERC20 deploys a new Ethereum contract, binding an instance of ExampleERC20 to it. +func DeployExampleERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ExampleERC20, error) { + parsed, err := ExampleERC20MetaData.GetAbi() if err != nil { - return nil, err + return common.Address{}, nil, nil, err } - return &ContextTransactor{contract: contract}, nil -} - -// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. -func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { - contract, err := bindContext(address, nil, nil, filterer) - if err != nil { - return nil, err + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - return &ContextFilterer{contract: contract}, nil -} -// bindContext binds a generic wrapper to an already deployed contract. -func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextMetaData.GetAbi() + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ExampleERC20Bin), backend) if err != nil { - return nil, err + return common.Address{}, nil, nil, err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.contract.Transact(opts, method, params...) -} - -// ERC20MetaData contains all meta data concerning the ERC20 contract. -var ERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + return address, tx, &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil } -// ERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20MetaData.ABI instead. -var ERC20ABI = ERC20MetaData.ABI - -// ERC20 is an auto generated Go binding around an Ethereum contract. -type ERC20 struct { - ERC20Caller // Read-only binding to the contract - ERC20Transactor // Write-only binding to the contract - ERC20Filterer // Log filterer for contract events +// ExampleERC20 is an auto generated Go binding around an Ethereum contract. +type ExampleERC20 struct { + ExampleERC20Caller // Read-only binding to the contract + ExampleERC20Transactor // Write-only binding to the contract + ExampleERC20Filterer // Log filterer for contract events } -// ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20Caller struct { +// ExampleERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type ExampleERC20Caller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20Transactor struct { +// ExampleERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ExampleERC20Transactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20Filterer struct { +// ExampleERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ExampleERC20Filterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20Session is an auto generated Go binding around an Ethereum contract, +// ExampleERC20Session is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ERC20Session struct { - Contract *ERC20 // Generic contract binding to set the session for +type ExampleERC20Session struct { + Contract *ExampleERC20 // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ExampleERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ERC20CallerSession struct { - Contract *ERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ExampleERC20CallerSession struct { + Contract *ExampleERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ExampleERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ERC20TransactorSession struct { - Contract *ERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ExampleERC20TransactorSession struct { + Contract *ExampleERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20Raw struct { - Contract *ERC20 // Generic contract binding to access the raw methods on +// ExampleERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type ExampleERC20Raw struct { + Contract *ExampleERC20 // Generic contract binding to access the raw methods on } -// ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20CallerRaw struct { - Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on +// ExampleERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ExampleERC20CallerRaw struct { + Contract *ExampleERC20Caller // Generic read-only contract binding to access the raw methods on } -// ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20TransactorRaw struct { - Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on +// ExampleERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ExampleERC20TransactorRaw struct { + Contract *ExampleERC20Transactor // Generic write-only contract binding to access the raw methods on } -// NewERC20 creates a new instance of ERC20, bound to a specific deployed contract. -func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) { - contract, err := bindERC20(address, backend, backend, backend) +// NewExampleERC20 creates a new instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20(address common.Address, backend bind.ContractBackend) (*ExampleERC20, error) { + contract, err := bindExampleERC20(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil + return &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil } -// NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract. -func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) { - contract, err := bindERC20(address, caller, nil, nil) +// NewExampleERC20Caller creates a new read-only instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20Caller(address common.Address, caller bind.ContractCaller) (*ExampleERC20Caller, error) { + contract, err := bindExampleERC20(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC20Caller{contract: contract}, nil + return &ExampleERC20Caller{contract: contract}, nil } -// NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract. -func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) { - contract, err := bindERC20(address, nil, transactor, nil) +// NewExampleERC20Transactor creates a new write-only instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ExampleERC20Transactor, error) { + contract, err := bindExampleERC20(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC20Transactor{contract: contract}, nil + return &ExampleERC20Transactor{contract: contract}, nil } -// NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract. -func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) { - contract, err := bindERC20(address, nil, nil, filterer) +// NewExampleERC20Filterer creates a new log filterer instance of ExampleERC20, bound to a specific deployed contract. +func NewExampleERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ExampleERC20Filterer, error) { + contract, err := bindExampleERC20(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC20Filterer{contract: contract}, nil + return &ExampleERC20Filterer{contract: contract}, nil } -// bindERC20 binds a generic wrapper to an already deployed contract. -func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20MetaData.GetAbi() +// bindExampleERC20 binds a generic wrapper to an already deployed contract. +func bindExampleERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ExampleERC20MetaData.GetAbi() if err != nil { return nil, err } @@ -297,46 +168,46 @@ func bindERC20(address common.Address, caller bind.ContractCaller, transactor bi // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...) +func (_ExampleERC20 *ExampleERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExampleERC20.Contract.ExampleERC20Caller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts) +func (_ExampleERC20 *ExampleERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...) +func (_ExampleERC20 *ExampleERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20.Contract.contract.Call(opts, result, method, params...) +func (_ExampleERC20 *ExampleERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExampleERC20.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20.Contract.contract.Transfer(opts) +func (_ExampleERC20 *ExampleERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExampleERC20.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20.Contract.contract.Transact(opts, method, params...) +func (_ExampleERC20 *ExampleERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExampleERC20.Contract.contract.Transact(opts, method, params...) } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { +func (_ExampleERC20 *ExampleERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} - err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + err := _ExampleERC20.contract.Call(opts, &out, "allowance", owner, spender) if err != nil { return *new(*big.Int), err @@ -351,23 +222,23 @@ func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +func (_ExampleERC20 *ExampleERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +func (_ExampleERC20 *ExampleERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { +func (_ExampleERC20 *ExampleERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} - err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + err := _ExampleERC20.contract.Call(opts, &out, "balanceOf", account) if err != nil { return *new(*big.Int), err @@ -382,23 +253,23 @@ func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +func (_ExampleERC20 *ExampleERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +func (_ExampleERC20 *ExampleERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) } // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { +func (_ExampleERC20 *ExampleERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ERC20.contract.Call(opts, &out, "decimals") + err := _ExampleERC20.contract.Call(opts, &out, "decimals") if err != nil { return *new(uint8), err @@ -413,3889 +284,85 @@ func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ERC20 *ERC20Session) Decimals() (uint8, error) { - return _ERC20.Contract.Decimals(&_ERC20.CallOpts) +func (_ExampleERC20 *ExampleERC20Session) Decimals() (uint8, error) { + return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) } // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ERC20 *ERC20CallerSession) Decimals() (uint8, error) { - return _ERC20.Contract.Decimals(&_ERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20 *ERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20 *ERC20Session) Name() (string, error) { - return _ERC20.Contract.Name(&_ERC20.CallOpts) +func (_ExampleERC20 *ExampleERC20CallerSession) Decimals() (uint8, error) { + return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) } // Name is a free data retrieval call binding the contract method 0x06fdde03. // // Solidity: function name() view returns(string) -func (_ERC20 *ERC20CallerSession) Name() (string, error) { - return _ERC20.Contract.Name(&_ERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20 *ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20 *ERC20Session) Symbol() (string, error) { - return _ERC20.Contract.Symbol(&_ERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20 *ERC20CallerSession) Symbol() (string, error) { - return _ERC20.Contract.Symbol(&_ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) { - return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { - return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ERC20 *ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ERC20 *ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ERC20 *ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ERC20 *ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) -} - -// ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. -type ERC20ApprovalIterator struct { - Event *ERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20Approval represents a Approval event raised by the ERC20 contract. -type ERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20Approval) - if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) { - event := new(ERC20Approval) - if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract. -type ERC20TransferIterator struct { - Event *ERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20Transfer represents a Transfer event raised by the ERC20 contract. -type ERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20Transfer) - if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) { - event := new(ERC20Transfer) - if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract. -var ERC20BurnableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ERC20BurnableABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20BurnableMetaData.ABI instead. -var ERC20BurnableABI = ERC20BurnableMetaData.ABI - -// ERC20Burnable is an auto generated Go binding around an Ethereum contract. -type ERC20Burnable struct { - ERC20BurnableCaller // Read-only binding to the contract - ERC20BurnableTransactor // Write-only binding to the contract - ERC20BurnableFilterer // Log filterer for contract events -} - -// ERC20BurnableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20BurnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20BurnableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20BurnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20BurnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20BurnableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20BurnableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC20BurnableSession struct { - Contract *ERC20Burnable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20BurnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC20BurnableCallerSession struct { - Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC20BurnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC20BurnableTransactorSession struct { - Contract *ERC20BurnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20BurnableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20BurnableRaw struct { - Contract *ERC20Burnable // Generic contract binding to access the raw methods on -} - -// ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20BurnableCallerRaw struct { - Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20BurnableTransactorRaw struct { - Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) { - contract, err := bindERC20Burnable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil -} - -// NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) { - contract, err := bindERC20Burnable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC20BurnableCaller{contract: contract}, nil -} - -// NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) { - contract, err := bindERC20Burnable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20BurnableTransactor{contract: contract}, nil -} - -// NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) { - contract, err := bindERC20Burnable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20BurnableFilterer{contract: contract}, nil -} - -// bindERC20Burnable binds a generic wrapper to an already deployed contract. -func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20BurnableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Burnable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Burnable.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Burnable *ERC20BurnableCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Burnable *ERC20BurnableSession) Decimals() (uint8, error) { - return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Burnable *ERC20BurnableCallerSession) Decimals() (uint8, error) { - return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Burnable *ERC20BurnableCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Burnable *ERC20BurnableSession) Name() (string, error) { - return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Burnable *ERC20BurnableCallerSession) Name() (string, error) { - return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Burnable *ERC20BurnableCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Burnable *ERC20BurnableSession) Symbol() (string, error) { - return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Burnable *ERC20BurnableCallerSession) Symbol() (string, error) { - return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) { - return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) { - return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "burn", value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ERC20Burnable *ERC20BurnableSession) Burn(value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, value) -} - -// ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract. -type ERC20BurnableApprovalIterator struct { - Event *ERC20BurnableApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20BurnableApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20BurnableApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20BurnableApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract. -type ERC20BurnableApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20BurnableApproval) - if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) { - event := new(ERC20BurnableApproval) - if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract. -type ERC20BurnableTransferIterator struct { - Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20BurnableTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20BurnableTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20BurnableTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract. -type ERC20BurnableTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20BurnableTransfer) - if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) { - event := new(ERC20BurnableTransfer) - if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ExampleERC20MetaData contains all meta data concerning the ExampleERC20 contract. -var ExampleERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b6108eb8061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a0712d68146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806342966c681461015957806370a082311461016c57806379cc679014610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806340c10f1914610144575b5f80fd5b6100d761020d565b6040516100e4919061072e565b60405180910390f35b6101006100fb366004610795565b61029d565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b6101006101303660046107bd565b6102b6565b604051601281526020016100e4565b610157610152366004610795565b6102d9565b005b6101576101673660046107f6565b610344565b61011461017a36600461080d565b6001600160a01b03165f9081526020819052604090205490565b6101576101a2366004610795565b610351565b6100d7610366565b6101576101bd3660046107f6565b610375565b6101006101d0366004610795565b6103d7565b6101146101e336600461082d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c9061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546102489061085e565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa8185856103e4565b60019150505b92915050565b5f336102c38582856103f6565b6102ce858585610471565b506001949350505050565b678ac7230489e800008111156103365760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61034082826104ce565b5050565b61034e3382610502565b50565b61035c8233836103f6565b6103408282610502565b60606004805461021c9061085e565b678ac7230489e800008111156103cd5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604482015260640161032d565b61034e33826104ce565b5f336102aa818585610471565b6103f18383836001610536565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046b578181101561045d57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161032d565b61046b84848484035f610536565b50505050565b6001600160a01b03831661049a57604051634b637e8f60e11b81525f600482015260240161032d565b6001600160a01b0382166104c35760405163ec442f0560e01b81525f600482015260240161032d565b6103f1838383610608565b6001600160a01b0382166104f75760405163ec442f0560e01b81525f600482015260240161032d565b6103405f8383610608565b6001600160a01b03821661052b57604051634b637e8f60e11b81525f600482015260240161032d565b610340825f83610608565b6001600160a01b03841661055f5760405163e602df0560e01b81525f600482015260240161032d565b6001600160a01b03831661058857604051634a1406b160e11b81525f600482015260240161032d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610632578060025f8282546106279190610896565b909155506106a29050565b6001600160a01b0383165f90815260208190526040902054818110156106845760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161032d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106be576002805482900390556106dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161072191815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561075a5785810183015185820160400152820161073e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610790575f80fd5b919050565b5f80604083850312156107a6575f80fd5b6107af8361077a565b946020939093013593505050565b5f805f606084860312156107cf575f80fd5b6107d88461077a565b92506107e66020850161077a565b9150604084013590509250925092565b5f60208284031215610806575f80fd5b5035919050565b5f6020828403121561081d575f80fd5b6108268261077a565b9392505050565b5f806040838503121561083e575f80fd5b6108478361077a565b91506108556020840161077a565b90509250929050565b600181811c9082168061087257607f821691505b60208210810361089057634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102b057634e487b7160e01b5f52601160045260245ffdfea26469706673582212206e5a3aa4344b05b49dfabcfd4b35e46dfa45722df16672ecdd056adb7115fb4464736f6c63430008190033", -} - -// ExampleERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use ExampleERC20MetaData.ABI instead. -var ExampleERC20ABI = ExampleERC20MetaData.ABI - -// ExampleERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ExampleERC20MetaData.Bin instead. -var ExampleERC20Bin = ExampleERC20MetaData.Bin - -// DeployExampleERC20 deploys a new Ethereum contract, binding an instance of ExampleERC20 to it. -func DeployExampleERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ExampleERC20, error) { - parsed, err := ExampleERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ExampleERC20Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil -} - -// ExampleERC20 is an auto generated Go binding around an Ethereum contract. -type ExampleERC20 struct { - ExampleERC20Caller // Read-only binding to the contract - ExampleERC20Transactor // Write-only binding to the contract - ExampleERC20Filterer // Log filterer for contract events -} - -// ExampleERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type ExampleERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ExampleERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ExampleERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ExampleERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ExampleERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ExampleERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ExampleERC20Session struct { - Contract *ExampleERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ExampleERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ExampleERC20CallerSession struct { - Contract *ExampleERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ExampleERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ExampleERC20TransactorSession struct { - Contract *ExampleERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ExampleERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type ExampleERC20Raw struct { - Contract *ExampleERC20 // Generic contract binding to access the raw methods on -} - -// ExampleERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ExampleERC20CallerRaw struct { - Contract *ExampleERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// ExampleERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ExampleERC20TransactorRaw struct { - Contract *ExampleERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewExampleERC20 creates a new instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20(address common.Address, backend bind.ContractBackend) (*ExampleERC20, error) { - contract, err := bindExampleERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ExampleERC20{ExampleERC20Caller: ExampleERC20Caller{contract: contract}, ExampleERC20Transactor: ExampleERC20Transactor{contract: contract}, ExampleERC20Filterer: ExampleERC20Filterer{contract: contract}}, nil -} - -// NewExampleERC20Caller creates a new read-only instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20Caller(address common.Address, caller bind.ContractCaller) (*ExampleERC20Caller, error) { - contract, err := bindExampleERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ExampleERC20Caller{contract: contract}, nil -} - -// NewExampleERC20Transactor creates a new write-only instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ExampleERC20Transactor, error) { - contract, err := bindExampleERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ExampleERC20Transactor{contract: contract}, nil -} - -// NewExampleERC20Filterer creates a new log filterer instance of ExampleERC20, bound to a specific deployed contract. -func NewExampleERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ExampleERC20Filterer, error) { - contract, err := bindExampleERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ExampleERC20Filterer{contract: contract}, nil -} - -// bindExampleERC20 binds a generic wrapper to an already deployed contract. -func bindExampleERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ExampleERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ExampleERC20 *ExampleERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ExampleERC20.Contract.ExampleERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ExampleERC20 *ExampleERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ExampleERC20 *ExampleERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ExampleERC20.Contract.ExampleERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ExampleERC20 *ExampleERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ExampleERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ExampleERC20 *ExampleERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ExampleERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ExampleERC20 *ExampleERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ExampleERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ExampleERC20 *ExampleERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.Allowance(&_ExampleERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ExampleERC20 *ExampleERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ExampleERC20 *ExampleERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ExampleERC20.Contract.BalanceOf(&_ExampleERC20.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ExampleERC20 *ExampleERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ExampleERC20 *ExampleERC20Session) Decimals() (uint8, error) { - return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ExampleERC20 *ExampleERC20CallerSession) Decimals() (uint8, error) { - return _ExampleERC20.Contract.Decimals(&_ExampleERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ExampleERC20 *ExampleERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ExampleERC20 *ExampleERC20Session) Name() (string, error) { - return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ExampleERC20 *ExampleERC20CallerSession) Name() (string, error) { - return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ExampleERC20 *ExampleERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ExampleERC20 *ExampleERC20Session) Symbol() (string, error) { - return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ExampleERC20 *ExampleERC20CallerSession) Symbol() (string, error) { - return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ExampleERC20 *ExampleERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ExampleERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ExampleERC20 *ExampleERC20Session) TotalSupply() (*big.Int, error) { - return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ExampleERC20 *ExampleERC20CallerSession) TotalSupply() (*big.Int, error) { - return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Transactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "burn", value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Session) Burn(value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 value) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) Burn(value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Transactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "burnFrom", account, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ExampleERC20 *ExampleERC20Session) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 value) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Transactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "mint", account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Session) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) -} - -// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. -// -// Solidity: function mint(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Transactor) Mint0(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "mint0", amount) -} - -// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. -// -// Solidity: function mint(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Session) Mint0(amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) -} - -// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. -// -// Solidity: function mint(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) Mint0(amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) -} - -// ExampleERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ExampleERC20 contract. -type ExampleERC20ApprovalIterator struct { - Event *ExampleERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ExampleERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ExampleERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ExampleERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ExampleERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ExampleERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ExampleERC20Approval represents a Approval event raised by the ExampleERC20 contract. -type ExampleERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ExampleERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ExampleERC20ApprovalIterator{contract: _ExampleERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ExampleERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ExampleERC20Approval) - if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) ParseApproval(log types.Log) (*ExampleERC20Approval, error) { - event := new(ExampleERC20Approval) - if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ExampleERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ExampleERC20 contract. -type ExampleERC20TransferIterator struct { - Event *ExampleERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ExampleERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ExampleERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ExampleERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ExampleERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ExampleERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ExampleERC20Transfer represents a Transfer event raised by the ExampleERC20 contract. -type ExampleERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ExampleERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ExampleERC20TransferIterator{contract: _ExampleERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ExampleERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ExampleERC20Transfer) - if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ExampleERC20 *ExampleERC20Filterer) ParseTransfer(log types.Log) (*ExampleERC20Transfer, error) { - event := new(ExampleERC20Transfer) - if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC1155ErrorsMetaData contains all meta data concerning the IERC1155Errors contract. -var IERC1155ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}]", -} - -// IERC1155ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC1155ErrorsMetaData.ABI instead. -var IERC1155ErrorsABI = IERC1155ErrorsMetaData.ABI - -// IERC1155Errors is an auto generated Go binding around an Ethereum contract. -type IERC1155Errors struct { - IERC1155ErrorsCaller // Read-only binding to the contract - IERC1155ErrorsTransactor // Write-only binding to the contract - IERC1155ErrorsFilterer // Log filterer for contract events -} - -// IERC1155ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC1155ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1155ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC1155ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1155ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC1155ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1155ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC1155ErrorsSession struct { - Contract *IERC1155Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1155ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC1155ErrorsCallerSession struct { - Contract *IERC1155ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC1155ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC1155ErrorsTransactorSession struct { - Contract *IERC1155ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1155ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC1155ErrorsRaw struct { - Contract *IERC1155Errors // Generic contract binding to access the raw methods on -} - -// IERC1155ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC1155ErrorsCallerRaw struct { - Contract *IERC1155ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC1155ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC1155ErrorsTransactorRaw struct { - Contract *IERC1155ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC1155Errors creates a new instance of IERC1155Errors, bound to a specific deployed contract. -func NewIERC1155Errors(address common.Address, backend bind.ContractBackend) (*IERC1155Errors, error) { - contract, err := bindIERC1155Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC1155Errors{IERC1155ErrorsCaller: IERC1155ErrorsCaller{contract: contract}, IERC1155ErrorsTransactor: IERC1155ErrorsTransactor{contract: contract}, IERC1155ErrorsFilterer: IERC1155ErrorsFilterer{contract: contract}}, nil -} - -// NewIERC1155ErrorsCaller creates a new read-only instance of IERC1155Errors, bound to a specific deployed contract. -func NewIERC1155ErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC1155ErrorsCaller, error) { - contract, err := bindIERC1155Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC1155ErrorsCaller{contract: contract}, nil -} - -// NewIERC1155ErrorsTransactor creates a new write-only instance of IERC1155Errors, bound to a specific deployed contract. -func NewIERC1155ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC1155ErrorsTransactor, error) { - contract, err := bindIERC1155Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC1155ErrorsTransactor{contract: contract}, nil -} - -// NewIERC1155ErrorsFilterer creates a new log filterer instance of IERC1155Errors, bound to a specific deployed contract. -func NewIERC1155ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC1155ErrorsFilterer, error) { - contract, err := bindIERC1155Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC1155ErrorsFilterer{contract: contract}, nil -} - -// bindIERC1155Errors binds a generic wrapper to an already deployed contract. -func bindIERC1155Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC1155ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1155Errors *IERC1155ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1155Errors.Contract.IERC1155ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1155Errors *IERC1155ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1155Errors.Contract.IERC1155ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1155Errors *IERC1155ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1155Errors.Contract.IERC1155ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1155Errors *IERC1155ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1155Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1155Errors *IERC1155ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1155Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1155Errors *IERC1155ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1155Errors.Contract.contract.Transact(opts, method, params...) -} - -// IERC20MetaData contains all meta data concerning the IERC20 contract. -var IERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetaData.ABI instead. -var IERC20ABI = IERC20MetaData.ABI - -// IERC20 is an auto generated Go binding around an Ethereum contract. -type IERC20 struct { - IERC20Caller // Read-only binding to the contract - IERC20Transactor // Write-only binding to the contract - IERC20Filterer // Log filterer for contract events -} - -// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20Session struct { - Contract *IERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CallerSession struct { - Contract *IERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TransactorSession struct { - Contract *IERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20Raw struct { - Contract *IERC20 // Generic contract binding to access the raw methods on -} - -// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CallerRaw struct { - Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TransactorRaw struct { - Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. -func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { - contract, err := bindIERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil -} - -// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { - contract, err := bindIERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20Caller{contract: contract}, nil -} - -// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { - contract, err := bindIERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20Transactor{contract: contract}, nil -} - -// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. -func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { - contract, err := bindIERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20Filterer{contract: contract}, nil -} - -// bindIERC20 binds a generic wrapper to an already deployed contract. -func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. -type IERC20ApprovalIterator struct { - Event *IERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Approval represents a Approval event raised by the IERC20 contract. -type IERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. -type IERC20TransferIterator struct { - Event *IERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Transfer represents a Transfer event raised by the IERC20 contract. -type IERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20ErrorsMetaData contains all meta data concerning the IERC20Errors contract. -var IERC20ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}]", -} - -// IERC20ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20ErrorsMetaData.ABI instead. -var IERC20ErrorsABI = IERC20ErrorsMetaData.ABI - -// IERC20Errors is an auto generated Go binding around an Ethereum contract. -type IERC20Errors struct { - IERC20ErrorsCaller // Read-only binding to the contract - IERC20ErrorsTransactor // Write-only binding to the contract - IERC20ErrorsFilterer // Log filterer for contract events -} - -// IERC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20ErrorsSession struct { - Contract *IERC20Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20ErrorsCallerSession struct { - Contract *IERC20ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20ErrorsTransactorSession struct { - Contract *IERC20ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20ErrorsRaw struct { - Contract *IERC20Errors // Generic contract binding to access the raw methods on -} - -// IERC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20ErrorsCallerRaw struct { - Contract *IERC20ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20ErrorsTransactorRaw struct { - Contract *IERC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Errors creates a new instance of IERC20Errors, bound to a specific deployed contract. -func NewIERC20Errors(address common.Address, backend bind.ContractBackend) (*IERC20Errors, error) { - contract, err := bindIERC20Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Errors{IERC20ErrorsCaller: IERC20ErrorsCaller{contract: contract}, IERC20ErrorsTransactor: IERC20ErrorsTransactor{contract: contract}, IERC20ErrorsFilterer: IERC20ErrorsFilterer{contract: contract}}, nil -} - -// NewIERC20ErrorsCaller creates a new read-only instance of IERC20Errors, bound to a specific deployed contract. -func NewIERC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20ErrorsCaller, error) { - contract, err := bindIERC20Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20ErrorsCaller{contract: contract}, nil -} - -// NewIERC20ErrorsTransactor creates a new write-only instance of IERC20Errors, bound to a specific deployed contract. -func NewIERC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20ErrorsTransactor, error) { - contract, err := bindIERC20Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20ErrorsTransactor{contract: contract}, nil -} - -// NewIERC20ErrorsFilterer creates a new log filterer instance of IERC20Errors, bound to a specific deployed contract. -func NewIERC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20ErrorsFilterer, error) { - contract, err := bindIERC20Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20ErrorsFilterer{contract: contract}, nil -} - -// bindIERC20Errors binds a generic wrapper to an already deployed contract. -func bindIERC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Errors *IERC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Errors.Contract.IERC20ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Errors *IERC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Errors.Contract.IERC20ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Errors *IERC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Errors.Contract.IERC20ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Errors *IERC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Errors *IERC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Errors *IERC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Errors.Contract.contract.Transact(opts, method, params...) -} - -// IERC20MetadataMetaData contains all meta data concerning the IERC20Metadata contract. -var IERC20MetadataMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20MetadataABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetadataMetaData.ABI instead. -var IERC20MetadataABI = IERC20MetadataMetaData.ABI - -// IERC20Metadata is an auto generated Go binding around an Ethereum contract. -type IERC20Metadata struct { - IERC20MetadataCaller // Read-only binding to the contract - IERC20MetadataTransactor // Write-only binding to the contract - IERC20MetadataFilterer // Log filterer for contract events -} - -// IERC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20MetadataCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20MetadataTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20MetadataFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MetadataSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20MetadataSession struct { - Contract *IERC20Metadata // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20MetadataCallerSession struct { - Contract *IERC20MetadataCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20MetadataTransactorSession struct { - Contract *IERC20MetadataTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20MetadataRaw struct { - Contract *IERC20Metadata // Generic contract binding to access the raw methods on -} - -// IERC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20MetadataCallerRaw struct { - Contract *IERC20MetadataCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20MetadataTransactorRaw struct { - Contract *IERC20MetadataTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Metadata creates a new instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20Metadata(address common.Address, backend bind.ContractBackend) (*IERC20Metadata, error) { - contract, err := bindIERC20Metadata(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Metadata{IERC20MetadataCaller: IERC20MetadataCaller{contract: contract}, IERC20MetadataTransactor: IERC20MetadataTransactor{contract: contract}, IERC20MetadataFilterer: IERC20MetadataFilterer{contract: contract}}, nil -} - -// NewIERC20MetadataCaller creates a new read-only instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC20MetadataCaller, error) { - contract, err := bindIERC20Metadata(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20MetadataCaller{contract: contract}, nil -} - -// NewIERC20MetadataTransactor creates a new write-only instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MetadataTransactor, error) { - contract, err := bindIERC20Metadata(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20MetadataTransactor{contract: contract}, nil -} - -// NewIERC20MetadataFilterer creates a new log filterer instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MetadataFilterer, error) { - contract, err := bindIERC20Metadata(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20MetadataFilterer{contract: contract}, nil -} - -// bindIERC20Metadata binds a generic wrapper to an already deployed contract. -func bindIERC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetadataMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Metadata *IERC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Metadata.Contract.IERC20MetadataCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Metadata *IERC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Metadata *IERC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Metadata *IERC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Metadata.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Metadata.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Metadata.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20Metadata *IERC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20Metadata *IERC20MetadataSession) Decimals() (uint8, error) { - return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20Metadata *IERC20MetadataCallerSession) Decimals() (uint8, error) { - return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20Metadata *IERC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20Metadata *IERC20MetadataSession) Name() (string, error) { - return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20Metadata *IERC20MetadataCallerSession) Name() (string, error) { - return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20Metadata *IERC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20Metadata *IERC20MetadataSession) Symbol() (string, error) { - return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20Metadata *IERC20MetadataCallerSession) Symbol() (string, error) { - return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Metadata *IERC20MetadataSession) TotalSupply() (*big.Int, error) { - return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCallerSession) TotalSupply() (*big.Int, error) { - return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, value) -} - -// IERC20MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Metadata contract. -type IERC20MetadataApprovalIterator struct { - Event *IERC20MetadataApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20MetadataApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MetadataApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20MetadataApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20MetadataApproval represents a Approval event raised by the IERC20Metadata contract. -type IERC20MetadataApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MetadataApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20MetadataApprovalIterator{contract: _IERC20Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MetadataApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20MetadataApproval) - if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) ParseApproval(log types.Log) (*IERC20MetadataApproval, error) { - event := new(IERC20MetadataApproval) - if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Metadata contract. -type IERC20MetadataTransferIterator struct { - Event *IERC20MetadataTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20MetadataTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MetadataTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20MetadataTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20MetadataTransfer represents a Transfer event raised by the IERC20Metadata contract. -type IERC20MetadataTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MetadataTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20MetadataTransferIterator{contract: _IERC20Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MetadataTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20MetadataTransfer) - if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) ParseTransfer(log types.Log) (*IERC20MetadataTransfer, error) { - event := new(IERC20MetadataTransfer) - if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20MintableMetaData contains all meta data concerning the IERC20Mintable contract. -var IERC20MintableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20MintableABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MintableMetaData.ABI instead. -var IERC20MintableABI = IERC20MintableMetaData.ABI - -// IERC20Mintable is an auto generated Go binding around an Ethereum contract. -type IERC20Mintable struct { - IERC20MintableCaller // Read-only binding to the contract - IERC20MintableTransactor // Write-only binding to the contract - IERC20MintableFilterer // Log filterer for contract events -} - -// IERC20MintableCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20MintableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MintableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20MintableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MintableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20MintableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MintableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20MintableSession struct { - Contract *IERC20Mintable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MintableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20MintableCallerSession struct { - Contract *IERC20MintableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20MintableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20MintableTransactorSession struct { - Contract *IERC20MintableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MintableRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20MintableRaw struct { - Contract *IERC20Mintable // Generic contract binding to access the raw methods on -} - -// IERC20MintableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20MintableCallerRaw struct { - Contract *IERC20MintableCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20MintableTransactorRaw struct { - Contract *IERC20MintableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Mintable creates a new instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20Mintable(address common.Address, backend bind.ContractBackend) (*IERC20Mintable, error) { - contract, err := bindIERC20Mintable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Mintable{IERC20MintableCaller: IERC20MintableCaller{contract: contract}, IERC20MintableTransactor: IERC20MintableTransactor{contract: contract}, IERC20MintableFilterer: IERC20MintableFilterer{contract: contract}}, nil -} - -// NewIERC20MintableCaller creates a new read-only instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*IERC20MintableCaller, error) { - contract, err := bindIERC20Mintable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20MintableCaller{contract: contract}, nil -} - -// NewIERC20MintableTransactor creates a new write-only instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MintableTransactor, error) { - contract, err := bindIERC20Mintable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20MintableTransactor{contract: contract}, nil -} - -// NewIERC20MintableFilterer creates a new log filterer instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MintableFilterer, error) { - contract, err := bindIERC20Mintable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20MintableFilterer{contract: contract}, nil -} - -// bindIERC20Mintable binds a generic wrapper to an already deployed contract. -func bindIERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MintableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Mintable *IERC20MintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Mintable.Contract.IERC20MintableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Mintable *IERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Mintable *IERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Mintable *IERC20MintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Mintable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Mintable *IERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Mintable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Mintable *IERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Mintable.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { +func (_ExampleERC20 *ExampleERC20Caller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} - err := _IERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) + err := _ExampleERC20.contract.Call(opts, &out, "name") if err != nil { - return *new(*big.Int), err + return *new(string), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Mintable *IERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) +// Solidity: function name() view returns(string) +func (_ExampleERC20 *ExampleERC20Session) Name() (string, error) { + return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) +// Solidity: function name() view returns(string) +func (_ExampleERC20 *ExampleERC20CallerSession) Name() (string, error) { + return _ExampleERC20.Contract.Name(&_ExampleERC20.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { +// Solidity: function symbol() view returns(string) +func (_ExampleERC20 *ExampleERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} - err := _IERC20Mintable.contract.Call(opts, &out, "balanceOf", account) + err := _ExampleERC20.contract.Call(opts, &out, "symbol") if err != nil { - return *new(*big.Int), err + return *new(string), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Mintable *IERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) +// Solidity: function symbol() view returns(string) +func (_ExampleERC20 *ExampleERC20Session) Symbol() (string, error) { + return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) +// Solidity: function symbol() view returns(string) +func (_ExampleERC20 *ExampleERC20CallerSession) Symbol() (string, error) { + return _ExampleERC20.Contract.Symbol(&_ExampleERC20.CallOpts) } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_IERC20Mintable *IERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { +func (_ExampleERC20 *ExampleERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _IERC20Mintable.contract.Call(opts, &out, "totalSupply") + err := _ExampleERC20.contract.Call(opts, &out, "totalSupply") if err != nil { return *new(*big.Int), err @@ -4310,104 +377,167 @@ func (_IERC20Mintable *IERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (* // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_IERC20Mintable *IERC20MintableSession) TotalSupply() (*big.Int, error) { - return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) +func (_ExampleERC20 *ExampleERC20Session) TotalSupply() (*big.Int, error) { + return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_IERC20Mintable *IERC20MintableCallerSession) TotalSupply() (*big.Int, error) { - return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) +func (_ExampleERC20 *ExampleERC20CallerSession) TotalSupply() (*big.Int, error) { + return _ExampleERC20.Contract.TotalSupply(&_ExampleERC20.CallOpts) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "approve", spender, value) +func (_ExampleERC20 *ExampleERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "approve", spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) +func (_ExampleERC20 *ExampleERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) +func (_ExampleERC20 *ExampleERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Transactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "burn", value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Session) Burn(value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Transactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "burnFrom", account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Session) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) } // Mint is a paid mutator transaction binding the contract method 0x40c10f19. // // Solidity: function mint(address account, uint256 amount) returns() -func (_IERC20Mintable *IERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "mint", account, amount) +func (_ExampleERC20 *ExampleERC20Transactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "mint", account, amount) } // Mint is a paid mutator transaction binding the contract method 0x40c10f19. // // Solidity: function mint(address account, uint256 amount) returns() -func (_IERC20Mintable *IERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) +func (_ExampleERC20 *ExampleERC20Session) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) } // Mint is a paid mutator transaction binding the contract method 0x40c10f19. // // Solidity: function mint(address account, uint256 amount) returns() -func (_IERC20Mintable *IERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) +func (_ExampleERC20 *ExampleERC20TransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint(&_ExampleERC20.TransactOpts, account, amount) +} + +// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. +// +// Solidity: function mint(uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20Transactor) Mint0(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "mint0", amount) +} + +// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. +// +// Solidity: function mint(uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20Session) Mint0(amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) +} + +// Mint0 is a paid mutator transaction binding the contract method 0xa0712d68. +// +// Solidity: function mint(uint256 amount) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) Mint0(amount *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Mint0(&_ExampleERC20.TransactOpts, amount) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "transfer", to, value) +func (_ExampleERC20 *ExampleERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "transfer", to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) +func (_ExampleERC20 *ExampleERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) +func (_ExampleERC20 *ExampleERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "transferFrom", from, to, value) +func (_ExampleERC20 *ExampleERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "transferFrom", from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) +func (_ExampleERC20 *ExampleERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) +func (_ExampleERC20 *ExampleERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) } -// IERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Mintable contract. -type IERC20MintableApprovalIterator struct { - Event *IERC20MintableApproval // Event containing the contract specifics and raw log +// ExampleERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ExampleERC20 contract. +type ExampleERC20ApprovalIterator struct { + Event *ExampleERC20Approval // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -4421,7 +551,7 @@ type IERC20MintableApprovalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IERC20MintableApprovalIterator) Next() bool { +func (it *ExampleERC20ApprovalIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -4430,7 +560,7 @@ func (it *IERC20MintableApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IERC20MintableApproval) + it.Event = new(ExampleERC20Approval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4445,7 +575,7 @@ func (it *IERC20MintableApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IERC20MintableApproval) + it.Event = new(ExampleERC20Approval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4461,19 +591,19 @@ func (it *IERC20MintableApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MintableApprovalIterator) Error() error { +func (it *ExampleERC20ApprovalIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IERC20MintableApprovalIterator) Close() error { +func (it *ExampleERC20ApprovalIterator) Close() error { it.sub.Unsubscribe() return nil } -// IERC20MintableApproval represents a Approval event raised by the IERC20Mintable contract. -type IERC20MintableApproval struct { +// ExampleERC20Approval represents a Approval event raised by the ExampleERC20 contract. +type ExampleERC20Approval struct { Owner common.Address Spender common.Address Value *big.Int @@ -4483,7 +613,7 @@ type IERC20MintableApproval struct { // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MintableApprovalIterator, error) { +func (_ExampleERC20 *ExampleERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ExampleERC20ApprovalIterator, error) { var ownerRule []interface{} for _, ownerItem := range owner { @@ -4494,17 +624,17 @@ func (_IERC20Mintable *IERC20MintableFilterer) FilterApproval(opts *bind.FilterO spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } - return &IERC20MintableApprovalIterator{contract: _IERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil + return &ExampleERC20ApprovalIterator{contract: _ExampleERC20.contract, event: "Approval", logs: logs, sub: sub}, nil } // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { +func (_ExampleERC20 *ExampleERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ExampleERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { var ownerRule []interface{} for _, ownerItem := range owner { @@ -4515,7 +645,7 @@ func (_IERC20Mintable *IERC20MintableFilterer) WatchApproval(opts *bind.WatchOpt spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } @@ -4525,8 +655,8 @@ func (_IERC20Mintable *IERC20MintableFilterer) WatchApproval(opts *bind.WatchOpt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IERC20MintableApproval) - if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(ExampleERC20Approval) + if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { return err } event.Raw = log @@ -4550,18 +680,18 @@ func (_IERC20Mintable *IERC20MintableFilterer) WatchApproval(opts *bind.WatchOpt // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) ParseApproval(log types.Log) (*IERC20MintableApproval, error) { - event := new(IERC20MintableApproval) - if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { +func (_ExampleERC20 *ExampleERC20Filterer) ParseApproval(log types.Log) (*ExampleERC20Approval, error) { + event := new(ExampleERC20Approval) + if err := _ExampleERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Mintable contract. -type IERC20MintableTransferIterator struct { - Event *IERC20MintableTransfer // Event containing the contract specifics and raw log +// ExampleERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ExampleERC20 contract. +type ExampleERC20TransferIterator struct { + Event *ExampleERC20Transfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -4575,7 +705,7 @@ type IERC20MintableTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IERC20MintableTransferIterator) Next() bool { +func (it *ExampleERC20TransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -4584,7 +714,7 @@ func (it *IERC20MintableTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IERC20MintableTransfer) + it.Event = new(ExampleERC20Transfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4599,7 +729,7 @@ func (it *IERC20MintableTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IERC20MintableTransfer) + it.Event = new(ExampleERC20Transfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4615,19 +745,19 @@ func (it *IERC20MintableTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MintableTransferIterator) Error() error { +func (it *ExampleERC20TransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IERC20MintableTransferIterator) Close() error { +func (it *ExampleERC20TransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// IERC20MintableTransfer represents a Transfer event raised by the IERC20Mintable contract. -type IERC20MintableTransfer struct { +// ExampleERC20Transfer represents a Transfer event raised by the ExampleERC20 contract. +type ExampleERC20Transfer struct { From common.Address To common.Address Value *big.Int @@ -4637,7 +767,7 @@ type IERC20MintableTransfer struct { // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MintableTransferIterator, error) { +func (_ExampleERC20 *ExampleERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ExampleERC20TransferIterator, error) { var fromRule []interface{} for _, fromItem := range from { @@ -4648,17 +778,17 @@ func (_IERC20Mintable *IERC20MintableFilterer) FilterTransfer(opts *bind.FilterO toRule = append(toRule, toItem) } - logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _ExampleERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } - return &IERC20MintableTransferIterator{contract: _IERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil + return &ExampleERC20TransferIterator{contract: _ExampleERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil } // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { +func (_ExampleERC20 *ExampleERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ExampleERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { var fromRule []interface{} for _, fromItem := range from { @@ -4669,7 +799,7 @@ func (_IERC20Mintable *IERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpt toRule = append(toRule, toItem) } - logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _ExampleERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } @@ -4679,8 +809,8 @@ func (_IERC20Mintable *IERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IERC20MintableTransfer) - if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { + event := new(ExampleERC20Transfer) + if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return err } event.Raw = log @@ -4704,162 +834,11 @@ func (_IERC20Mintable *IERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpt // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) ParseTransfer(log types.Log) (*IERC20MintableTransfer, error) { - event := new(IERC20MintableTransfer) - if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { +func (_ExampleERC20 *ExampleERC20Filterer) ParseTransfer(log types.Log) (*ExampleERC20Transfer, error) { + event := new(ExampleERC20Transfer) + if err := _ExampleERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } event.Raw = log return event, nil } - -// IERC721ErrorsMetaData contains all meta data concerning the IERC721Errors contract. -var IERC721ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}]", -} - -// IERC721ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC721ErrorsMetaData.ABI instead. -var IERC721ErrorsABI = IERC721ErrorsMetaData.ABI - -// IERC721Errors is an auto generated Go binding around an Ethereum contract. -type IERC721Errors struct { - IERC721ErrorsCaller // Read-only binding to the contract - IERC721ErrorsTransactor // Write-only binding to the contract - IERC721ErrorsFilterer // Log filterer for contract events -} - -// IERC721ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC721ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC721ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC721ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC721ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC721ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC721ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC721ErrorsSession struct { - Contract *IERC721Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC721ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC721ErrorsCallerSession struct { - Contract *IERC721ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC721ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC721ErrorsTransactorSession struct { - Contract *IERC721ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC721ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC721ErrorsRaw struct { - Contract *IERC721Errors // Generic contract binding to access the raw methods on -} - -// IERC721ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC721ErrorsCallerRaw struct { - Contract *IERC721ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC721ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC721ErrorsTransactorRaw struct { - Contract *IERC721ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC721Errors creates a new instance of IERC721Errors, bound to a specific deployed contract. -func NewIERC721Errors(address common.Address, backend bind.ContractBackend) (*IERC721Errors, error) { - contract, err := bindIERC721Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC721Errors{IERC721ErrorsCaller: IERC721ErrorsCaller{contract: contract}, IERC721ErrorsTransactor: IERC721ErrorsTransactor{contract: contract}, IERC721ErrorsFilterer: IERC721ErrorsFilterer{contract: contract}}, nil -} - -// NewIERC721ErrorsCaller creates a new read-only instance of IERC721Errors, bound to a specific deployed contract. -func NewIERC721ErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC721ErrorsCaller, error) { - contract, err := bindIERC721Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC721ErrorsCaller{contract: contract}, nil -} - -// NewIERC721ErrorsTransactor creates a new write-only instance of IERC721Errors, bound to a specific deployed contract. -func NewIERC721ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ErrorsTransactor, error) { - contract, err := bindIERC721Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC721ErrorsTransactor{contract: contract}, nil -} - -// NewIERC721ErrorsFilterer creates a new log filterer instance of IERC721Errors, bound to a specific deployed contract. -func NewIERC721ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ErrorsFilterer, error) { - contract, err := bindIERC721Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC721ErrorsFilterer{contract: contract}, nil -} - -// bindIERC721Errors binds a generic wrapper to an already deployed contract. -func bindIERC721Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC721ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC721Errors *IERC721ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC721Errors.Contract.IERC721ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC721Errors *IERC721ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC721Errors.Contract.IERC721ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC721Errors *IERC721ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC721Errors.Contract.IERC721ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC721Errors *IERC721ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC721Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC721Errors *IERC721ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC721Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC721Errors *IERC721ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC721Errors.Contract.contract.Transact(opts, method, params...) -} diff --git a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go index 385020488..589dc83a9 100644 --- a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -63,4282 +63,6 @@ type TeleporterMessageReceipt struct { RelayerRewardAddress common.Address } -// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. -type WarpBlockHash struct { - SourceChainID [32]byte - BlockHash [32]byte -} - -// WarpMessage is an auto generated low-level Go binding around an user-defined struct. -type WarpMessage struct { - SourceChainID [32]byte - OriginSenderAddress common.Address - Payload []byte -} - -// AddressMetaData contains all meta data concerning the Address contract. -var AddressMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", -} - -// AddressABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressMetaData.ABI instead. -var AddressABI = AddressMetaData.ABI - -// AddressBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressMetaData.Bin instead. -var AddressBin = AddressMetaData.Bin - -// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. -func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// Address is an auto generated Go binding around an Ethereum contract. -type Address struct { - AddressCaller // Read-only binding to the contract - AddressTransactor // Write-only binding to the contract - AddressFilterer // Log filterer for contract events -} - -// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type AddressSession struct { - Contract *Address // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type AddressCallerSession struct { - Contract *AddressCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type AddressTransactorSession struct { - Contract *AddressTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressRaw struct { - Contract *Address // Generic contract binding to access the raw methods on -} - -// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressCallerRaw struct { - Contract *AddressCaller // Generic read-only contract binding to access the raw methods on -} - -// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressTransactorRaw struct { - Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewAddress creates a new instance of Address, bound to a specific deployed contract. -func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { - contract, err := bindAddress(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. -func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { - contract, err := bindAddress(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &AddressCaller{contract: contract}, nil -} - -// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. -func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { - contract, err := bindAddress(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &AddressTransactor{contract: contract}, nil -} - -// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. -func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { - contract, err := bindAddress(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &AddressFilterer{contract: contract}, nil -} - -// bindAddress binds a generic wrapper to an already deployed contract. -func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.contract.Transact(opts, method, params...) -} - -// IERC20MetaData contains all meta data concerning the IERC20 contract. -var IERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetaData.ABI instead. -var IERC20ABI = IERC20MetaData.ABI - -// IERC20 is an auto generated Go binding around an Ethereum contract. -type IERC20 struct { - IERC20Caller // Read-only binding to the contract - IERC20Transactor // Write-only binding to the contract - IERC20Filterer // Log filterer for contract events -} - -// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20Session struct { - Contract *IERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CallerSession struct { - Contract *IERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TransactorSession struct { - Contract *IERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20Raw struct { - Contract *IERC20 // Generic contract binding to access the raw methods on -} - -// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CallerRaw struct { - Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TransactorRaw struct { - Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. -func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { - contract, err := bindIERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil -} - -// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { - contract, err := bindIERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20Caller{contract: contract}, nil -} - -// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { - contract, err := bindIERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20Transactor{contract: contract}, nil -} - -// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. -func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { - contract, err := bindIERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20Filterer{contract: contract}, nil -} - -// bindIERC20 binds a generic wrapper to an already deployed contract. -func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. -type IERC20ApprovalIterator struct { - Event *IERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Approval represents a Approval event raised by the IERC20 contract. -type IERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. -type IERC20TransferIterator struct { - Event *IERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Transfer represents a Transfer event raised by the IERC20 contract. -type IERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20PermitMetaData contains all meta data concerning the IERC20Permit contract. -var IERC20PermitMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20PermitABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20PermitMetaData.ABI instead. -var IERC20PermitABI = IERC20PermitMetaData.ABI - -// IERC20Permit is an auto generated Go binding around an Ethereum contract. -type IERC20Permit struct { - IERC20PermitCaller // Read-only binding to the contract - IERC20PermitTransactor // Write-only binding to the contract - IERC20PermitFilterer // Log filterer for contract events -} - -// IERC20PermitCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20PermitCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20PermitTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20PermitFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20PermitSession struct { - Contract *IERC20Permit // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20PermitCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20PermitCallerSession struct { - Contract *IERC20PermitCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20PermitTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20PermitTransactorSession struct { - Contract *IERC20PermitTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20PermitRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20PermitRaw struct { - Contract *IERC20Permit // Generic contract binding to access the raw methods on -} - -// IERC20PermitCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20PermitCallerRaw struct { - Contract *IERC20PermitCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20PermitTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20PermitTransactorRaw struct { - Contract *IERC20PermitTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Permit creates a new instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20Permit(address common.Address, backend bind.ContractBackend) (*IERC20Permit, error) { - contract, err := bindIERC20Permit(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Permit{IERC20PermitCaller: IERC20PermitCaller{contract: contract}, IERC20PermitTransactor: IERC20PermitTransactor{contract: contract}, IERC20PermitFilterer: IERC20PermitFilterer{contract: contract}}, nil -} - -// NewIERC20PermitCaller creates a new read-only instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitCaller(address common.Address, caller bind.ContractCaller) (*IERC20PermitCaller, error) { - contract, err := bindIERC20Permit(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20PermitCaller{contract: contract}, nil -} - -// NewIERC20PermitTransactor creates a new write-only instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20PermitTransactor, error) { - contract, err := bindIERC20Permit(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20PermitTransactor{contract: contract}, nil -} - -// NewIERC20PermitFilterer creates a new log filterer instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20PermitFilterer, error) { - contract, err := bindIERC20Permit(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20PermitFilterer{contract: contract}, nil -} - -// bindIERC20Permit binds a generic wrapper to an already deployed contract. -func bindIERC20Permit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20PermitMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Permit *IERC20PermitRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Permit.Contract.IERC20PermitCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Permit *IERC20PermitRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Permit *IERC20PermitRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Permit *IERC20PermitCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Permit.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Permit *IERC20PermitTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Permit.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Permit *IERC20PermitTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Permit.Contract.contract.Transact(opts, method, params...) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IERC20Permit.contract.Call(opts, &out, "DOMAIN_SEPARATOR") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitCallerSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Permit.contract.Call(opts, &out, "nonces", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitSession) Nonces(owner common.Address) (*big.Int, error) { - return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitCallerSession) Nonces(owner common.Address) (*big.Int, error) { - return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// ITeleporterMessengerMetaData contains all meta data concerning the ITeleporterMessenger contract. -var ITeleporterMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ITeleporterMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use ITeleporterMessengerMetaData.ABI instead. -var ITeleporterMessengerABI = ITeleporterMessengerMetaData.ABI - -// ITeleporterMessenger is an auto generated Go binding around an Ethereum contract. -type ITeleporterMessenger struct { - ITeleporterMessengerCaller // Read-only binding to the contract - ITeleporterMessengerTransactor // Write-only binding to the contract - ITeleporterMessengerFilterer // Log filterer for contract events -} - -// ITeleporterMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ITeleporterMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ITeleporterMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ITeleporterMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ITeleporterMessengerSession struct { - Contract *ITeleporterMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ITeleporterMessengerCallerSession struct { - Contract *ITeleporterMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ITeleporterMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ITeleporterMessengerTransactorSession struct { - Contract *ITeleporterMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ITeleporterMessengerRaw struct { - Contract *ITeleporterMessenger // Generic contract binding to access the raw methods on -} - -// ITeleporterMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ITeleporterMessengerCallerRaw struct { - Contract *ITeleporterMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// ITeleporterMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ITeleporterMessengerTransactorRaw struct { - Contract *ITeleporterMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewITeleporterMessenger creates a new instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessenger(address common.Address, backend bind.ContractBackend) (*ITeleporterMessenger, error) { - contract, err := bindITeleporterMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ITeleporterMessenger{ITeleporterMessengerCaller: ITeleporterMessengerCaller{contract: contract}, ITeleporterMessengerTransactor: ITeleporterMessengerTransactor{contract: contract}, ITeleporterMessengerFilterer: ITeleporterMessengerFilterer{contract: contract}}, nil -} - -// NewITeleporterMessengerCaller creates a new read-only instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterMessengerCaller, error) { - contract, err := bindITeleporterMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ITeleporterMessengerCaller{contract: contract}, nil -} - -// NewITeleporterMessengerTransactor creates a new write-only instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterMessengerTransactor, error) { - contract, err := bindITeleporterMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ITeleporterMessengerTransactor{contract: contract}, nil -} - -// NewITeleporterMessengerFilterer creates a new log filterer instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterMessengerFilterer, error) { - contract, err := bindITeleporterMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ITeleporterMessengerFilterer{contract: contract}, nil -} - -// bindITeleporterMessenger binds a generic wrapper to an already deployed contract. -func bindITeleporterMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ITeleporterMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterMessenger.Contract.ITeleporterMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterMessenger *ITeleporterMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.contract.Transact(opts, method, params...) -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) CheckRelayerRewardAmount(opts *bind.CallOpts, relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "checkRelayerRewardAmount", relayer, feeTokenAddress) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetFeeInfo(opts *bind.CallOpts, messageID [32]byte) (common.Address, *big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getFeeInfo", messageID) - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { - return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { - return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetMessageHash(opts *bind.CallOpts, messageID [32]byte) ([32]byte, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getMessageHash", messageID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetNextMessageID(opts *bind.CallOpts, destinationBlockchainID [32]byte) ([32]byte, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getNextMessageID", destinationBlockchainID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", sourceBlockchainID, index) - - if err != nil { - return *new(TeleporterMessageReceipt), err - } - - out0 := *abi.ConvertType(out[0], new(TeleporterMessageReceipt)).(*TeleporterMessageReceipt) - - return out0, err - -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, sourceBlockchainID [32]byte) (*big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", sourceBlockchainID) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { - return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { - return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetRelayerRewardAddress(opts *bind.CallOpts, messageID [32]byte) (common.Address, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getRelayerRewardAddress", messageID) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { - return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { - return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) MessageReceived(opts *bind.CallOpts, messageID [32]byte) (bool, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "messageReceived", messageID) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerSession) MessageReceived(messageID [32]byte) (bool, error) { - return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) MessageReceived(messageID [32]byte) (bool, error) { - return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) AddFeeAmount(opts *bind.TransactOpts, messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "addFeeAmount", messageID, feeTokenAddress, additionalFeeAmount) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) ReceiveCrossChainMessage(opts *bind.TransactOpts, messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "receiveCrossChainMessage", messageIndex, relayerRewardAddress) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RedeemRelayerRewards(opts *bind.TransactOpts, feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "redeemRelayerRewards", feeTokenAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "retryMessageExecution", sourceBlockchainID, message) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetrySendCrossChainMessage(opts *bind.TransactOpts, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "retrySendCrossChainMessage", message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendCrossChainMessage(opts *bind.TransactOpts, messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "sendCrossChainMessage", messageInput) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// ITeleporterMessengerAddFeeAmountIterator is returned from FilterAddFeeAmount and is used to iterate over the raw logs and unpacked data for AddFeeAmount events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerAddFeeAmountIterator struct { - Event *ITeleporterMessengerAddFeeAmount // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerAddFeeAmountIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerAddFeeAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerAddFeeAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerAddFeeAmountIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerAddFeeAmountIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerAddFeeAmount represents a AddFeeAmount event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerAddFeeAmount struct { - MessageID [32]byte - UpdatedFeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddFeeAmount is a free log retrieval operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterAddFeeAmount(opts *bind.FilterOpts, messageID [][32]byte) (*ITeleporterMessengerAddFeeAmountIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "AddFeeAmount", messageIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerAddFeeAmountIterator{contract: _ITeleporterMessenger.contract, event: "AddFeeAmount", logs: logs, sub: sub}, nil -} - -// WatchAddFeeAmount is a free log subscription operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchAddFeeAmount(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerAddFeeAmount, messageID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "AddFeeAmount", messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerAddFeeAmount) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddFeeAmount is a log parse operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseAddFeeAmount(log types.Log) (*ITeleporterMessengerAddFeeAmount, error) { - event := new(ITeleporterMessengerAddFeeAmount) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerBlockchainIDInitializedIterator is returned from FilterBlockchainIDInitialized and is used to iterate over the raw logs and unpacked data for BlockchainIDInitialized events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerBlockchainIDInitializedIterator struct { - Event *ITeleporterMessengerBlockchainIDInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerBlockchainIDInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerBlockchainIDInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerBlockchainIDInitialized represents a BlockchainIDInitialized event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerBlockchainIDInitialized struct { - BlockchainID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBlockchainIDInitialized is a free log retrieval operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterBlockchainIDInitialized(opts *bind.FilterOpts, blockchainID [][32]byte) (*ITeleporterMessengerBlockchainIDInitializedIterator, error) { - - var blockchainIDRule []interface{} - for _, blockchainIDItem := range blockchainID { - blockchainIDRule = append(blockchainIDRule, blockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "BlockchainIDInitialized", blockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerBlockchainIDInitializedIterator{contract: _ITeleporterMessenger.contract, event: "BlockchainIDInitialized", logs: logs, sub: sub}, nil -} - -// WatchBlockchainIDInitialized is a free log subscription operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchBlockchainIDInitialized(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerBlockchainIDInitialized, blockchainID [][32]byte) (event.Subscription, error) { - - var blockchainIDRule []interface{} - for _, blockchainIDItem := range blockchainID { - blockchainIDRule = append(blockchainIDRule, blockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "BlockchainIDInitialized", blockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerBlockchainIDInitialized) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBlockchainIDInitialized is a log parse operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseBlockchainIDInitialized(log types.Log) (*ITeleporterMessengerBlockchainIDInitialized, error) { - event := new(ITeleporterMessengerBlockchainIDInitialized) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerMessageExecutedIterator is returned from FilterMessageExecuted and is used to iterate over the raw logs and unpacked data for MessageExecuted events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutedIterator struct { - Event *ITeleporterMessengerMessageExecuted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerMessageExecutedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerMessageExecutedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerMessageExecutedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerMessageExecuted represents a MessageExecuted event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecuted struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageExecuted is a free log retrieval operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerMessageExecutedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecuted", logs: logs, sub: sub}, nil -} - -// WatchMessageExecuted is a free log subscription operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecuted, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerMessageExecuted) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageExecuted is a log parse operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecuted(log types.Log) (*ITeleporterMessengerMessageExecuted, error) { - event := new(ITeleporterMessengerMessageExecuted) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerMessageExecutionFailedIterator is returned from FilterMessageExecutionFailed and is used to iterate over the raw logs and unpacked data for MessageExecutionFailed events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutionFailedIterator struct { - Event *ITeleporterMessengerMessageExecutionFailed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecutionFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecutionFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerMessageExecutionFailed represents a MessageExecutionFailed event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutionFailed struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Message TeleporterMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageExecutionFailed is a free log retrieval operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutionFailedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerMessageExecutionFailedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecutionFailed", logs: logs, sub: sub}, nil -} - -// WatchMessageExecutionFailed is a free log subscription operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecutionFailed, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerMessageExecutionFailed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageExecutionFailed is a log parse operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecutionFailed(log types.Log) (*ITeleporterMessengerMessageExecutionFailed, error) { - event := new(ITeleporterMessengerMessageExecutionFailed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerReceiptReceivedIterator is returned from FilterReceiptReceived and is used to iterate over the raw logs and unpacked data for ReceiptReceived events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiptReceivedIterator struct { - Event *ITeleporterMessengerReceiptReceived // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerReceiptReceivedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiptReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiptReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerReceiptReceivedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerReceiptReceivedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerReceiptReceived represents a ReceiptReceived event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiptReceived struct { - MessageID [32]byte - DestinationBlockchainID [32]byte - RelayerRewardAddress common.Address - FeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceiptReceived is a free log retrieval operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiptReceived(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (*ITeleporterMessengerReceiptReceivedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - var relayerRewardAddressRule []interface{} - for _, relayerRewardAddressItem := range relayerRewardAddress { - relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerReceiptReceivedIterator{contract: _ITeleporterMessenger.contract, event: "ReceiptReceived", logs: logs, sub: sub}, nil -} - -// WatchReceiptReceived is a free log subscription operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiptReceived(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiptReceived, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - var relayerRewardAddressRule []interface{} - for _, relayerRewardAddressItem := range relayerRewardAddress { - relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerReceiptReceived) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceiptReceived is a log parse operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiptReceived(log types.Log) (*ITeleporterMessengerReceiptReceived, error) { - event := new(ITeleporterMessengerReceiptReceived) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerReceiveCrossChainMessageIterator is returned from FilterReceiveCrossChainMessage and is used to iterate over the raw logs and unpacked data for ReceiveCrossChainMessage events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiveCrossChainMessageIterator struct { - Event *ITeleporterMessengerReceiveCrossChainMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerReceiveCrossChainMessage represents a ReceiveCrossChainMessage event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiveCrossChainMessage struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Deliverer common.Address - RewardRedeemer common.Address - Message TeleporterMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceiveCrossChainMessage is a free log retrieval operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (*ITeleporterMessengerReceiveCrossChainMessageIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - var delivererRule []interface{} - for _, delivererItem := range deliverer { - delivererRule = append(delivererRule, delivererItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerReceiveCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "ReceiveCrossChainMessage", logs: logs, sub: sub}, nil -} - -// WatchReceiveCrossChainMessage is a free log subscription operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - var delivererRule []interface{} - for _, delivererItem := range deliverer { - delivererRule = append(delivererRule, delivererItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerReceiveCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceiveCrossChainMessage is a log parse operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiveCrossChainMessage(log types.Log) (*ITeleporterMessengerReceiveCrossChainMessage, error) { - event := new(ITeleporterMessengerReceiveCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerRelayerRewardsRedeemedIterator is returned from FilterRelayerRewardsRedeemed and is used to iterate over the raw logs and unpacked data for RelayerRewardsRedeemed events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerRelayerRewardsRedeemedIterator struct { - Event *ITeleporterMessengerRelayerRewardsRedeemed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerRelayerRewardsRedeemed represents a RelayerRewardsRedeemed event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerRelayerRewardsRedeemed struct { - Redeemer common.Address - Asset common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRelayerRewardsRedeemed is a free log retrieval operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterRelayerRewardsRedeemed(opts *bind.FilterOpts, redeemer []common.Address, asset []common.Address) (*ITeleporterMessengerRelayerRewardsRedeemedIterator, error) { - - var redeemerRule []interface{} - for _, redeemerItem := range redeemer { - redeemerRule = append(redeemerRule, redeemerItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerRelayerRewardsRedeemedIterator{contract: _ITeleporterMessenger.contract, event: "RelayerRewardsRedeemed", logs: logs, sub: sub}, nil -} - -// WatchRelayerRewardsRedeemed is a free log subscription operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchRelayerRewardsRedeemed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerRelayerRewardsRedeemed, redeemer []common.Address, asset []common.Address) (event.Subscription, error) { - - var redeemerRule []interface{} - for _, redeemerItem := range redeemer { - redeemerRule = append(redeemerRule, redeemerItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRelayerRewardsRedeemed is a log parse operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseRelayerRewardsRedeemed(log types.Log) (*ITeleporterMessengerRelayerRewardsRedeemed, error) { - event := new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerSendCrossChainMessageIterator is returned from FilterSendCrossChainMessage and is used to iterate over the raw logs and unpacked data for SendCrossChainMessage events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerSendCrossChainMessageIterator struct { - Event *ITeleporterMessengerSendCrossChainMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerSendCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerSendCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerSendCrossChainMessage represents a SendCrossChainMessage event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerSendCrossChainMessage struct { - MessageID [32]byte - DestinationBlockchainID [32]byte - Message TeleporterMessage - FeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendCrossChainMessage is a free log retrieval operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterSendCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte) (*ITeleporterMessengerSendCrossChainMessageIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerSendCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "SendCrossChainMessage", logs: logs, sub: sub}, nil -} - -// WatchSendCrossChainMessage is a free log subscription operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchSendCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerSendCrossChainMessage, messageID [][32]byte, destinationBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerSendCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendCrossChainMessage is a log parse operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseSendCrossChainMessage(log types.Log) (*ITeleporterMessengerSendCrossChainMessage, error) { - event := new(ITeleporterMessengerSendCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterReceiverMetaData contains all meta data concerning the ITeleporterReceiver contract. -var ITeleporterReceiverMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ITeleporterReceiverABI is the input ABI used to generate the binding from. -// Deprecated: Use ITeleporterReceiverMetaData.ABI instead. -var ITeleporterReceiverABI = ITeleporterReceiverMetaData.ABI - -// ITeleporterReceiver is an auto generated Go binding around an Ethereum contract. -type ITeleporterReceiver struct { - ITeleporterReceiverCaller // Read-only binding to the contract - ITeleporterReceiverTransactor // Write-only binding to the contract - ITeleporterReceiverFilterer // Log filterer for contract events -} - -// ITeleporterReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. -type ITeleporterReceiverCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ITeleporterReceiverTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ITeleporterReceiverFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterReceiverSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ITeleporterReceiverSession struct { - Contract *ITeleporterReceiver // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ITeleporterReceiverCallerSession struct { - Contract *ITeleporterReceiverCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ITeleporterReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ITeleporterReceiverTransactorSession struct { - Contract *ITeleporterReceiverTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. -type ITeleporterReceiverRaw struct { - Contract *ITeleporterReceiver // Generic contract binding to access the raw methods on -} - -// ITeleporterReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ITeleporterReceiverCallerRaw struct { - Contract *ITeleporterReceiverCaller // Generic read-only contract binding to access the raw methods on -} - -// ITeleporterReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ITeleporterReceiverTransactorRaw struct { - Contract *ITeleporterReceiverTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewITeleporterReceiver creates a new instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiver(address common.Address, backend bind.ContractBackend) (*ITeleporterReceiver, error) { - contract, err := bindITeleporterReceiver(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ITeleporterReceiver{ITeleporterReceiverCaller: ITeleporterReceiverCaller{contract: contract}, ITeleporterReceiverTransactor: ITeleporterReceiverTransactor{contract: contract}, ITeleporterReceiverFilterer: ITeleporterReceiverFilterer{contract: contract}}, nil -} - -// NewITeleporterReceiverCaller creates a new read-only instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiverCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterReceiverCaller, error) { - contract, err := bindITeleporterReceiver(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ITeleporterReceiverCaller{contract: contract}, nil -} - -// NewITeleporterReceiverTransactor creates a new write-only instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterReceiverTransactor, error) { - contract, err := bindITeleporterReceiver(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ITeleporterReceiverTransactor{contract: contract}, nil -} - -// NewITeleporterReceiverFilterer creates a new log filterer instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterReceiverFilterer, error) { - contract, err := bindITeleporterReceiver(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ITeleporterReceiverFilterer{contract: contract}, nil -} - -// bindITeleporterReceiver binds a generic wrapper to an already deployed contract. -func bindITeleporterReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ITeleporterReceiverMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterReceiver *ITeleporterReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterReceiver.Contract.ITeleporterReceiverCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterReceiver *ITeleporterReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterReceiver.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.contract.Transact(opts, method, params...) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_ITeleporterReceiver *ITeleporterReceiverTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ITeleporterReceiver.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_ITeleporterReceiver *ITeleporterReceiverSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_ITeleporterReceiver *ITeleporterReceiverTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. -var IWarpMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWarpMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use IWarpMessengerMetaData.ABI instead. -var IWarpMessengerABI = IWarpMessengerMetaData.ABI - -// IWarpMessenger is an auto generated Go binding around an Ethereum contract. -type IWarpMessenger struct { - IWarpMessengerCaller // Read-only binding to the contract - IWarpMessengerTransactor // Write-only binding to the contract - IWarpMessengerFilterer // Log filterer for contract events -} - -// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWarpMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWarpMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWarpMessengerSession struct { - Contract *IWarpMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWarpMessengerCallerSession struct { - Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWarpMessengerTransactorSession struct { - Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWarpMessengerRaw struct { - Contract *IWarpMessenger // Generic contract binding to access the raw methods on -} - -// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWarpMessengerCallerRaw struct { - Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactorRaw struct { - Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { - contract, err := bindIWarpMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil -} - -// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { - contract, err := bindIWarpMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerCaller{contract: contract}, nil -} - -// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { - contract, err := bindIWarpMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerTransactor{contract: contract}, nil -} - -// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { - contract, err := bindIWarpMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWarpMessengerFilterer{contract: contract}, nil -} - -// bindIWarpMessenger binds a generic wrapper to an already deployed contract. -func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWarpMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) - - outstruct := new(struct { - WarpBlockHash WarpBlockHash - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) - - outstruct := new(struct { - Message WarpMessage - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessageIterator struct { - Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWarpMessengerSendWarpMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWarpMessengerSendWarpMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessage struct { - Sender common.Address - MessageID [32]byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil -} - -// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// MathMetaData contains all meta data concerning the Math contract. -var MathMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212203d0969b61d0d77012e6ad59a2d8b7436adebee3c994fb3ef324be3735eee46fd64736f6c63430008190033", -} - -// MathABI is the input ABI used to generate the binding from. -// Deprecated: Use MathMetaData.ABI instead. -var MathABI = MathMetaData.ABI - -// MathBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use MathMetaData.Bin instead. -var MathBin = MathMetaData.Bin - -// DeployMath deploys a new Ethereum contract, binding an instance of Math to it. -func DeployMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Math, error) { - parsed, err := MathMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MathBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil -} - -// Math is an auto generated Go binding around an Ethereum contract. -type Math struct { - MathCaller // Read-only binding to the contract - MathTransactor // Write-only binding to the contract - MathFilterer // Log filterer for contract events -} - -// MathCaller is an auto generated read-only Go binding around an Ethereum contract. -type MathCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// MathTransactor is an auto generated write-only Go binding around an Ethereum contract. -type MathTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// MathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type MathFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// MathSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type MathSession struct { - Contract *Math // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// MathCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type MathCallerSession struct { - Contract *MathCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// MathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type MathTransactorSession struct { - Contract *MathTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// MathRaw is an auto generated low-level Go binding around an Ethereum contract. -type MathRaw struct { - Contract *Math // Generic contract binding to access the raw methods on -} - -// MathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type MathCallerRaw struct { - Contract *MathCaller // Generic read-only contract binding to access the raw methods on -} - -// MathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type MathTransactorRaw struct { - Contract *MathTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewMath creates a new instance of Math, bound to a specific deployed contract. -func NewMath(address common.Address, backend bind.ContractBackend) (*Math, error) { - contract, err := bindMath(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil -} - -// NewMathCaller creates a new read-only instance of Math, bound to a specific deployed contract. -func NewMathCaller(address common.Address, caller bind.ContractCaller) (*MathCaller, error) { - contract, err := bindMath(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &MathCaller{contract: contract}, nil -} - -// NewMathTransactor creates a new write-only instance of Math, bound to a specific deployed contract. -func NewMathTransactor(address common.Address, transactor bind.ContractTransactor) (*MathTransactor, error) { - contract, err := bindMath(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &MathTransactor{contract: contract}, nil -} - -// NewMathFilterer creates a new log filterer instance of Math, bound to a specific deployed contract. -func NewMathFilterer(address common.Address, filterer bind.ContractFilterer) (*MathFilterer, error) { - contract, err := bindMath(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &MathFilterer{contract: contract}, nil -} - -// bindMath binds a generic wrapper to an already deployed contract. -func bindMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := MathMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Math *MathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Math.Contract.MathCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Math *MathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Math.Contract.MathTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Math *MathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Math.Contract.MathTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Math *MathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Math.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Math *MathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Math.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Math.Contract.contract.Transact(opts, method, params...) -} - -// ReceiptQueueMetaData contains all meta data concerning the ReceiptQueue contract. -var ReceiptQueueMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122038a742d6e870fa1fd5ffc8e616284b2f5a03e535930dff90cb0e0ee6e67eec8e64736f6c63430008190033", -} - -// ReceiptQueueABI is the input ABI used to generate the binding from. -// Deprecated: Use ReceiptQueueMetaData.ABI instead. -var ReceiptQueueABI = ReceiptQueueMetaData.ABI - -// ReceiptQueueBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ReceiptQueueMetaData.Bin instead. -var ReceiptQueueBin = ReceiptQueueMetaData.Bin - -// DeployReceiptQueue deploys a new Ethereum contract, binding an instance of ReceiptQueue to it. -func DeployReceiptQueue(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ReceiptQueue, error) { - parsed, err := ReceiptQueueMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ReceiptQueueBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ReceiptQueue{ReceiptQueueCaller: ReceiptQueueCaller{contract: contract}, ReceiptQueueTransactor: ReceiptQueueTransactor{contract: contract}, ReceiptQueueFilterer: ReceiptQueueFilterer{contract: contract}}, nil -} - -// ReceiptQueue is an auto generated Go binding around an Ethereum contract. -type ReceiptQueue struct { - ReceiptQueueCaller // Read-only binding to the contract - ReceiptQueueTransactor // Write-only binding to the contract - ReceiptQueueFilterer // Log filterer for contract events -} - -// ReceiptQueueCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReceiptQueueCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReceiptQueueTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReceiptQueueTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReceiptQueueFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReceiptQueueFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReceiptQueueSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReceiptQueueSession struct { - Contract *ReceiptQueue // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReceiptQueueCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReceiptQueueCallerSession struct { - Contract *ReceiptQueueCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReceiptQueueTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReceiptQueueTransactorSession struct { - Contract *ReceiptQueueTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReceiptQueueRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReceiptQueueRaw struct { - Contract *ReceiptQueue // Generic contract binding to access the raw methods on -} - -// ReceiptQueueCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReceiptQueueCallerRaw struct { - Contract *ReceiptQueueCaller // Generic read-only contract binding to access the raw methods on -} - -// ReceiptQueueTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReceiptQueueTransactorRaw struct { - Contract *ReceiptQueueTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReceiptQueue creates a new instance of ReceiptQueue, bound to a specific deployed contract. -func NewReceiptQueue(address common.Address, backend bind.ContractBackend) (*ReceiptQueue, error) { - contract, err := bindReceiptQueue(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReceiptQueue{ReceiptQueueCaller: ReceiptQueueCaller{contract: contract}, ReceiptQueueTransactor: ReceiptQueueTransactor{contract: contract}, ReceiptQueueFilterer: ReceiptQueueFilterer{contract: contract}}, nil -} - -// NewReceiptQueueCaller creates a new read-only instance of ReceiptQueue, bound to a specific deployed contract. -func NewReceiptQueueCaller(address common.Address, caller bind.ContractCaller) (*ReceiptQueueCaller, error) { - contract, err := bindReceiptQueue(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReceiptQueueCaller{contract: contract}, nil -} - -// NewReceiptQueueTransactor creates a new write-only instance of ReceiptQueue, bound to a specific deployed contract. -func NewReceiptQueueTransactor(address common.Address, transactor bind.ContractTransactor) (*ReceiptQueueTransactor, error) { - contract, err := bindReceiptQueue(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReceiptQueueTransactor{contract: contract}, nil -} - -// NewReceiptQueueFilterer creates a new log filterer instance of ReceiptQueue, bound to a specific deployed contract. -func NewReceiptQueueFilterer(address common.Address, filterer bind.ContractFilterer) (*ReceiptQueueFilterer, error) { - contract, err := bindReceiptQueue(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReceiptQueueFilterer{contract: contract}, nil -} - -// bindReceiptQueue binds a generic wrapper to an already deployed contract. -func bindReceiptQueue(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReceiptQueueMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReceiptQueue *ReceiptQueueRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReceiptQueue.Contract.ReceiptQueueCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReceiptQueue *ReceiptQueueRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReceiptQueue.Contract.ReceiptQueueTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReceiptQueue *ReceiptQueueRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReceiptQueue.Contract.ReceiptQueueTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReceiptQueue *ReceiptQueueCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReceiptQueue.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReceiptQueue *ReceiptQueueTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReceiptQueue.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReceiptQueue *ReceiptQueueTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReceiptQueue.Contract.contract.Transact(opts, method, params...) -} - -// ReentrancyGuardsMetaData contains all meta data concerning the ReentrancyGuards contract. -var ReentrancyGuardsMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ReentrancyGuardsABI is the input ABI used to generate the binding from. -// Deprecated: Use ReentrancyGuardsMetaData.ABI instead. -var ReentrancyGuardsABI = ReentrancyGuardsMetaData.ABI - -// ReentrancyGuards is an auto generated Go binding around an Ethereum contract. -type ReentrancyGuards struct { - ReentrancyGuardsCaller // Read-only binding to the contract - ReentrancyGuardsTransactor // Write-only binding to the contract - ReentrancyGuardsFilterer // Log filterer for contract events -} - -// ReentrancyGuardsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReentrancyGuardsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReentrancyGuardsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReentrancyGuardsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReentrancyGuardsSession struct { - Contract *ReentrancyGuards // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReentrancyGuardsCallerSession struct { - Contract *ReentrancyGuardsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReentrancyGuardsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReentrancyGuardsTransactorSession struct { - Contract *ReentrancyGuardsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReentrancyGuardsRaw struct { - Contract *ReentrancyGuards // Generic contract binding to access the raw methods on -} - -// ReentrancyGuardsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReentrancyGuardsCallerRaw struct { - Contract *ReentrancyGuardsCaller // Generic read-only contract binding to access the raw methods on -} - -// ReentrancyGuardsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReentrancyGuardsTransactorRaw struct { - Contract *ReentrancyGuardsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReentrancyGuards creates a new instance of ReentrancyGuards, bound to a specific deployed contract. -func NewReentrancyGuards(address common.Address, backend bind.ContractBackend) (*ReentrancyGuards, error) { - contract, err := bindReentrancyGuards(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReentrancyGuards{ReentrancyGuardsCaller: ReentrancyGuardsCaller{contract: contract}, ReentrancyGuardsTransactor: ReentrancyGuardsTransactor{contract: contract}, ReentrancyGuardsFilterer: ReentrancyGuardsFilterer{contract: contract}}, nil -} - -// NewReentrancyGuardsCaller creates a new read-only instance of ReentrancyGuards, bound to a specific deployed contract. -func NewReentrancyGuardsCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardsCaller, error) { - contract, err := bindReentrancyGuards(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardsCaller{contract: contract}, nil -} - -// NewReentrancyGuardsTransactor creates a new write-only instance of ReentrancyGuards, bound to a specific deployed contract. -func NewReentrancyGuardsTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardsTransactor, error) { - contract, err := bindReentrancyGuards(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardsTransactor{contract: contract}, nil -} - -// NewReentrancyGuardsFilterer creates a new log filterer instance of ReentrancyGuards, bound to a specific deployed contract. -func NewReentrancyGuardsFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardsFilterer, error) { - contract, err := bindReentrancyGuards(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReentrancyGuardsFilterer{contract: contract}, nil -} - -// bindReentrancyGuards binds a generic wrapper to an already deployed contract. -func bindReentrancyGuards(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReentrancyGuardsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuards *ReentrancyGuardsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuards.Contract.ReentrancyGuardsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuards *ReentrancyGuardsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuards.Contract.ReentrancyGuardsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuards *ReentrancyGuardsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuards.Contract.ReentrancyGuardsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuards *ReentrancyGuardsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuards.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuards *ReentrancyGuardsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuards.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuards *ReentrancyGuardsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuards.Contract.contract.Transact(opts, method, params...) -} - -// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. -var SafeERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122044774e8ae9cb3b510a51dacb03d3b3d6bee0ee00ebb240bae28efc962ab9298a64736f6c63430008190033", -} - -// SafeERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeERC20MetaData.ABI instead. -var SafeERC20ABI = SafeERC20MetaData.ABI - -// SafeERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeERC20MetaData.Bin instead. -var SafeERC20Bin = SafeERC20MetaData.Bin - -// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. -func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// SafeERC20 is an auto generated Go binding around an Ethereum contract. -type SafeERC20 struct { - SafeERC20Caller // Read-only binding to the contract - SafeERC20Transactor // Write-only binding to the contract - SafeERC20Filterer // Log filterer for contract events -} - -// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type SafeERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeERC20Session struct { - Contract *SafeERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeERC20CallerSession struct { - Contract *SafeERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeERC20TransactorSession struct { - Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type SafeERC20Raw struct { - Contract *SafeERC20 // Generic contract binding to access the raw methods on -} - -// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeERC20CallerRaw struct { - Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeERC20TransactorRaw struct { - Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { - contract, err := bindSafeERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { - contract, err := bindSafeERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeERC20Caller{contract: contract}, nil -} - -// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { - contract, err := bindSafeERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeERC20Transactor{contract: contract}, nil -} - -// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { - contract, err := bindSafeERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeERC20Filterer{contract: contract}, nil -} - -// bindSafeERC20 binds a generic wrapper to an already deployed contract. -func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transact(opts, method, params...) -} - -// SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. -var SafeERC20TransferFromMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206a67e765459c7c24f187543272046fd3214ad556da06c492ce0a4aee92d9549264736f6c63430008190033", -} - -// SafeERC20TransferFromABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeERC20TransferFromMetaData.ABI instead. -var SafeERC20TransferFromABI = SafeERC20TransferFromMetaData.ABI - -// SafeERC20TransferFromBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeERC20TransferFromMetaData.Bin instead. -var SafeERC20TransferFromBin = SafeERC20TransferFromMetaData.Bin - -// DeploySafeERC20TransferFrom deploys a new Ethereum contract, binding an instance of SafeERC20TransferFrom to it. -func DeploySafeERC20TransferFrom(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20TransferFrom, error) { - parsed, err := SafeERC20TransferFromMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20TransferFromBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil -} - -// SafeERC20TransferFrom is an auto generated Go binding around an Ethereum contract. -type SafeERC20TransferFrom struct { - SafeERC20TransferFromCaller // Read-only binding to the contract - SafeERC20TransferFromTransactor // Write-only binding to the contract - SafeERC20TransferFromFilterer // Log filterer for contract events -} - -// SafeERC20TransferFromCaller is an auto generated read-only Go binding around an Ethereum contract. -type SafeERC20TransferFromCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeERC20TransferFromTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeERC20TransferFromFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeERC20TransferFromSession struct { - Contract *SafeERC20TransferFrom // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20TransferFromCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeERC20TransferFromCallerSession struct { - Contract *SafeERC20TransferFromCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeERC20TransferFromTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeERC20TransferFromTransactorSession struct { - Contract *SafeERC20TransferFromTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20TransferFromRaw is an auto generated low-level Go binding around an Ethereum contract. -type SafeERC20TransferFromRaw struct { - Contract *SafeERC20TransferFrom // Generic contract binding to access the raw methods on -} - -// SafeERC20TransferFromCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeERC20TransferFromCallerRaw struct { - Contract *SafeERC20TransferFromCaller // Generic read-only contract binding to access the raw methods on -} - -// SafeERC20TransferFromTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeERC20TransferFromTransactorRaw struct { - Contract *SafeERC20TransferFromTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeERC20TransferFrom creates a new instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFrom(address common.Address, backend bind.ContractBackend) (*SafeERC20TransferFrom, error) { - contract, err := bindSafeERC20TransferFrom(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil -} - -// NewSafeERC20TransferFromCaller creates a new read-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromCaller(address common.Address, caller bind.ContractCaller) (*SafeERC20TransferFromCaller, error) { - contract, err := bindSafeERC20TransferFrom(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromCaller{contract: contract}, nil -} - -// NewSafeERC20TransferFromTransactor creates a new write-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20TransferFromTransactor, error) { - contract, err := bindSafeERC20TransferFrom(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromTransactor{contract: contract}, nil -} - -// NewSafeERC20TransferFromFilterer creates a new log filterer instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20TransferFromFilterer, error) { - contract, err := bindSafeERC20TransferFrom(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromFilterer{contract: contract}, nil -} - -// bindSafeERC20TransferFrom binds a generic wrapper to an already deployed contract. -func bindSafeERC20TransferFrom(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeERC20TransferFromMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20TransferFrom *SafeERC20TransferFromCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20TransferFrom.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.contract.Transact(opts, method, params...) -} - // TeleporterMessengerMetaData contains all meta data concerning the TeleporterMessenger contract. var TeleporterMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", diff --git a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go index fd07be11f..4d2e5d80c 100644 --- a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go @@ -35,2279 +35,6 @@ type ProtocolRegistryEntry struct { ProtocolAddress common.Address } -// TeleporterFeeInfo is an auto generated low-level Go binding around an user-defined struct. -type TeleporterFeeInfo struct { - FeeTokenAddress common.Address - Amount *big.Int -} - -// TeleporterMessage is an auto generated low-level Go binding around an user-defined struct. -type TeleporterMessage struct { - MessageNonce *big.Int - OriginSenderAddress common.Address - DestinationBlockchainID [32]byte - DestinationAddress common.Address - RequiredGasLimit *big.Int - AllowedRelayerAddresses []common.Address - Receipts []TeleporterMessageReceipt - Message []byte -} - -// TeleporterMessageInput is an auto generated low-level Go binding around an user-defined struct. -type TeleporterMessageInput struct { - DestinationBlockchainID [32]byte - DestinationAddress common.Address - FeeInfo TeleporterFeeInfo - RequiredGasLimit *big.Int - AllowedRelayerAddresses []common.Address - Message []byte -} - -// TeleporterMessageReceipt is an auto generated low-level Go binding around an user-defined struct. -type TeleporterMessageReceipt struct { - ReceivedMessageNonce *big.Int - RelayerRewardAddress common.Address -} - -// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. -type WarpBlockHash struct { - SourceChainID [32]byte - BlockHash [32]byte -} - -// WarpMessage is an auto generated low-level Go binding around an user-defined struct. -type WarpMessage struct { - SourceChainID [32]byte - OriginSenderAddress common.Address - Payload []byte -} - -// ITeleporterMessengerMetaData contains all meta data concerning the ITeleporterMessenger contract. -var ITeleporterMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ITeleporterMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use ITeleporterMessengerMetaData.ABI instead. -var ITeleporterMessengerABI = ITeleporterMessengerMetaData.ABI - -// ITeleporterMessenger is an auto generated Go binding around an Ethereum contract. -type ITeleporterMessenger struct { - ITeleporterMessengerCaller // Read-only binding to the contract - ITeleporterMessengerTransactor // Write-only binding to the contract - ITeleporterMessengerFilterer // Log filterer for contract events -} - -// ITeleporterMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ITeleporterMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ITeleporterMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ITeleporterMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ITeleporterMessengerSession struct { - Contract *ITeleporterMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ITeleporterMessengerCallerSession struct { - Contract *ITeleporterMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ITeleporterMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ITeleporterMessengerTransactorSession struct { - Contract *ITeleporterMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ITeleporterMessengerRaw struct { - Contract *ITeleporterMessenger // Generic contract binding to access the raw methods on -} - -// ITeleporterMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ITeleporterMessengerCallerRaw struct { - Contract *ITeleporterMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// ITeleporterMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ITeleporterMessengerTransactorRaw struct { - Contract *ITeleporterMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewITeleporterMessenger creates a new instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessenger(address common.Address, backend bind.ContractBackend) (*ITeleporterMessenger, error) { - contract, err := bindITeleporterMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ITeleporterMessenger{ITeleporterMessengerCaller: ITeleporterMessengerCaller{contract: contract}, ITeleporterMessengerTransactor: ITeleporterMessengerTransactor{contract: contract}, ITeleporterMessengerFilterer: ITeleporterMessengerFilterer{contract: contract}}, nil -} - -// NewITeleporterMessengerCaller creates a new read-only instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterMessengerCaller, error) { - contract, err := bindITeleporterMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ITeleporterMessengerCaller{contract: contract}, nil -} - -// NewITeleporterMessengerTransactor creates a new write-only instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterMessengerTransactor, error) { - contract, err := bindITeleporterMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ITeleporterMessengerTransactor{contract: contract}, nil -} - -// NewITeleporterMessengerFilterer creates a new log filterer instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterMessengerFilterer, error) { - contract, err := bindITeleporterMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ITeleporterMessengerFilterer{contract: contract}, nil -} - -// bindITeleporterMessenger binds a generic wrapper to an already deployed contract. -func bindITeleporterMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ITeleporterMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterMessenger.Contract.ITeleporterMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterMessenger *ITeleporterMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.contract.Transact(opts, method, params...) -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) CheckRelayerRewardAmount(opts *bind.CallOpts, relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "checkRelayerRewardAmount", relayer, feeTokenAddress) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetFeeInfo(opts *bind.CallOpts, messageID [32]byte) (common.Address, *big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getFeeInfo", messageID) - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { - return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { - return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetMessageHash(opts *bind.CallOpts, messageID [32]byte) ([32]byte, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getMessageHash", messageID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetNextMessageID(opts *bind.CallOpts, destinationBlockchainID [32]byte) ([32]byte, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getNextMessageID", destinationBlockchainID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", sourceBlockchainID, index) - - if err != nil { - return *new(TeleporterMessageReceipt), err - } - - out0 := *abi.ConvertType(out[0], new(TeleporterMessageReceipt)).(*TeleporterMessageReceipt) - - return out0, err - -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, sourceBlockchainID [32]byte) (*big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", sourceBlockchainID) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { - return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { - return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetRelayerRewardAddress(opts *bind.CallOpts, messageID [32]byte) (common.Address, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getRelayerRewardAddress", messageID) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { - return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { - return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) MessageReceived(opts *bind.CallOpts, messageID [32]byte) (bool, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "messageReceived", messageID) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerSession) MessageReceived(messageID [32]byte) (bool, error) { - return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) MessageReceived(messageID [32]byte) (bool, error) { - return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) AddFeeAmount(opts *bind.TransactOpts, messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "addFeeAmount", messageID, feeTokenAddress, additionalFeeAmount) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) ReceiveCrossChainMessage(opts *bind.TransactOpts, messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "receiveCrossChainMessage", messageIndex, relayerRewardAddress) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RedeemRelayerRewards(opts *bind.TransactOpts, feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "redeemRelayerRewards", feeTokenAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "retryMessageExecution", sourceBlockchainID, message) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetrySendCrossChainMessage(opts *bind.TransactOpts, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "retrySendCrossChainMessage", message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendCrossChainMessage(opts *bind.TransactOpts, messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "sendCrossChainMessage", messageInput) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// ITeleporterMessengerAddFeeAmountIterator is returned from FilterAddFeeAmount and is used to iterate over the raw logs and unpacked data for AddFeeAmount events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerAddFeeAmountIterator struct { - Event *ITeleporterMessengerAddFeeAmount // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerAddFeeAmountIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerAddFeeAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerAddFeeAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerAddFeeAmountIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerAddFeeAmountIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerAddFeeAmount represents a AddFeeAmount event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerAddFeeAmount struct { - MessageID [32]byte - UpdatedFeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddFeeAmount is a free log retrieval operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterAddFeeAmount(opts *bind.FilterOpts, messageID [][32]byte) (*ITeleporterMessengerAddFeeAmountIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "AddFeeAmount", messageIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerAddFeeAmountIterator{contract: _ITeleporterMessenger.contract, event: "AddFeeAmount", logs: logs, sub: sub}, nil -} - -// WatchAddFeeAmount is a free log subscription operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchAddFeeAmount(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerAddFeeAmount, messageID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "AddFeeAmount", messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerAddFeeAmount) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddFeeAmount is a log parse operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseAddFeeAmount(log types.Log) (*ITeleporterMessengerAddFeeAmount, error) { - event := new(ITeleporterMessengerAddFeeAmount) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerBlockchainIDInitializedIterator is returned from FilterBlockchainIDInitialized and is used to iterate over the raw logs and unpacked data for BlockchainIDInitialized events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerBlockchainIDInitializedIterator struct { - Event *ITeleporterMessengerBlockchainIDInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerBlockchainIDInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerBlockchainIDInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerBlockchainIDInitialized represents a BlockchainIDInitialized event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerBlockchainIDInitialized struct { - BlockchainID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBlockchainIDInitialized is a free log retrieval operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterBlockchainIDInitialized(opts *bind.FilterOpts, blockchainID [][32]byte) (*ITeleporterMessengerBlockchainIDInitializedIterator, error) { - - var blockchainIDRule []interface{} - for _, blockchainIDItem := range blockchainID { - blockchainIDRule = append(blockchainIDRule, blockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "BlockchainIDInitialized", blockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerBlockchainIDInitializedIterator{contract: _ITeleporterMessenger.contract, event: "BlockchainIDInitialized", logs: logs, sub: sub}, nil -} - -// WatchBlockchainIDInitialized is a free log subscription operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchBlockchainIDInitialized(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerBlockchainIDInitialized, blockchainID [][32]byte) (event.Subscription, error) { - - var blockchainIDRule []interface{} - for _, blockchainIDItem := range blockchainID { - blockchainIDRule = append(blockchainIDRule, blockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "BlockchainIDInitialized", blockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerBlockchainIDInitialized) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBlockchainIDInitialized is a log parse operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseBlockchainIDInitialized(log types.Log) (*ITeleporterMessengerBlockchainIDInitialized, error) { - event := new(ITeleporterMessengerBlockchainIDInitialized) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerMessageExecutedIterator is returned from FilterMessageExecuted and is used to iterate over the raw logs and unpacked data for MessageExecuted events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutedIterator struct { - Event *ITeleporterMessengerMessageExecuted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerMessageExecutedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerMessageExecutedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerMessageExecutedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerMessageExecuted represents a MessageExecuted event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecuted struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageExecuted is a free log retrieval operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerMessageExecutedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecuted", logs: logs, sub: sub}, nil -} - -// WatchMessageExecuted is a free log subscription operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecuted, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerMessageExecuted) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageExecuted is a log parse operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecuted(log types.Log) (*ITeleporterMessengerMessageExecuted, error) { - event := new(ITeleporterMessengerMessageExecuted) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerMessageExecutionFailedIterator is returned from FilterMessageExecutionFailed and is used to iterate over the raw logs and unpacked data for MessageExecutionFailed events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutionFailedIterator struct { - Event *ITeleporterMessengerMessageExecutionFailed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecutionFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecutionFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerMessageExecutionFailed represents a MessageExecutionFailed event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutionFailed struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Message TeleporterMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageExecutionFailed is a free log retrieval operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutionFailedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerMessageExecutionFailedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecutionFailed", logs: logs, sub: sub}, nil -} - -// WatchMessageExecutionFailed is a free log subscription operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecutionFailed, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerMessageExecutionFailed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageExecutionFailed is a log parse operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecutionFailed(log types.Log) (*ITeleporterMessengerMessageExecutionFailed, error) { - event := new(ITeleporterMessengerMessageExecutionFailed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerReceiptReceivedIterator is returned from FilterReceiptReceived and is used to iterate over the raw logs and unpacked data for ReceiptReceived events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiptReceivedIterator struct { - Event *ITeleporterMessengerReceiptReceived // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerReceiptReceivedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiptReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiptReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerReceiptReceivedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerReceiptReceivedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerReceiptReceived represents a ReceiptReceived event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiptReceived struct { - MessageID [32]byte - DestinationBlockchainID [32]byte - RelayerRewardAddress common.Address - FeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceiptReceived is a free log retrieval operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiptReceived(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (*ITeleporterMessengerReceiptReceivedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - var relayerRewardAddressRule []interface{} - for _, relayerRewardAddressItem := range relayerRewardAddress { - relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerReceiptReceivedIterator{contract: _ITeleporterMessenger.contract, event: "ReceiptReceived", logs: logs, sub: sub}, nil -} - -// WatchReceiptReceived is a free log subscription operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiptReceived(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiptReceived, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - var relayerRewardAddressRule []interface{} - for _, relayerRewardAddressItem := range relayerRewardAddress { - relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerReceiptReceived) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceiptReceived is a log parse operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiptReceived(log types.Log) (*ITeleporterMessengerReceiptReceived, error) { - event := new(ITeleporterMessengerReceiptReceived) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerReceiveCrossChainMessageIterator is returned from FilterReceiveCrossChainMessage and is used to iterate over the raw logs and unpacked data for ReceiveCrossChainMessage events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiveCrossChainMessageIterator struct { - Event *ITeleporterMessengerReceiveCrossChainMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerReceiveCrossChainMessage represents a ReceiveCrossChainMessage event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiveCrossChainMessage struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Deliverer common.Address - RewardRedeemer common.Address - Message TeleporterMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceiveCrossChainMessage is a free log retrieval operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (*ITeleporterMessengerReceiveCrossChainMessageIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - var delivererRule []interface{} - for _, delivererItem := range deliverer { - delivererRule = append(delivererRule, delivererItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerReceiveCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "ReceiveCrossChainMessage", logs: logs, sub: sub}, nil -} - -// WatchReceiveCrossChainMessage is a free log subscription operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - var delivererRule []interface{} - for _, delivererItem := range deliverer { - delivererRule = append(delivererRule, delivererItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerReceiveCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceiveCrossChainMessage is a log parse operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiveCrossChainMessage(log types.Log) (*ITeleporterMessengerReceiveCrossChainMessage, error) { - event := new(ITeleporterMessengerReceiveCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerRelayerRewardsRedeemedIterator is returned from FilterRelayerRewardsRedeemed and is used to iterate over the raw logs and unpacked data for RelayerRewardsRedeemed events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerRelayerRewardsRedeemedIterator struct { - Event *ITeleporterMessengerRelayerRewardsRedeemed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerRelayerRewardsRedeemed represents a RelayerRewardsRedeemed event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerRelayerRewardsRedeemed struct { - Redeemer common.Address - Asset common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRelayerRewardsRedeemed is a free log retrieval operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterRelayerRewardsRedeemed(opts *bind.FilterOpts, redeemer []common.Address, asset []common.Address) (*ITeleporterMessengerRelayerRewardsRedeemedIterator, error) { - - var redeemerRule []interface{} - for _, redeemerItem := range redeemer { - redeemerRule = append(redeemerRule, redeemerItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerRelayerRewardsRedeemedIterator{contract: _ITeleporterMessenger.contract, event: "RelayerRewardsRedeemed", logs: logs, sub: sub}, nil -} - -// WatchRelayerRewardsRedeemed is a free log subscription operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchRelayerRewardsRedeemed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerRelayerRewardsRedeemed, redeemer []common.Address, asset []common.Address) (event.Subscription, error) { - - var redeemerRule []interface{} - for _, redeemerItem := range redeemer { - redeemerRule = append(redeemerRule, redeemerItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRelayerRewardsRedeemed is a log parse operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseRelayerRewardsRedeemed(log types.Log) (*ITeleporterMessengerRelayerRewardsRedeemed, error) { - event := new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerSendCrossChainMessageIterator is returned from FilterSendCrossChainMessage and is used to iterate over the raw logs and unpacked data for SendCrossChainMessage events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerSendCrossChainMessageIterator struct { - Event *ITeleporterMessengerSendCrossChainMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerSendCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerSendCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerSendCrossChainMessage represents a SendCrossChainMessage event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerSendCrossChainMessage struct { - MessageID [32]byte - DestinationBlockchainID [32]byte - Message TeleporterMessage - FeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendCrossChainMessage is a free log retrieval operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterSendCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte) (*ITeleporterMessengerSendCrossChainMessageIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerSendCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "SendCrossChainMessage", logs: logs, sub: sub}, nil -} - -// WatchSendCrossChainMessage is a free log subscription operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchSendCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerSendCrossChainMessage, messageID [][32]byte, destinationBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerSendCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendCrossChainMessage is a log parse operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseSendCrossChainMessage(log types.Log) (*ITeleporterMessengerSendCrossChainMessage, error) { - event := new(ITeleporterMessengerSendCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. -var IWarpMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWarpMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use IWarpMessengerMetaData.ABI instead. -var IWarpMessengerABI = IWarpMessengerMetaData.ABI - -// IWarpMessenger is an auto generated Go binding around an Ethereum contract. -type IWarpMessenger struct { - IWarpMessengerCaller // Read-only binding to the contract - IWarpMessengerTransactor // Write-only binding to the contract - IWarpMessengerFilterer // Log filterer for contract events -} - -// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWarpMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWarpMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWarpMessengerSession struct { - Contract *IWarpMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWarpMessengerCallerSession struct { - Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWarpMessengerTransactorSession struct { - Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWarpMessengerRaw struct { - Contract *IWarpMessenger // Generic contract binding to access the raw methods on -} - -// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWarpMessengerCallerRaw struct { - Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactorRaw struct { - Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { - contract, err := bindIWarpMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil -} - -// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { - contract, err := bindIWarpMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerCaller{contract: contract}, nil -} - -// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { - contract, err := bindIWarpMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerTransactor{contract: contract}, nil -} - -// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { - contract, err := bindIWarpMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWarpMessengerFilterer{contract: contract}, nil -} - -// bindIWarpMessenger binds a generic wrapper to an already deployed contract. -func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWarpMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) - - outstruct := new(struct { - WarpBlockHash WarpBlockHash - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) - - outstruct := new(struct { - Message WarpMessage - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessageIterator struct { - Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWarpMessengerSendWarpMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWarpMessengerSendWarpMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessage struct { - Sender common.Address - MessageID [32]byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil -} - -// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. var TeleporterRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", diff --git a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go index 7c9727812..1b7e3b5fc 100644 --- a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go +++ b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go @@ -29,8002 +29,6 @@ var ( _ = abi.ConvertType ) -// ProtocolRegistryEntry is an auto generated low-level Go binding around an user-defined struct. -type ProtocolRegistryEntry struct { - Version *big.Int - ProtocolAddress common.Address -} - -// TeleporterFeeInfo is an auto generated low-level Go binding around an user-defined struct. -type TeleporterFeeInfo struct { - FeeTokenAddress common.Address - Amount *big.Int -} - -// TeleporterMessage is an auto generated low-level Go binding around an user-defined struct. -type TeleporterMessage struct { - MessageNonce *big.Int - OriginSenderAddress common.Address - DestinationBlockchainID [32]byte - DestinationAddress common.Address - RequiredGasLimit *big.Int - AllowedRelayerAddresses []common.Address - Receipts []TeleporterMessageReceipt - Message []byte -} - -// TeleporterMessageInput is an auto generated low-level Go binding around an user-defined struct. -type TeleporterMessageInput struct { - DestinationBlockchainID [32]byte - DestinationAddress common.Address - FeeInfo TeleporterFeeInfo - RequiredGasLimit *big.Int - AllowedRelayerAddresses []common.Address - Message []byte -} - -// TeleporterMessageReceipt is an auto generated low-level Go binding around an user-defined struct. -type TeleporterMessageReceipt struct { - ReceivedMessageNonce *big.Int - RelayerRewardAddress common.Address -} - -// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. -type WarpBlockHash struct { - SourceChainID [32]byte - BlockHash [32]byte -} - -// WarpMessage is an auto generated low-level Go binding around an user-defined struct. -type WarpMessage struct { - SourceChainID [32]byte - OriginSenderAddress common.Address - Payload []byte -} - -// AddressMetaData contains all meta data concerning the Address contract. -var AddressMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", -} - -// AddressABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressMetaData.ABI instead. -var AddressABI = AddressMetaData.ABI - -// AddressBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressMetaData.Bin instead. -var AddressBin = AddressMetaData.Bin - -// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. -func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// Address is an auto generated Go binding around an Ethereum contract. -type Address struct { - AddressCaller // Read-only binding to the contract - AddressTransactor // Write-only binding to the contract - AddressFilterer // Log filterer for contract events -} - -// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type AddressSession struct { - Contract *Address // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type AddressCallerSession struct { - Contract *AddressCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type AddressTransactorSession struct { - Contract *AddressTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressRaw struct { - Contract *Address // Generic contract binding to access the raw methods on -} - -// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressCallerRaw struct { - Contract *AddressCaller // Generic read-only contract binding to access the raw methods on -} - -// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressTransactorRaw struct { - Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewAddress creates a new instance of Address, bound to a specific deployed contract. -func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { - contract, err := bindAddress(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. -func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { - contract, err := bindAddress(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &AddressCaller{contract: contract}, nil -} - -// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. -func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { - contract, err := bindAddress(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &AddressTransactor{contract: contract}, nil -} - -// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. -func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { - contract, err := bindAddress(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &AddressFilterer{contract: contract}, nil -} - -// bindAddress binds a generic wrapper to an already deployed contract. -func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.contract.Transact(opts, method, params...) -} - -// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. -var ContextUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// ContextUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextUpgradeableMetaData.ABI instead. -var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI - -// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. -type ContextUpgradeable struct { - ContextUpgradeableCaller // Read-only binding to the contract - ContextUpgradeableTransactor // Write-only binding to the contract - ContextUpgradeableFilterer // Log filterer for contract events -} - -// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextUpgradeableSession struct { - Contract *ContextUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextUpgradeableCallerSession struct { - Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextUpgradeableTransactorSession struct { - Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextUpgradeableRaw struct { - Contract *ContextUpgradeable // Generic contract binding to access the raw methods on -} - -// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextUpgradeableCallerRaw struct { - Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactorRaw struct { - Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { - contract, err := bindContextUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil -} - -// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { - contract, err := bindContextUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContextUpgradeableCaller{contract: contract}, nil -} - -// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { - contract, err := bindContextUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextUpgradeableTransactor{contract: contract}, nil -} - -// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { - contract, err := bindContextUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextUpgradeableFilterer{contract: contract}, nil -} - -// bindContextUpgradeable binds a generic wrapper to an already deployed contract. -func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. -type ContextUpgradeableInitializedIterator struct { - Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ContextUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ContextUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContextUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. -type ContextUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { - - logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20MetaData contains all meta data concerning the IERC20 contract. -var IERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetaData.ABI instead. -var IERC20ABI = IERC20MetaData.ABI - -// IERC20 is an auto generated Go binding around an Ethereum contract. -type IERC20 struct { - IERC20Caller // Read-only binding to the contract - IERC20Transactor // Write-only binding to the contract - IERC20Filterer // Log filterer for contract events -} - -// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20Session struct { - Contract *IERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CallerSession struct { - Contract *IERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TransactorSession struct { - Contract *IERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20Raw struct { - Contract *IERC20 // Generic contract binding to access the raw methods on -} - -// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CallerRaw struct { - Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TransactorRaw struct { - Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. -func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { - contract, err := bindIERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil -} - -// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { - contract, err := bindIERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20Caller{contract: contract}, nil -} - -// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { - contract, err := bindIERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20Transactor{contract: contract}, nil -} - -// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. -func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { - contract, err := bindIERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20Filterer{contract: contract}, nil -} - -// bindIERC20 binds a generic wrapper to an already deployed contract. -func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. -type IERC20ApprovalIterator struct { - Event *IERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Approval represents a Approval event raised by the IERC20 contract. -type IERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. -type IERC20TransferIterator struct { - Event *IERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Transfer represents a Transfer event raised by the IERC20 contract. -type IERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20PermitMetaData contains all meta data concerning the IERC20Permit contract. -var IERC20PermitMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20PermitABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20PermitMetaData.ABI instead. -var IERC20PermitABI = IERC20PermitMetaData.ABI - -// IERC20Permit is an auto generated Go binding around an Ethereum contract. -type IERC20Permit struct { - IERC20PermitCaller // Read-only binding to the contract - IERC20PermitTransactor // Write-only binding to the contract - IERC20PermitFilterer // Log filterer for contract events -} - -// IERC20PermitCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20PermitCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20PermitTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20PermitFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20PermitSession struct { - Contract *IERC20Permit // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20PermitCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20PermitCallerSession struct { - Contract *IERC20PermitCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20PermitTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20PermitTransactorSession struct { - Contract *IERC20PermitTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20PermitRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20PermitRaw struct { - Contract *IERC20Permit // Generic contract binding to access the raw methods on -} - -// IERC20PermitCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20PermitCallerRaw struct { - Contract *IERC20PermitCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20PermitTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20PermitTransactorRaw struct { - Contract *IERC20PermitTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Permit creates a new instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20Permit(address common.Address, backend bind.ContractBackend) (*IERC20Permit, error) { - contract, err := bindIERC20Permit(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Permit{IERC20PermitCaller: IERC20PermitCaller{contract: contract}, IERC20PermitTransactor: IERC20PermitTransactor{contract: contract}, IERC20PermitFilterer: IERC20PermitFilterer{contract: contract}}, nil -} - -// NewIERC20PermitCaller creates a new read-only instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitCaller(address common.Address, caller bind.ContractCaller) (*IERC20PermitCaller, error) { - contract, err := bindIERC20Permit(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20PermitCaller{contract: contract}, nil -} - -// NewIERC20PermitTransactor creates a new write-only instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20PermitTransactor, error) { - contract, err := bindIERC20Permit(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20PermitTransactor{contract: contract}, nil -} - -// NewIERC20PermitFilterer creates a new log filterer instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20PermitFilterer, error) { - contract, err := bindIERC20Permit(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20PermitFilterer{contract: contract}, nil -} - -// bindIERC20Permit binds a generic wrapper to an already deployed contract. -func bindIERC20Permit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20PermitMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Permit *IERC20PermitRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Permit.Contract.IERC20PermitCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Permit *IERC20PermitRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Permit *IERC20PermitRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Permit *IERC20PermitCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Permit.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Permit *IERC20PermitTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Permit.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Permit *IERC20PermitTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Permit.Contract.contract.Transact(opts, method, params...) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IERC20Permit.contract.Call(opts, &out, "DOMAIN_SEPARATOR") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitCallerSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Permit.contract.Call(opts, &out, "nonces", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitSession) Nonces(owner common.Address) (*big.Int, error) { - return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitCallerSession) Nonces(owner common.Address) (*big.Int, error) { - return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// ITeleporterMessengerMetaData contains all meta data concerning the ITeleporterMessenger contract. -var ITeleporterMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ITeleporterMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use ITeleporterMessengerMetaData.ABI instead. -var ITeleporterMessengerABI = ITeleporterMessengerMetaData.ABI - -// ITeleporterMessenger is an auto generated Go binding around an Ethereum contract. -type ITeleporterMessenger struct { - ITeleporterMessengerCaller // Read-only binding to the contract - ITeleporterMessengerTransactor // Write-only binding to the contract - ITeleporterMessengerFilterer // Log filterer for contract events -} - -// ITeleporterMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ITeleporterMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ITeleporterMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ITeleporterMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ITeleporterMessengerSession struct { - Contract *ITeleporterMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ITeleporterMessengerCallerSession struct { - Contract *ITeleporterMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ITeleporterMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ITeleporterMessengerTransactorSession struct { - Contract *ITeleporterMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ITeleporterMessengerRaw struct { - Contract *ITeleporterMessenger // Generic contract binding to access the raw methods on -} - -// ITeleporterMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ITeleporterMessengerCallerRaw struct { - Contract *ITeleporterMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// ITeleporterMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ITeleporterMessengerTransactorRaw struct { - Contract *ITeleporterMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewITeleporterMessenger creates a new instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessenger(address common.Address, backend bind.ContractBackend) (*ITeleporterMessenger, error) { - contract, err := bindITeleporterMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ITeleporterMessenger{ITeleporterMessengerCaller: ITeleporterMessengerCaller{contract: contract}, ITeleporterMessengerTransactor: ITeleporterMessengerTransactor{contract: contract}, ITeleporterMessengerFilterer: ITeleporterMessengerFilterer{contract: contract}}, nil -} - -// NewITeleporterMessengerCaller creates a new read-only instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterMessengerCaller, error) { - contract, err := bindITeleporterMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ITeleporterMessengerCaller{contract: contract}, nil -} - -// NewITeleporterMessengerTransactor creates a new write-only instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterMessengerTransactor, error) { - contract, err := bindITeleporterMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ITeleporterMessengerTransactor{contract: contract}, nil -} - -// NewITeleporterMessengerFilterer creates a new log filterer instance of ITeleporterMessenger, bound to a specific deployed contract. -func NewITeleporterMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterMessengerFilterer, error) { - contract, err := bindITeleporterMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ITeleporterMessengerFilterer{contract: contract}, nil -} - -// bindITeleporterMessenger binds a generic wrapper to an already deployed contract. -func bindITeleporterMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ITeleporterMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterMessenger.Contract.ITeleporterMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterMessenger *ITeleporterMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ITeleporterMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterMessenger *ITeleporterMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterMessenger *ITeleporterMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.contract.Transact(opts, method, params...) -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) CheckRelayerRewardAmount(opts *bind.CallOpts, relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "checkRelayerRewardAmount", relayer, feeTokenAddress) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) -} - -// CheckRelayerRewardAmount is a free data retrieval call binding the contract method 0xc473eef8. -// -// Solidity: function checkRelayerRewardAmount(address relayer, address feeTokenAddress) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) CheckRelayerRewardAmount(relayer common.Address, feeTokenAddress common.Address) (*big.Int, error) { - return _ITeleporterMessenger.Contract.CheckRelayerRewardAmount(&_ITeleporterMessenger.CallOpts, relayer, feeTokenAddress) -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetFeeInfo(opts *bind.CallOpts, messageID [32]byte) (common.Address, *big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getFeeInfo", messageID) - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { - return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetFeeInfo is a free data retrieval call binding the contract method 0xe69d606a. -// -// Solidity: function getFeeInfo(bytes32 messageID) view returns(address, uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetFeeInfo(messageID [32]byte) (common.Address, *big.Int, error) { - return _ITeleporterMessenger.Contract.GetFeeInfo(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetMessageHash(opts *bind.CallOpts, messageID [32]byte) ([32]byte, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getMessageHash", messageID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetMessageHash is a free data retrieval call binding the contract method 0x399b77da. -// -// Solidity: function getMessageHash(bytes32 messageID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetMessageHash(messageID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetMessageHash(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetNextMessageID(opts *bind.CallOpts, destinationBlockchainID [32]byte) ([32]byte, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getNextMessageID", destinationBlockchainID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) -} - -// GetNextMessageID is a free data retrieval call binding the contract method 0xdf20e8bc. -// -// Solidity: function getNextMessageID(bytes32 destinationBlockchainID) view returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetNextMessageID(destinationBlockchainID [32]byte) ([32]byte, error) { - return _ITeleporterMessenger.Contract.GetNextMessageID(&_ITeleporterMessenger.CallOpts, destinationBlockchainID) -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", sourceBlockchainID, index) - - if err != nil { - return *new(TeleporterMessageReceipt), err - } - - out0 := *abi.ConvertType(out[0], new(TeleporterMessageReceipt)).(*TeleporterMessageReceipt) - - return out0, err - -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) -} - -// GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. -// -// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _ITeleporterMessenger.Contract.GetReceiptAtIndex(&_ITeleporterMessenger.CallOpts, sourceBlockchainID, index) -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, sourceBlockchainID [32]byte) (*big.Int, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", sourceBlockchainID) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { - return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) -} - -// GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. -// -// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { - return _ITeleporterMessenger.Contract.GetReceiptQueueSize(&_ITeleporterMessenger.CallOpts, sourceBlockchainID) -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) GetRelayerRewardAddress(opts *bind.CallOpts, messageID [32]byte) (common.Address, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "getRelayerRewardAddress", messageID) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { - return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) -} - -// GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. -// -// Solidity: function getRelayerRewardAddress(bytes32 messageID) view returns(address) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) GetRelayerRewardAddress(messageID [32]byte) (common.Address, error) { - return _ITeleporterMessenger.Contract.GetRelayerRewardAddress(&_ITeleporterMessenger.CallOpts, messageID) -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerCaller) MessageReceived(opts *bind.CallOpts, messageID [32]byte) (bool, error) { - var out []interface{} - err := _ITeleporterMessenger.contract.Call(opts, &out, "messageReceived", messageID) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerSession) MessageReceived(messageID [32]byte) (bool, error) { - return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) -} - -// MessageReceived is a free data retrieval call binding the contract method 0xebc3b1ba. -// -// Solidity: function messageReceived(bytes32 messageID) view returns(bool) -func (_ITeleporterMessenger *ITeleporterMessengerCallerSession) MessageReceived(messageID [32]byte) (bool, error) { - return _ITeleporterMessenger.Contract.MessageReceived(&_ITeleporterMessenger.CallOpts, messageID) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) AddFeeAmount(opts *bind.TransactOpts, messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "addFeeAmount", messageID, feeTokenAddress, additionalFeeAmount) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) -} - -// AddFeeAmount is a paid mutator transaction binding the contract method 0x8ac0fd04. -// -// Solidity: function addFeeAmount(bytes32 messageID, address feeTokenAddress, uint256 additionalFeeAmount) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) AddFeeAmount(messageID [32]byte, feeTokenAddress common.Address, additionalFeeAmount *big.Int) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.AddFeeAmount(&_ITeleporterMessenger.TransactOpts, messageID, feeTokenAddress, additionalFeeAmount) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) ReceiveCrossChainMessage(opts *bind.TransactOpts, messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "receiveCrossChainMessage", messageIndex, relayerRewardAddress) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) -} - -// ReceiveCrossChainMessage is a paid mutator transaction binding the contract method 0xccb5f809. -// -// Solidity: function receiveCrossChainMessage(uint32 messageIndex, address relayerRewardAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) ReceiveCrossChainMessage(messageIndex uint32, relayerRewardAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.ReceiveCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageIndex, relayerRewardAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RedeemRelayerRewards(opts *bind.TransactOpts, feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "redeemRelayerRewards", feeTokenAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) -} - -// RedeemRelayerRewards is a paid mutator transaction binding the contract method 0x22296c3a. -// -// Solidity: function redeemRelayerRewards(address feeTokenAddress) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RedeemRelayerRewards(feeTokenAddress common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RedeemRelayerRewards(&_ITeleporterMessenger.TransactOpts, feeTokenAddress) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "retryMessageExecution", sourceBlockchainID, message) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) -} - -// RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. -// -// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetryMessageExecution(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) RetrySendCrossChainMessage(opts *bind.TransactOpts, message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "retrySendCrossChainMessage", message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) -} - -// RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. -// -// Solidity: function retrySendCrossChainMessage((uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) RetrySendCrossChainMessage(message TeleporterMessage) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.RetrySendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, message) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendCrossChainMessage(opts *bind.TransactOpts, messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "sendCrossChainMessage", messageInput) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) -} - -// SendCrossChainMessage is a paid mutator transaction binding the contract method 0x62448850. -// -// Solidity: function sendCrossChainMessage((bytes32,address,(address,uint256),uint256,address[],bytes) messageInput) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendCrossChainMessage(messageInput TeleporterMessageInput) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendCrossChainMessage(&_ITeleporterMessenger.TransactOpts, messageInput) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. -// -// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_ITeleporterMessenger *ITeleporterMessengerTransactorSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _ITeleporterMessenger.Contract.SendSpecifiedReceipts(&_ITeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) -} - -// ITeleporterMessengerAddFeeAmountIterator is returned from FilterAddFeeAmount and is used to iterate over the raw logs and unpacked data for AddFeeAmount events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerAddFeeAmountIterator struct { - Event *ITeleporterMessengerAddFeeAmount // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerAddFeeAmountIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerAddFeeAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerAddFeeAmount) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerAddFeeAmountIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerAddFeeAmountIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerAddFeeAmount represents a AddFeeAmount event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerAddFeeAmount struct { - MessageID [32]byte - UpdatedFeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddFeeAmount is a free log retrieval operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterAddFeeAmount(opts *bind.FilterOpts, messageID [][32]byte) (*ITeleporterMessengerAddFeeAmountIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "AddFeeAmount", messageIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerAddFeeAmountIterator{contract: _ITeleporterMessenger.contract, event: "AddFeeAmount", logs: logs, sub: sub}, nil -} - -// WatchAddFeeAmount is a free log subscription operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchAddFeeAmount(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerAddFeeAmount, messageID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "AddFeeAmount", messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerAddFeeAmount) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddFeeAmount is a log parse operation binding the contract event 0xc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e1. -// -// Solidity: event AddFeeAmount(bytes32 indexed messageID, (address,uint256) updatedFeeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseAddFeeAmount(log types.Log) (*ITeleporterMessengerAddFeeAmount, error) { - event := new(ITeleporterMessengerAddFeeAmount) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "AddFeeAmount", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerBlockchainIDInitializedIterator is returned from FilterBlockchainIDInitialized and is used to iterate over the raw logs and unpacked data for BlockchainIDInitialized events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerBlockchainIDInitializedIterator struct { - Event *ITeleporterMessengerBlockchainIDInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerBlockchainIDInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerBlockchainIDInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerBlockchainIDInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerBlockchainIDInitialized represents a BlockchainIDInitialized event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerBlockchainIDInitialized struct { - BlockchainID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBlockchainIDInitialized is a free log retrieval operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterBlockchainIDInitialized(opts *bind.FilterOpts, blockchainID [][32]byte) (*ITeleporterMessengerBlockchainIDInitializedIterator, error) { - - var blockchainIDRule []interface{} - for _, blockchainIDItem := range blockchainID { - blockchainIDRule = append(blockchainIDRule, blockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "BlockchainIDInitialized", blockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerBlockchainIDInitializedIterator{contract: _ITeleporterMessenger.contract, event: "BlockchainIDInitialized", logs: logs, sub: sub}, nil -} - -// WatchBlockchainIDInitialized is a free log subscription operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchBlockchainIDInitialized(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerBlockchainIDInitialized, blockchainID [][32]byte) (event.Subscription, error) { - - var blockchainIDRule []interface{} - for _, blockchainIDItem := range blockchainID { - blockchainIDRule = append(blockchainIDRule, blockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "BlockchainIDInitialized", blockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerBlockchainIDInitialized) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBlockchainIDInitialized is a log parse operation binding the contract event 0x1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104. -// -// Solidity: event BlockchainIDInitialized(bytes32 indexed blockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseBlockchainIDInitialized(log types.Log) (*ITeleporterMessengerBlockchainIDInitialized, error) { - event := new(ITeleporterMessengerBlockchainIDInitialized) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "BlockchainIDInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerMessageExecutedIterator is returned from FilterMessageExecuted and is used to iterate over the raw logs and unpacked data for MessageExecuted events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutedIterator struct { - Event *ITeleporterMessengerMessageExecuted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerMessageExecutedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerMessageExecutedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerMessageExecutedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerMessageExecuted represents a MessageExecuted event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecuted struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageExecuted is a free log retrieval operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerMessageExecutedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecuted", logs: logs, sub: sub}, nil -} - -// WatchMessageExecuted is a free log subscription operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecuted, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerMessageExecuted) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageExecuted is a log parse operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. -// -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecuted(log types.Log) (*ITeleporterMessengerMessageExecuted, error) { - event := new(ITeleporterMessengerMessageExecuted) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerMessageExecutionFailedIterator is returned from FilterMessageExecutionFailed and is used to iterate over the raw logs and unpacked data for MessageExecutionFailed events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutionFailedIterator struct { - Event *ITeleporterMessengerMessageExecutionFailed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecutionFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerMessageExecutionFailed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerMessageExecutionFailedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerMessageExecutionFailed represents a MessageExecutionFailed event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerMessageExecutionFailed struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Message TeleporterMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageExecutionFailed is a free log retrieval operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*ITeleporterMessengerMessageExecutionFailedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerMessageExecutionFailedIterator{contract: _ITeleporterMessenger.contract, event: "MessageExecutionFailed", logs: logs, sub: sub}, nil -} - -// WatchMessageExecutionFailed is a free log subscription operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerMessageExecutionFailed, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerMessageExecutionFailed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageExecutionFailed is a log parse operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. -// -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseMessageExecutionFailed(log types.Log) (*ITeleporterMessengerMessageExecutionFailed, error) { - event := new(ITeleporterMessengerMessageExecutionFailed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerReceiptReceivedIterator is returned from FilterReceiptReceived and is used to iterate over the raw logs and unpacked data for ReceiptReceived events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiptReceivedIterator struct { - Event *ITeleporterMessengerReceiptReceived // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerReceiptReceivedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiptReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiptReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerReceiptReceivedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerReceiptReceivedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerReceiptReceived represents a ReceiptReceived event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiptReceived struct { - MessageID [32]byte - DestinationBlockchainID [32]byte - RelayerRewardAddress common.Address - FeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceiptReceived is a free log retrieval operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiptReceived(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (*ITeleporterMessengerReceiptReceivedIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - var relayerRewardAddressRule []interface{} - for _, relayerRewardAddressItem := range relayerRewardAddress { - relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerReceiptReceivedIterator{contract: _ITeleporterMessenger.contract, event: "ReceiptReceived", logs: logs, sub: sub}, nil -} - -// WatchReceiptReceived is a free log subscription operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiptReceived(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiptReceived, messageID [][32]byte, destinationBlockchainID [][32]byte, relayerRewardAddress []common.Address) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - var relayerRewardAddressRule []interface{} - for _, relayerRewardAddressItem := range relayerRewardAddress { - relayerRewardAddressRule = append(relayerRewardAddressRule, relayerRewardAddressItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiptReceived", messageIDRule, destinationBlockchainIDRule, relayerRewardAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerReceiptReceived) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceiptReceived is a log parse operation binding the contract event 0xd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf57. -// -// Solidity: event ReceiptReceived(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, address indexed relayerRewardAddress, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiptReceived(log types.Log) (*ITeleporterMessengerReceiptReceived, error) { - event := new(ITeleporterMessengerReceiptReceived) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiptReceived", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerReceiveCrossChainMessageIterator is returned from FilterReceiveCrossChainMessage and is used to iterate over the raw logs and unpacked data for ReceiveCrossChainMessage events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiveCrossChainMessageIterator struct { - Event *ITeleporterMessengerReceiveCrossChainMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerReceiveCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerReceiveCrossChainMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerReceiveCrossChainMessage represents a ReceiveCrossChainMessage event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerReceiveCrossChainMessage struct { - MessageID [32]byte - SourceBlockchainID [32]byte - Deliverer common.Address - RewardRedeemer common.Address - Message TeleporterMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceiveCrossChainMessage is a free log retrieval operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (*ITeleporterMessengerReceiveCrossChainMessageIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - var delivererRule []interface{} - for _, delivererItem := range deliverer { - delivererRule = append(delivererRule, delivererItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerReceiveCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "ReceiveCrossChainMessage", logs: logs, sub: sub}, nil -} - -// WatchReceiveCrossChainMessage is a free log subscription operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var sourceBlockchainIDRule []interface{} - for _, sourceBlockchainIDItem := range sourceBlockchainID { - sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) - } - var delivererRule []interface{} - for _, delivererItem := range deliverer { - delivererRule = append(delivererRule, delivererItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerReceiveCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceiveCrossChainMessage is a log parse operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. -// -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseReceiveCrossChainMessage(log types.Log) (*ITeleporterMessengerReceiveCrossChainMessage, error) { - event := new(ITeleporterMessengerReceiveCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerRelayerRewardsRedeemedIterator is returned from FilterRelayerRewardsRedeemed and is used to iterate over the raw logs and unpacked data for RelayerRewardsRedeemed events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerRelayerRewardsRedeemedIterator struct { - Event *ITeleporterMessengerRelayerRewardsRedeemed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerRelayerRewardsRedeemedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerRelayerRewardsRedeemed represents a RelayerRewardsRedeemed event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerRelayerRewardsRedeemed struct { - Redeemer common.Address - Asset common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRelayerRewardsRedeemed is a free log retrieval operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterRelayerRewardsRedeemed(opts *bind.FilterOpts, redeemer []common.Address, asset []common.Address) (*ITeleporterMessengerRelayerRewardsRedeemedIterator, error) { - - var redeemerRule []interface{} - for _, redeemerItem := range redeemer { - redeemerRule = append(redeemerRule, redeemerItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerRelayerRewardsRedeemedIterator{contract: _ITeleporterMessenger.contract, event: "RelayerRewardsRedeemed", logs: logs, sub: sub}, nil -} - -// WatchRelayerRewardsRedeemed is a free log subscription operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchRelayerRewardsRedeemed(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerRelayerRewardsRedeemed, redeemer []common.Address, asset []common.Address) (event.Subscription, error) { - - var redeemerRule []interface{} - for _, redeemerItem := range redeemer { - redeemerRule = append(redeemerRule, redeemerItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "RelayerRewardsRedeemed", redeemerRule, assetRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRelayerRewardsRedeemed is a log parse operation binding the contract event 0x3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88. -// -// Solidity: event RelayerRewardsRedeemed(address indexed redeemer, address indexed asset, uint256 amount) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseRelayerRewardsRedeemed(log types.Log) (*ITeleporterMessengerRelayerRewardsRedeemed, error) { - event := new(ITeleporterMessengerRelayerRewardsRedeemed) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "RelayerRewardsRedeemed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterMessengerSendCrossChainMessageIterator is returned from FilterSendCrossChainMessage and is used to iterate over the raw logs and unpacked data for SendCrossChainMessage events raised by the ITeleporterMessenger contract. -type ITeleporterMessengerSendCrossChainMessageIterator struct { - Event *ITeleporterMessengerSendCrossChainMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerSendCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ITeleporterMessengerSendCrossChainMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ITeleporterMessengerSendCrossChainMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ITeleporterMessengerSendCrossChainMessage represents a SendCrossChainMessage event raised by the ITeleporterMessenger contract. -type ITeleporterMessengerSendCrossChainMessage struct { - MessageID [32]byte - DestinationBlockchainID [32]byte - Message TeleporterMessage - FeeInfo TeleporterFeeInfo - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendCrossChainMessage is a free log retrieval operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) FilterSendCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, destinationBlockchainID [][32]byte) (*ITeleporterMessengerSendCrossChainMessageIterator, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.FilterLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) - if err != nil { - return nil, err - } - return &ITeleporterMessengerSendCrossChainMessageIterator{contract: _ITeleporterMessenger.contract, event: "SendCrossChainMessage", logs: logs, sub: sub}, nil -} - -// WatchSendCrossChainMessage is a free log subscription operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) WatchSendCrossChainMessage(opts *bind.WatchOpts, sink chan<- *ITeleporterMessengerSendCrossChainMessage, messageID [][32]byte, destinationBlockchainID [][32]byte) (event.Subscription, error) { - - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - var destinationBlockchainIDRule []interface{} - for _, destinationBlockchainIDItem := range destinationBlockchainID { - destinationBlockchainIDRule = append(destinationBlockchainIDRule, destinationBlockchainIDItem) - } - - logs, sub, err := _ITeleporterMessenger.contract.WatchLogs(opts, "SendCrossChainMessage", messageIDRule, destinationBlockchainIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ITeleporterMessengerSendCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendCrossChainMessage is a log parse operation binding the contract event 0x2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8. -// -// Solidity: event SendCrossChainMessage(bytes32 indexed messageID, bytes32 indexed destinationBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message, (address,uint256) feeInfo) -func (_ITeleporterMessenger *ITeleporterMessengerFilterer) ParseSendCrossChainMessage(log types.Log) (*ITeleporterMessengerSendCrossChainMessage, error) { - event := new(ITeleporterMessengerSendCrossChainMessage) - if err := _ITeleporterMessenger.contract.UnpackLog(event, "SendCrossChainMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ITeleporterReceiverMetaData contains all meta data concerning the ITeleporterReceiver contract. -var ITeleporterReceiverMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ITeleporterReceiverABI is the input ABI used to generate the binding from. -// Deprecated: Use ITeleporterReceiverMetaData.ABI instead. -var ITeleporterReceiverABI = ITeleporterReceiverMetaData.ABI - -// ITeleporterReceiver is an auto generated Go binding around an Ethereum contract. -type ITeleporterReceiver struct { - ITeleporterReceiverCaller // Read-only binding to the contract - ITeleporterReceiverTransactor // Write-only binding to the contract - ITeleporterReceiverFilterer // Log filterer for contract events -} - -// ITeleporterReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. -type ITeleporterReceiverCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ITeleporterReceiverTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ITeleporterReceiverFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ITeleporterReceiverSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ITeleporterReceiverSession struct { - Contract *ITeleporterReceiver // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ITeleporterReceiverCallerSession struct { - Contract *ITeleporterReceiverCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ITeleporterReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ITeleporterReceiverTransactorSession struct { - Contract *ITeleporterReceiverTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ITeleporterReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. -type ITeleporterReceiverRaw struct { - Contract *ITeleporterReceiver // Generic contract binding to access the raw methods on -} - -// ITeleporterReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ITeleporterReceiverCallerRaw struct { - Contract *ITeleporterReceiverCaller // Generic read-only contract binding to access the raw methods on -} - -// ITeleporterReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ITeleporterReceiverTransactorRaw struct { - Contract *ITeleporterReceiverTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewITeleporterReceiver creates a new instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiver(address common.Address, backend bind.ContractBackend) (*ITeleporterReceiver, error) { - contract, err := bindITeleporterReceiver(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ITeleporterReceiver{ITeleporterReceiverCaller: ITeleporterReceiverCaller{contract: contract}, ITeleporterReceiverTransactor: ITeleporterReceiverTransactor{contract: contract}, ITeleporterReceiverFilterer: ITeleporterReceiverFilterer{contract: contract}}, nil -} - -// NewITeleporterReceiverCaller creates a new read-only instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiverCaller(address common.Address, caller bind.ContractCaller) (*ITeleporterReceiverCaller, error) { - contract, err := bindITeleporterReceiver(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ITeleporterReceiverCaller{contract: contract}, nil -} - -// NewITeleporterReceiverTransactor creates a new write-only instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ITeleporterReceiverTransactor, error) { - contract, err := bindITeleporterReceiver(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ITeleporterReceiverTransactor{contract: contract}, nil -} - -// NewITeleporterReceiverFilterer creates a new log filterer instance of ITeleporterReceiver, bound to a specific deployed contract. -func NewITeleporterReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ITeleporterReceiverFilterer, error) { - contract, err := bindITeleporterReceiver(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ITeleporterReceiverFilterer{contract: contract}, nil -} - -// bindITeleporterReceiver binds a generic wrapper to an already deployed contract. -func bindITeleporterReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ITeleporterReceiverMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterReceiver *ITeleporterReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterReceiver.Contract.ITeleporterReceiverCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterReceiver *ITeleporterReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ITeleporterReceiverTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ITeleporterReceiver *ITeleporterReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ITeleporterReceiver.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ITeleporterReceiver *ITeleporterReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.contract.Transact(opts, method, params...) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_ITeleporterReceiver *ITeleporterReceiverTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ITeleporterReceiver.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_ITeleporterReceiver *ITeleporterReceiverSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_ITeleporterReceiver *ITeleporterReceiverTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ITeleporterReceiver.Contract.ReceiveTeleporterMessage(&_ITeleporterReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. -var IWarpMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWarpMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use IWarpMessengerMetaData.ABI instead. -var IWarpMessengerABI = IWarpMessengerMetaData.ABI - -// IWarpMessenger is an auto generated Go binding around an Ethereum contract. -type IWarpMessenger struct { - IWarpMessengerCaller // Read-only binding to the contract - IWarpMessengerTransactor // Write-only binding to the contract - IWarpMessengerFilterer // Log filterer for contract events -} - -// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWarpMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWarpMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWarpMessengerSession struct { - Contract *IWarpMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWarpMessengerCallerSession struct { - Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWarpMessengerTransactorSession struct { - Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWarpMessengerRaw struct { - Contract *IWarpMessenger // Generic contract binding to access the raw methods on -} - -// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWarpMessengerCallerRaw struct { - Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactorRaw struct { - Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { - contract, err := bindIWarpMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil -} - -// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { - contract, err := bindIWarpMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerCaller{contract: contract}, nil -} - -// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { - contract, err := bindIWarpMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerTransactor{contract: contract}, nil -} - -// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { - contract, err := bindIWarpMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWarpMessengerFilterer{contract: contract}, nil -} - -// bindIWarpMessenger binds a generic wrapper to an already deployed contract. -func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWarpMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) - - outstruct := new(struct { - WarpBlockHash WarpBlockHash - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) - - outstruct := new(struct { - Message WarpMessage - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessageIterator struct { - Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWarpMessengerSendWarpMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWarpMessengerSendWarpMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessage struct { - Sender common.Address - MessageID [32]byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil -} - -// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// InitializableMetaData contains all meta data concerning the Initializable contract. -var InitializableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// InitializableABI is the input ABI used to generate the binding from. -// Deprecated: Use InitializableMetaData.ABI instead. -var InitializableABI = InitializableMetaData.ABI - -// Initializable is an auto generated Go binding around an Ethereum contract. -type Initializable struct { - InitializableCaller // Read-only binding to the contract - InitializableTransactor // Write-only binding to the contract - InitializableFilterer // Log filterer for contract events -} - -// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. -type InitializableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type InitializableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type InitializableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type InitializableSession struct { - Contract *Initializable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type InitializableCallerSession struct { - Contract *InitializableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type InitializableTransactorSession struct { - Contract *InitializableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. -type InitializableRaw struct { - Contract *Initializable // Generic contract binding to access the raw methods on -} - -// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type InitializableCallerRaw struct { - Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on -} - -// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type InitializableTransactorRaw struct { - Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. -func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { - contract, err := bindInitializable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil -} - -// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { - contract, err := bindInitializable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &InitializableCaller{contract: contract}, nil -} - -// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { - contract, err := bindInitializable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &InitializableTransactor{contract: contract}, nil -} - -// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. -func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { - contract, err := bindInitializable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &InitializableFilterer{contract: contract}, nil -} - -// bindInitializable binds a generic wrapper to an already deployed contract. -func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := InitializableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transact(opts, method, params...) -} - -// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. -type InitializableInitializedIterator struct { - Event *InitializableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *InitializableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *InitializableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *InitializableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// InitializableInitialized represents a Initialized event raised by the Initializable contract. -type InitializableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { - - logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { - - logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableUpgradeableMetaData contains all meta data concerning the OwnableUpgradeable contract. -var OwnableUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// OwnableUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableUpgradeableMetaData.ABI instead. -var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI - -// OwnableUpgradeable is an auto generated Go binding around an Ethereum contract. -type OwnableUpgradeable struct { - OwnableUpgradeableCaller // Read-only binding to the contract - OwnableUpgradeableTransactor // Write-only binding to the contract - OwnableUpgradeableFilterer // Log filterer for contract events -} - -// OwnableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableUpgradeableSession struct { - Contract *OwnableUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableUpgradeableCallerSession struct { - Contract *OwnableUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableUpgradeableTransactorSession struct { - Contract *OwnableUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableUpgradeableRaw struct { - Contract *OwnableUpgradeable // Generic contract binding to access the raw methods on -} - -// OwnableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCallerRaw struct { - Contract *OwnableUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactorRaw struct { - Contract *OwnableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnableUpgradeable creates a new instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeable(address common.Address, backend bind.ContractBackend) (*OwnableUpgradeable, error) { - contract, err := bindOwnableUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &OwnableUpgradeable{OwnableUpgradeableCaller: OwnableUpgradeableCaller{contract: contract}, OwnableUpgradeableTransactor: OwnableUpgradeableTransactor{contract: contract}, OwnableUpgradeableFilterer: OwnableUpgradeableFilterer{contract: contract}}, nil -} - -// NewOwnableUpgradeableCaller creates a new read-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*OwnableUpgradeableCaller, error) { - contract, err := bindOwnableUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableCaller{contract: contract}, nil -} - -// NewOwnableUpgradeableTransactor creates a new write-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableUpgradeableTransactor, error) { - contract, err := bindOwnableUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableTransactor{contract: contract}, nil -} - -// NewOwnableUpgradeableFilterer creates a new log filterer instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableUpgradeableFilterer, error) { - contract, err := bindOwnableUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableUpgradeableFilterer{contract: contract}, nil -} - -// bindOwnableUpgradeable binds a generic wrapper to an already deployed contract. -func bindOwnableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.OwnableUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCallerSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// OwnableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitializedIterator struct { - Event *OwnableUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableInitialized represents a Initialized event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &OwnableUpgradeableInitializedIterator{contract: _OwnableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log types.Log) (*OwnableUpgradeableInitialized, error) { - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferredIterator struct { - Event *OwnableUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &OwnableUpgradeableOwnershipTransferredIterator{contract: _OwnableUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableUpgradeableOwnershipTransferred, error) { - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. -var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. -var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI - -// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeable struct { - ReentrancyGuardUpgradeableCaller // Read-only binding to the contract - ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract - ReentrancyGuardUpgradeableFilterer // Log filterer for contract events -} - -// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReentrancyGuardUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReentrancyGuardUpgradeableSession struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReentrancyGuardUpgradeableCallerSession struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReentrancyGuardUpgradeableTransactorSession struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableRaw struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCallerRaw struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactorRaw struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { - contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil -} - -// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { - contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil -} - -// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. -func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitializedIterator struct { - Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. -var SafeERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122044774e8ae9cb3b510a51dacb03d3b3d6bee0ee00ebb240bae28efc962ab9298a64736f6c63430008190033", -} - -// SafeERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeERC20MetaData.ABI instead. -var SafeERC20ABI = SafeERC20MetaData.ABI - -// SafeERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeERC20MetaData.Bin instead. -var SafeERC20Bin = SafeERC20MetaData.Bin - -// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. -func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// SafeERC20 is an auto generated Go binding around an Ethereum contract. -type SafeERC20 struct { - SafeERC20Caller // Read-only binding to the contract - SafeERC20Transactor // Write-only binding to the contract - SafeERC20Filterer // Log filterer for contract events -} - -// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type SafeERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeERC20Session struct { - Contract *SafeERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeERC20CallerSession struct { - Contract *SafeERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeERC20TransactorSession struct { - Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type SafeERC20Raw struct { - Contract *SafeERC20 // Generic contract binding to access the raw methods on -} - -// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeERC20CallerRaw struct { - Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeERC20TransactorRaw struct { - Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { - contract, err := bindSafeERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { - contract, err := bindSafeERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeERC20Caller{contract: contract}, nil -} - -// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { - contract, err := bindSafeERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeERC20Transactor{contract: contract}, nil -} - -// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { - contract, err := bindSafeERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeERC20Filterer{contract: contract}, nil -} - -// bindSafeERC20 binds a generic wrapper to an already deployed contract. -func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transact(opts, method, params...) -} - -// SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. -var SafeERC20TransferFromMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206a67e765459c7c24f187543272046fd3214ad556da06c492ce0a4aee92d9549264736f6c63430008190033", -} - -// SafeERC20TransferFromABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeERC20TransferFromMetaData.ABI instead. -var SafeERC20TransferFromABI = SafeERC20TransferFromMetaData.ABI - -// SafeERC20TransferFromBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeERC20TransferFromMetaData.Bin instead. -var SafeERC20TransferFromBin = SafeERC20TransferFromMetaData.Bin - -// DeploySafeERC20TransferFrom deploys a new Ethereum contract, binding an instance of SafeERC20TransferFrom to it. -func DeploySafeERC20TransferFrom(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20TransferFrom, error) { - parsed, err := SafeERC20TransferFromMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20TransferFromBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil -} - -// SafeERC20TransferFrom is an auto generated Go binding around an Ethereum contract. -type SafeERC20TransferFrom struct { - SafeERC20TransferFromCaller // Read-only binding to the contract - SafeERC20TransferFromTransactor // Write-only binding to the contract - SafeERC20TransferFromFilterer // Log filterer for contract events -} - -// SafeERC20TransferFromCaller is an auto generated read-only Go binding around an Ethereum contract. -type SafeERC20TransferFromCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeERC20TransferFromTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeERC20TransferFromFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeERC20TransferFromSession struct { - Contract *SafeERC20TransferFrom // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20TransferFromCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeERC20TransferFromCallerSession struct { - Contract *SafeERC20TransferFromCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeERC20TransferFromTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeERC20TransferFromTransactorSession struct { - Contract *SafeERC20TransferFromTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20TransferFromRaw is an auto generated low-level Go binding around an Ethereum contract. -type SafeERC20TransferFromRaw struct { - Contract *SafeERC20TransferFrom // Generic contract binding to access the raw methods on -} - -// SafeERC20TransferFromCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeERC20TransferFromCallerRaw struct { - Contract *SafeERC20TransferFromCaller // Generic read-only contract binding to access the raw methods on -} - -// SafeERC20TransferFromTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeERC20TransferFromTransactorRaw struct { - Contract *SafeERC20TransferFromTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeERC20TransferFrom creates a new instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFrom(address common.Address, backend bind.ContractBackend) (*SafeERC20TransferFrom, error) { - contract, err := bindSafeERC20TransferFrom(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil -} - -// NewSafeERC20TransferFromCaller creates a new read-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromCaller(address common.Address, caller bind.ContractCaller) (*SafeERC20TransferFromCaller, error) { - contract, err := bindSafeERC20TransferFrom(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromCaller{contract: contract}, nil -} - -// NewSafeERC20TransferFromTransactor creates a new write-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20TransferFromTransactor, error) { - contract, err := bindSafeERC20TransferFrom(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromTransactor{contract: contract}, nil -} - -// NewSafeERC20TransferFromFilterer creates a new log filterer instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20TransferFromFilterer, error) { - contract, err := bindSafeERC20TransferFrom(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromFilterer{contract: contract}, nil -} - -// bindSafeERC20TransferFrom binds a generic wrapper to an already deployed contract. -func bindSafeERC20TransferFrom(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeERC20TransferFromMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20TransferFrom *SafeERC20TransferFromCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20TransferFrom.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.contract.Transact(opts, method, params...) -} - -// TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. -var TeleporterRegistryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561000f575f80fd5b50604051610fe0380380610fe083398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610ab561052b5f395f818161014301526102580152610ab55ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061099e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a17565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a17565b5f546106656101f482610a60565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b5f5b81811015610974578581018301518582018401528201610959565b505f8282860101525082604083015281955061099181880161088b565b9450505050509250929050565b5f8082840360608112156109b0575f80fd5b60408112156109bd575f80fd5b506040516040810181811067ffffffffffffffff821117156109e1576109e161081d565b6040528351815260208401516109f6816107eb565b60208201526040840151909250610a0c816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d834a6d51f424d8a88e00a9517be4131ff5dd55e9fa58841c7ed9b321be4b52a64736f6c63430008190033", -} - -// TeleporterRegistryABI is the input ABI used to generate the binding from. -// Deprecated: Use TeleporterRegistryMetaData.ABI instead. -var TeleporterRegistryABI = TeleporterRegistryMetaData.ABI - -// TeleporterRegistryBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use TeleporterRegistryMetaData.Bin instead. -var TeleporterRegistryBin = TeleporterRegistryMetaData.Bin - -// DeployTeleporterRegistry deploys a new Ethereum contract, binding an instance of TeleporterRegistry to it. -func DeployTeleporterRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, initialEntries []ProtocolRegistryEntry) (common.Address, *types.Transaction, *TeleporterRegistry, error) { - parsed, err := TeleporterRegistryMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TeleporterRegistryBin), backend, initialEntries) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &TeleporterRegistry{TeleporterRegistryCaller: TeleporterRegistryCaller{contract: contract}, TeleporterRegistryTransactor: TeleporterRegistryTransactor{contract: contract}, TeleporterRegistryFilterer: TeleporterRegistryFilterer{contract: contract}}, nil -} - -// TeleporterRegistry is an auto generated Go binding around an Ethereum contract. -type TeleporterRegistry struct { - TeleporterRegistryCaller // Read-only binding to the contract - TeleporterRegistryTransactor // Write-only binding to the contract - TeleporterRegistryFilterer // Log filterer for contract events -} - -// TeleporterRegistryCaller is an auto generated read-only Go binding around an Ethereum contract. -type TeleporterRegistryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type TeleporterRegistryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type TeleporterRegistryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistrySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type TeleporterRegistrySession struct { - Contract *TeleporterRegistry // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TeleporterRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type TeleporterRegistryCallerSession struct { - Contract *TeleporterRegistryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// TeleporterRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type TeleporterRegistryTransactorSession struct { - Contract *TeleporterRegistryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TeleporterRegistryRaw is an auto generated low-level Go binding around an Ethereum contract. -type TeleporterRegistryRaw struct { - Contract *TeleporterRegistry // Generic contract binding to access the raw methods on -} - -// TeleporterRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type TeleporterRegistryCallerRaw struct { - Contract *TeleporterRegistryCaller // Generic read-only contract binding to access the raw methods on -} - -// TeleporterRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type TeleporterRegistryTransactorRaw struct { - Contract *TeleporterRegistryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewTeleporterRegistry creates a new instance of TeleporterRegistry, bound to a specific deployed contract. -func NewTeleporterRegistry(address common.Address, backend bind.ContractBackend) (*TeleporterRegistry, error) { - contract, err := bindTeleporterRegistry(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &TeleporterRegistry{TeleporterRegistryCaller: TeleporterRegistryCaller{contract: contract}, TeleporterRegistryTransactor: TeleporterRegistryTransactor{contract: contract}, TeleporterRegistryFilterer: TeleporterRegistryFilterer{contract: contract}}, nil -} - -// NewTeleporterRegistryCaller creates a new read-only instance of TeleporterRegistry, bound to a specific deployed contract. -func NewTeleporterRegistryCaller(address common.Address, caller bind.ContractCaller) (*TeleporterRegistryCaller, error) { - contract, err := bindTeleporterRegistry(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &TeleporterRegistryCaller{contract: contract}, nil -} - -// NewTeleporterRegistryTransactor creates a new write-only instance of TeleporterRegistry, bound to a specific deployed contract. -func NewTeleporterRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*TeleporterRegistryTransactor, error) { - contract, err := bindTeleporterRegistry(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &TeleporterRegistryTransactor{contract: contract}, nil -} - -// NewTeleporterRegistryFilterer creates a new log filterer instance of TeleporterRegistry, bound to a specific deployed contract. -func NewTeleporterRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*TeleporterRegistryFilterer, error) { - contract, err := bindTeleporterRegistry(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &TeleporterRegistryFilterer{contract: contract}, nil -} - -// bindTeleporterRegistry binds a generic wrapper to an already deployed contract. -func bindTeleporterRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := TeleporterRegistryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TeleporterRegistry *TeleporterRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TeleporterRegistry.Contract.TeleporterRegistryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TeleporterRegistry *TeleporterRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TeleporterRegistry.Contract.TeleporterRegistryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TeleporterRegistry *TeleporterRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TeleporterRegistry.Contract.TeleporterRegistryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TeleporterRegistry *TeleporterRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TeleporterRegistry.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TeleporterRegistry *TeleporterRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TeleporterRegistry.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TeleporterRegistry *TeleporterRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TeleporterRegistry.Contract.contract.Transact(opts, method, params...) -} - -// MAXVERSIONINCREMENT is a free data retrieval call binding the contract method 0xac473ac3. -// -// Solidity: function MAX_VERSION_INCREMENT() view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistryCaller) MAXVERSIONINCREMENT(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "MAX_VERSION_INCREMENT") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MAXVERSIONINCREMENT is a free data retrieval call binding the contract method 0xac473ac3. -// -// Solidity: function MAX_VERSION_INCREMENT() view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistrySession) MAXVERSIONINCREMENT() (*big.Int, error) { - return _TeleporterRegistry.Contract.MAXVERSIONINCREMENT(&_TeleporterRegistry.CallOpts) -} - -// MAXVERSIONINCREMENT is a free data retrieval call binding the contract method 0xac473ac3. -// -// Solidity: function MAX_VERSION_INCREMENT() view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) MAXVERSIONINCREMENT() (*big.Int, error) { - return _TeleporterRegistry.Contract.MAXVERSIONINCREMENT(&_TeleporterRegistry.CallOpts) -} - -// VALIDATORSSOURCEADDRESS is a free data retrieval call binding the contract method 0x0731775d. -// -// Solidity: function VALIDATORS_SOURCE_ADDRESS() view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCaller) VALIDATORSSOURCEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "VALIDATORS_SOURCE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// VALIDATORSSOURCEADDRESS is a free data retrieval call binding the contract method 0x0731775d. -// -// Solidity: function VALIDATORS_SOURCE_ADDRESS() view returns(address) -func (_TeleporterRegistry *TeleporterRegistrySession) VALIDATORSSOURCEADDRESS() (common.Address, error) { - return _TeleporterRegistry.Contract.VALIDATORSSOURCEADDRESS(&_TeleporterRegistry.CallOpts) -} - -// VALIDATORSSOURCEADDRESS is a free data retrieval call binding the contract method 0x0731775d. -// -// Solidity: function VALIDATORS_SOURCE_ADDRESS() view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) VALIDATORSSOURCEADDRESS() (common.Address, error) { - return _TeleporterRegistry.Contract.VALIDATORSSOURCEADDRESS(&_TeleporterRegistry.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_TeleporterRegistry *TeleporterRegistrySession) WARPMESSENGER() (common.Address, error) { - return _TeleporterRegistry.Contract.WARPMESSENGER(&_TeleporterRegistry.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) WARPMESSENGER() (common.Address, error) { - return _TeleporterRegistry.Contract.WARPMESSENGER(&_TeleporterRegistry.CallOpts) -} - -// BlockchainID is a free data retrieval call binding the contract method 0xd127dc9b. -// -// Solidity: function blockchainID() view returns(bytes32) -func (_TeleporterRegistry *TeleporterRegistryCaller) BlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "blockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// BlockchainID is a free data retrieval call binding the contract method 0xd127dc9b. -// -// Solidity: function blockchainID() view returns(bytes32) -func (_TeleporterRegistry *TeleporterRegistrySession) BlockchainID() ([32]byte, error) { - return _TeleporterRegistry.Contract.BlockchainID(&_TeleporterRegistry.CallOpts) -} - -// BlockchainID is a free data retrieval call binding the contract method 0xd127dc9b. -// -// Solidity: function blockchainID() view returns(bytes32) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) BlockchainID() ([32]byte, error) { - return _TeleporterRegistry.Contract.BlockchainID(&_TeleporterRegistry.CallOpts) -} - -// GetAddressFromVersion is a free data retrieval call binding the contract method 0x46f9ef49. -// -// Solidity: function getAddressFromVersion(uint256 version) view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCaller) GetAddressFromVersion(opts *bind.CallOpts, version *big.Int) (common.Address, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "getAddressFromVersion", version) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetAddressFromVersion is a free data retrieval call binding the contract method 0x46f9ef49. -// -// Solidity: function getAddressFromVersion(uint256 version) view returns(address) -func (_TeleporterRegistry *TeleporterRegistrySession) GetAddressFromVersion(version *big.Int) (common.Address, error) { - return _TeleporterRegistry.Contract.GetAddressFromVersion(&_TeleporterRegistry.CallOpts, version) -} - -// GetAddressFromVersion is a free data retrieval call binding the contract method 0x46f9ef49. -// -// Solidity: function getAddressFromVersion(uint256 version) view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetAddressFromVersion(version *big.Int) (common.Address, error) { - return _TeleporterRegistry.Contract.GetAddressFromVersion(&_TeleporterRegistry.CallOpts, version) -} - -// GetLatestTeleporter is a free data retrieval call binding the contract method 0xd820e64f. -// -// Solidity: function getLatestTeleporter() view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCaller) GetLatestTeleporter(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "getLatestTeleporter") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetLatestTeleporter is a free data retrieval call binding the contract method 0xd820e64f. -// -// Solidity: function getLatestTeleporter() view returns(address) -func (_TeleporterRegistry *TeleporterRegistrySession) GetLatestTeleporter() (common.Address, error) { - return _TeleporterRegistry.Contract.GetLatestTeleporter(&_TeleporterRegistry.CallOpts) -} - -// GetLatestTeleporter is a free data retrieval call binding the contract method 0xd820e64f. -// -// Solidity: function getLatestTeleporter() view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetLatestTeleporter() (common.Address, error) { - return _TeleporterRegistry.Contract.GetLatestTeleporter(&_TeleporterRegistry.CallOpts) -} - -// GetTeleporterFromVersion is a free data retrieval call binding the contract method 0x215abce9. -// -// Solidity: function getTeleporterFromVersion(uint256 version) view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCaller) GetTeleporterFromVersion(opts *bind.CallOpts, version *big.Int) (common.Address, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "getTeleporterFromVersion", version) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetTeleporterFromVersion is a free data retrieval call binding the contract method 0x215abce9. -// -// Solidity: function getTeleporterFromVersion(uint256 version) view returns(address) -func (_TeleporterRegistry *TeleporterRegistrySession) GetTeleporterFromVersion(version *big.Int) (common.Address, error) { - return _TeleporterRegistry.Contract.GetTeleporterFromVersion(&_TeleporterRegistry.CallOpts, version) -} - -// GetTeleporterFromVersion is a free data retrieval call binding the contract method 0x215abce9. -// -// Solidity: function getTeleporterFromVersion(uint256 version) view returns(address) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetTeleporterFromVersion(version *big.Int) (common.Address, error) { - return _TeleporterRegistry.Contract.GetTeleporterFromVersion(&_TeleporterRegistry.CallOpts, version) -} - -// GetVersionFromAddress is a free data retrieval call binding the contract method 0x4c1f08ce. -// -// Solidity: function getVersionFromAddress(address protocolAddress) view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistryCaller) GetVersionFromAddress(opts *bind.CallOpts, protocolAddress common.Address) (*big.Int, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "getVersionFromAddress", protocolAddress) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetVersionFromAddress is a free data retrieval call binding the contract method 0x4c1f08ce. -// -// Solidity: function getVersionFromAddress(address protocolAddress) view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistrySession) GetVersionFromAddress(protocolAddress common.Address) (*big.Int, error) { - return _TeleporterRegistry.Contract.GetVersionFromAddress(&_TeleporterRegistry.CallOpts, protocolAddress) -} - -// GetVersionFromAddress is a free data retrieval call binding the contract method 0x4c1f08ce. -// -// Solidity: function getVersionFromAddress(address protocolAddress) view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) GetVersionFromAddress(protocolAddress common.Address) (*big.Int, error) { - return _TeleporterRegistry.Contract.GetVersionFromAddress(&_TeleporterRegistry.CallOpts, protocolAddress) -} - -// LatestVersion is a free data retrieval call binding the contract method 0xc07f47d4. -// -// Solidity: function latestVersion() view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistryCaller) LatestVersion(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _TeleporterRegistry.contract.Call(opts, &out, "latestVersion") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// LatestVersion is a free data retrieval call binding the contract method 0xc07f47d4. -// -// Solidity: function latestVersion() view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistrySession) LatestVersion() (*big.Int, error) { - return _TeleporterRegistry.Contract.LatestVersion(&_TeleporterRegistry.CallOpts) -} - -// LatestVersion is a free data retrieval call binding the contract method 0xc07f47d4. -// -// Solidity: function latestVersion() view returns(uint256) -func (_TeleporterRegistry *TeleporterRegistryCallerSession) LatestVersion() (*big.Int, error) { - return _TeleporterRegistry.Contract.LatestVersion(&_TeleporterRegistry.CallOpts) -} - -// AddProtocolVersion is a paid mutator transaction binding the contract method 0x41f34ed9. -// -// Solidity: function addProtocolVersion(uint32 messageIndex) returns() -func (_TeleporterRegistry *TeleporterRegistryTransactor) AddProtocolVersion(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _TeleporterRegistry.contract.Transact(opts, "addProtocolVersion", messageIndex) -} - -// AddProtocolVersion is a paid mutator transaction binding the contract method 0x41f34ed9. -// -// Solidity: function addProtocolVersion(uint32 messageIndex) returns() -func (_TeleporterRegistry *TeleporterRegistrySession) AddProtocolVersion(messageIndex uint32) (*types.Transaction, error) { - return _TeleporterRegistry.Contract.AddProtocolVersion(&_TeleporterRegistry.TransactOpts, messageIndex) -} - -// AddProtocolVersion is a paid mutator transaction binding the contract method 0x41f34ed9. -// -// Solidity: function addProtocolVersion(uint32 messageIndex) returns() -func (_TeleporterRegistry *TeleporterRegistryTransactorSession) AddProtocolVersion(messageIndex uint32) (*types.Transaction, error) { - return _TeleporterRegistry.Contract.AddProtocolVersion(&_TeleporterRegistry.TransactOpts, messageIndex) -} - -// TeleporterRegistryAddProtocolVersionIterator is returned from FilterAddProtocolVersion and is used to iterate over the raw logs and unpacked data for AddProtocolVersion events raised by the TeleporterRegistry contract. -type TeleporterRegistryAddProtocolVersionIterator struct { - Event *TeleporterRegistryAddProtocolVersion // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryAddProtocolVersionIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAddProtocolVersion) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAddProtocolVersion) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryAddProtocolVersionIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryAddProtocolVersionIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryAddProtocolVersion represents a AddProtocolVersion event raised by the TeleporterRegistry contract. -type TeleporterRegistryAddProtocolVersion struct { - Version *big.Int - ProtocolAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddProtocolVersion is a free log retrieval operation binding the contract event 0xa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a. -// -// Solidity: event AddProtocolVersion(uint256 indexed version, address indexed protocolAddress) -func (_TeleporterRegistry *TeleporterRegistryFilterer) FilterAddProtocolVersion(opts *bind.FilterOpts, version []*big.Int, protocolAddress []common.Address) (*TeleporterRegistryAddProtocolVersionIterator, error) { - - var versionRule []interface{} - for _, versionItem := range version { - versionRule = append(versionRule, versionItem) - } - var protocolAddressRule []interface{} - for _, protocolAddressItem := range protocolAddress { - protocolAddressRule = append(protocolAddressRule, protocolAddressItem) - } - - logs, sub, err := _TeleporterRegistry.contract.FilterLogs(opts, "AddProtocolVersion", versionRule, protocolAddressRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryAddProtocolVersionIterator{contract: _TeleporterRegistry.contract, event: "AddProtocolVersion", logs: logs, sub: sub}, nil -} - -// WatchAddProtocolVersion is a free log subscription operation binding the contract event 0xa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a. -// -// Solidity: event AddProtocolVersion(uint256 indexed version, address indexed protocolAddress) -func (_TeleporterRegistry *TeleporterRegistryFilterer) WatchAddProtocolVersion(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAddProtocolVersion, version []*big.Int, protocolAddress []common.Address) (event.Subscription, error) { - - var versionRule []interface{} - for _, versionItem := range version { - versionRule = append(versionRule, versionItem) - } - var protocolAddressRule []interface{} - for _, protocolAddressItem := range protocolAddress { - protocolAddressRule = append(protocolAddressRule, protocolAddressItem) - } - - logs, sub, err := _TeleporterRegistry.contract.WatchLogs(opts, "AddProtocolVersion", versionRule, protocolAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryAddProtocolVersion) - if err := _TeleporterRegistry.contract.UnpackLog(event, "AddProtocolVersion", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddProtocolVersion is a log parse operation binding the contract event 0xa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a. -// -// Solidity: event AddProtocolVersion(uint256 indexed version, address indexed protocolAddress) -func (_TeleporterRegistry *TeleporterRegistryFilterer) ParseAddProtocolVersion(log types.Log) (*TeleporterRegistryAddProtocolVersion, error) { - event := new(TeleporterRegistryAddProtocolVersion) - if err := _TeleporterRegistry.contract.UnpackLog(event, "AddProtocolVersion", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryLatestVersionUpdatedIterator is returned from FilterLatestVersionUpdated and is used to iterate over the raw logs and unpacked data for LatestVersionUpdated events raised by the TeleporterRegistry contract. -type TeleporterRegistryLatestVersionUpdatedIterator struct { - Event *TeleporterRegistryLatestVersionUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryLatestVersionUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryLatestVersionUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryLatestVersionUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryLatestVersionUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryLatestVersionUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryLatestVersionUpdated represents a LatestVersionUpdated event raised by the TeleporterRegistry contract. -type TeleporterRegistryLatestVersionUpdated struct { - OldVersion *big.Int - NewVersion *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterLatestVersionUpdated is a free log retrieval operation binding the contract event 0x30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b0. -// -// Solidity: event LatestVersionUpdated(uint256 indexed oldVersion, uint256 indexed newVersion) -func (_TeleporterRegistry *TeleporterRegistryFilterer) FilterLatestVersionUpdated(opts *bind.FilterOpts, oldVersion []*big.Int, newVersion []*big.Int) (*TeleporterRegistryLatestVersionUpdatedIterator, error) { - - var oldVersionRule []interface{} - for _, oldVersionItem := range oldVersion { - oldVersionRule = append(oldVersionRule, oldVersionItem) - } - var newVersionRule []interface{} - for _, newVersionItem := range newVersion { - newVersionRule = append(newVersionRule, newVersionItem) - } - - logs, sub, err := _TeleporterRegistry.contract.FilterLogs(opts, "LatestVersionUpdated", oldVersionRule, newVersionRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryLatestVersionUpdatedIterator{contract: _TeleporterRegistry.contract, event: "LatestVersionUpdated", logs: logs, sub: sub}, nil -} - -// WatchLatestVersionUpdated is a free log subscription operation binding the contract event 0x30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b0. -// -// Solidity: event LatestVersionUpdated(uint256 indexed oldVersion, uint256 indexed newVersion) -func (_TeleporterRegistry *TeleporterRegistryFilterer) WatchLatestVersionUpdated(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryLatestVersionUpdated, oldVersion []*big.Int, newVersion []*big.Int) (event.Subscription, error) { - - var oldVersionRule []interface{} - for _, oldVersionItem := range oldVersion { - oldVersionRule = append(oldVersionRule, oldVersionItem) - } - var newVersionRule []interface{} - for _, newVersionItem := range newVersion { - newVersionRule = append(newVersionRule, newVersionItem) - } - - logs, sub, err := _TeleporterRegistry.contract.WatchLogs(opts, "LatestVersionUpdated", oldVersionRule, newVersionRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryLatestVersionUpdated) - if err := _TeleporterRegistry.contract.UnpackLog(event, "LatestVersionUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseLatestVersionUpdated is a log parse operation binding the contract event 0x30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b0. -// -// Solidity: event LatestVersionUpdated(uint256 indexed oldVersion, uint256 indexed newVersion) -func (_TeleporterRegistry *TeleporterRegistryFilterer) ParseLatestVersionUpdated(log types.Log) (*TeleporterRegistryLatestVersionUpdated, error) { - event := new(TeleporterRegistryLatestVersionUpdated) - if err := _TeleporterRegistry.contract.UnpackLog(event, "LatestVersionUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryAppUpgradeableMetaData contains all meta data concerning the TeleporterRegistryAppUpgradeable contract. -var TeleporterRegistryAppUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// TeleporterRegistryAppUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use TeleporterRegistryAppUpgradeableMetaData.ABI instead. -var TeleporterRegistryAppUpgradeableABI = TeleporterRegistryAppUpgradeableMetaData.ABI - -// TeleporterRegistryAppUpgradeable is an auto generated Go binding around an Ethereum contract. -type TeleporterRegistryAppUpgradeable struct { - TeleporterRegistryAppUpgradeableCaller // Read-only binding to the contract - TeleporterRegistryAppUpgradeableTransactor // Write-only binding to the contract - TeleporterRegistryAppUpgradeableFilterer // Log filterer for contract events -} - -// TeleporterRegistryAppUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type TeleporterRegistryAppUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryAppUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type TeleporterRegistryAppUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryAppUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type TeleporterRegistryAppUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryAppUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type TeleporterRegistryAppUpgradeableSession struct { - Contract *TeleporterRegistryAppUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TeleporterRegistryAppUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type TeleporterRegistryAppUpgradeableCallerSession struct { - Contract *TeleporterRegistryAppUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// TeleporterRegistryAppUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type TeleporterRegistryAppUpgradeableTransactorSession struct { - Contract *TeleporterRegistryAppUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TeleporterRegistryAppUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type TeleporterRegistryAppUpgradeableRaw struct { - Contract *TeleporterRegistryAppUpgradeable // Generic contract binding to access the raw methods on -} - -// TeleporterRegistryAppUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type TeleporterRegistryAppUpgradeableCallerRaw struct { - Contract *TeleporterRegistryAppUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// TeleporterRegistryAppUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type TeleporterRegistryAppUpgradeableTransactorRaw struct { - Contract *TeleporterRegistryAppUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewTeleporterRegistryAppUpgradeable creates a new instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryAppUpgradeable(address common.Address, backend bind.ContractBackend) (*TeleporterRegistryAppUpgradeable, error) { - contract, err := bindTeleporterRegistryAppUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeable{TeleporterRegistryAppUpgradeableCaller: TeleporterRegistryAppUpgradeableCaller{contract: contract}, TeleporterRegistryAppUpgradeableTransactor: TeleporterRegistryAppUpgradeableTransactor{contract: contract}, TeleporterRegistryAppUpgradeableFilterer: TeleporterRegistryAppUpgradeableFilterer{contract: contract}}, nil -} - -// NewTeleporterRegistryAppUpgradeableCaller creates a new read-only instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryAppUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*TeleporterRegistryAppUpgradeableCaller, error) { - contract, err := bindTeleporterRegistryAppUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeableCaller{contract: contract}, nil -} - -// NewTeleporterRegistryAppUpgradeableTransactor creates a new write-only instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryAppUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*TeleporterRegistryAppUpgradeableTransactor, error) { - contract, err := bindTeleporterRegistryAppUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeableTransactor{contract: contract}, nil -} - -// NewTeleporterRegistryAppUpgradeableFilterer creates a new log filterer instance of TeleporterRegistryAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryAppUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*TeleporterRegistryAppUpgradeableFilterer, error) { - contract, err := bindTeleporterRegistryAppUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeableFilterer{contract: contract}, nil -} - -// bindTeleporterRegistryAppUpgradeable binds a generic wrapper to an already deployed contract. -func bindTeleporterRegistryAppUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := TeleporterRegistryAppUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TeleporterRegistryAppUpgradeable.Contract.TeleporterRegistryAppUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.TeleporterRegistryAppUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.TeleporterRegistryAppUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TeleporterRegistryAppUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. -// -// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCaller) TELEPORTERREGISTRYAPPSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _TeleporterRegistryAppUpgradeable.contract.Call(opts, &out, "TELEPORTER_REGISTRY_APP_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. -// -// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { - return _TeleporterRegistryAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryAppUpgradeable.CallOpts) -} - -// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. -// -// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { - return _TeleporterRegistryAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryAppUpgradeable.CallOpts) -} - -// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. -// -// Solidity: function getMinTeleporterVersion() view returns(uint256) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCaller) GetMinTeleporterVersion(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _TeleporterRegistryAppUpgradeable.contract.Call(opts, &out, "getMinTeleporterVersion") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. -// -// Solidity: function getMinTeleporterVersion() view returns(uint256) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) GetMinTeleporterVersion() (*big.Int, error) { - return _TeleporterRegistryAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.CallOpts) -} - -// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. -// -// Solidity: function getMinTeleporterVersion() view returns(uint256) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerSession) GetMinTeleporterVersion() (*big.Int, error) { - return _TeleporterRegistryAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.CallOpts) -} - -// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. -// -// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCaller) IsTeleporterAddressPaused(opts *bind.CallOpts, teleporterAddress common.Address) (bool, error) { - var out []interface{} - err := _TeleporterRegistryAppUpgradeable.contract.Call(opts, &out, "isTeleporterAddressPaused", teleporterAddress) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. -// -// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { - return _TeleporterRegistryAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryAppUpgradeable.CallOpts, teleporterAddress) -} - -// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. -// -// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableCallerSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { - return _TeleporterRegistryAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryAppUpgradeable.CallOpts, teleporterAddress) -} - -// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. -// -// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) PauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "pauseTeleporterAddress", teleporterAddress) -} - -// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. -// -// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) -} - -// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. -// -// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. -// -// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) UnpauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "unpauseTeleporterAddress", teleporterAddress) -} - -// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. -// -// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) -} - -// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. -// -// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryAppUpgradeable.TransactOpts, teleporterAddress) -} - -// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. -// -// Solidity: function updateMinTeleporterVersion(uint256 version) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactor) UpdateMinTeleporterVersion(opts *bind.TransactOpts, version *big.Int) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.contract.Transact(opts, "updateMinTeleporterVersion", version) -} - -// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. -// -// Solidity: function updateMinTeleporterVersion(uint256 version) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.TransactOpts, version) -} - -// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. -// -// Solidity: function updateMinTeleporterVersion(uint256 version) returns() -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableTransactorSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { - return _TeleporterRegistryAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryAppUpgradeable.TransactOpts, version) -} - -// TeleporterRegistryAppUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableInitializedIterator struct { - Event *TeleporterRegistryAppUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryAppUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryAppUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryAppUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryAppUpgradeableInitialized represents a Initialized event raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*TeleporterRegistryAppUpgradeableInitializedIterator, error) { - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeableInitializedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryAppUpgradeableInitialized) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseInitialized(log types.Log) (*TeleporterRegistryAppUpgradeableInitialized, error) { - event := new(TeleporterRegistryAppUpgradeableInitialized) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator is returned from FilterMinTeleporterVersionUpdated and is used to iterate over the raw logs and unpacked data for MinTeleporterVersionUpdated events raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator struct { - Event *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated represents a MinTeleporterVersionUpdated event raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated struct { - OldMinTeleporterVersion *big.Int - NewMinTeleporterVersion *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMinTeleporterVersionUpdated is a free log retrieval operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. -// -// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterMinTeleporterVersionUpdated(opts *bind.FilterOpts, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (*TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator, error) { - - var oldMinTeleporterVersionRule []interface{} - for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { - oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) - } - var newMinTeleporterVersionRule []interface{} - for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { - newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) - } - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdatedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "MinTeleporterVersionUpdated", logs: logs, sub: sub}, nil -} - -// WatchMinTeleporterVersionUpdated is a free log subscription operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. -// -// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchMinTeleporterVersionUpdated(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (event.Subscription, error) { - - var oldMinTeleporterVersionRule []interface{} - for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { - oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) - } - var newMinTeleporterVersionRule []interface{} - for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { - newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) - } - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMinTeleporterVersionUpdated is a log parse operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. -// -// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseMinTeleporterVersionUpdated(log types.Log) (*TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated, error) { - event := new(TeleporterRegistryAppUpgradeableMinTeleporterVersionUpdated) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator is returned from FilterTeleporterAddressPaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressPaused events raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator struct { - Event *TeleporterRegistryAppUpgradeableTeleporterAddressPaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryAppUpgradeableTeleporterAddressPaused represents a TeleporterAddressPaused event raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableTeleporterAddressPaused struct { - TeleporterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTeleporterAddressPaused is a free log retrieval operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. -// -// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterTeleporterAddressPaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeableTeleporterAddressPausedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "TeleporterAddressPaused", logs: logs, sub: sub}, nil -} - -// WatchTeleporterAddressPaused is a free log subscription operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. -// -// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchTeleporterAddressPaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableTeleporterAddressPaused, teleporterAddress []common.Address) (event.Subscription, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTeleporterAddressPaused is a log parse operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. -// -// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseTeleporterAddressPaused(log types.Log) (*TeleporterRegistryAppUpgradeableTeleporterAddressPaused, error) { - event := new(TeleporterRegistryAppUpgradeableTeleporterAddressPaused) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator is returned from FilterTeleporterAddressUnpaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressUnpaused events raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator struct { - Event *TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused represents a TeleporterAddressUnpaused event raised by the TeleporterRegistryAppUpgradeable contract. -type TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused struct { - TeleporterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTeleporterAddressUnpaused is a free log retrieval operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. -// -// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) FilterTeleporterAddressUnpaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryAppUpgradeableTeleporterAddressUnpausedIterator{contract: _TeleporterRegistryAppUpgradeable.contract, event: "TeleporterAddressUnpaused", logs: logs, sub: sub}, nil -} - -// WatchTeleporterAddressUnpaused is a free log subscription operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. -// -// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) WatchTeleporterAddressUnpaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused, teleporterAddress []common.Address) (event.Subscription, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTeleporterAddressUnpaused is a log parse operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. -// -// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) -func (_TeleporterRegistryAppUpgradeable *TeleporterRegistryAppUpgradeableFilterer) ParseTeleporterAddressUnpaused(log types.Log) (*TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused, error) { - event := new(TeleporterRegistryAppUpgradeableTeleporterAddressUnpaused) - if err := _TeleporterRegistryAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryOwnableAppUpgradeableMetaData contains all meta data concerning the TeleporterRegistryOwnableAppUpgradeable contract. -var TeleporterRegistryOwnableAppUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// TeleporterRegistryOwnableAppUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use TeleporterRegistryOwnableAppUpgradeableMetaData.ABI instead. -var TeleporterRegistryOwnableAppUpgradeableABI = TeleporterRegistryOwnableAppUpgradeableMetaData.ABI - -// TeleporterRegistryOwnableAppUpgradeable is an auto generated Go binding around an Ethereum contract. -type TeleporterRegistryOwnableAppUpgradeable struct { - TeleporterRegistryOwnableAppUpgradeableCaller // Read-only binding to the contract - TeleporterRegistryOwnableAppUpgradeableTransactor // Write-only binding to the contract - TeleporterRegistryOwnableAppUpgradeableFilterer // Log filterer for contract events -} - -// TeleporterRegistryOwnableAppUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type TeleporterRegistryOwnableAppUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryOwnableAppUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type TeleporterRegistryOwnableAppUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryOwnableAppUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type TeleporterRegistryOwnableAppUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TeleporterRegistryOwnableAppUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type TeleporterRegistryOwnableAppUpgradeableSession struct { - Contract *TeleporterRegistryOwnableAppUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TeleporterRegistryOwnableAppUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type TeleporterRegistryOwnableAppUpgradeableCallerSession struct { - Contract *TeleporterRegistryOwnableAppUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// TeleporterRegistryOwnableAppUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type TeleporterRegistryOwnableAppUpgradeableTransactorSession struct { - Contract *TeleporterRegistryOwnableAppUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TeleporterRegistryOwnableAppUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type TeleporterRegistryOwnableAppUpgradeableRaw struct { - Contract *TeleporterRegistryOwnableAppUpgradeable // Generic contract binding to access the raw methods on -} - -// TeleporterRegistryOwnableAppUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type TeleporterRegistryOwnableAppUpgradeableCallerRaw struct { - Contract *TeleporterRegistryOwnableAppUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// TeleporterRegistryOwnableAppUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type TeleporterRegistryOwnableAppUpgradeableTransactorRaw struct { - Contract *TeleporterRegistryOwnableAppUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewTeleporterRegistryOwnableAppUpgradeable creates a new instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryOwnableAppUpgradeable(address common.Address, backend bind.ContractBackend) (*TeleporterRegistryOwnableAppUpgradeable, error) { - contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeable{TeleporterRegistryOwnableAppUpgradeableCaller: TeleporterRegistryOwnableAppUpgradeableCaller{contract: contract}, TeleporterRegistryOwnableAppUpgradeableTransactor: TeleporterRegistryOwnableAppUpgradeableTransactor{contract: contract}, TeleporterRegistryOwnableAppUpgradeableFilterer: TeleporterRegistryOwnableAppUpgradeableFilterer{contract: contract}}, nil -} - -// NewTeleporterRegistryOwnableAppUpgradeableCaller creates a new read-only instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryOwnableAppUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*TeleporterRegistryOwnableAppUpgradeableCaller, error) { - contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableCaller{contract: contract}, nil -} - -// NewTeleporterRegistryOwnableAppUpgradeableTransactor creates a new write-only instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryOwnableAppUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*TeleporterRegistryOwnableAppUpgradeableTransactor, error) { - contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableTransactor{contract: contract}, nil -} - -// NewTeleporterRegistryOwnableAppUpgradeableFilterer creates a new log filterer instance of TeleporterRegistryOwnableAppUpgradeable, bound to a specific deployed contract. -func NewTeleporterRegistryOwnableAppUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*TeleporterRegistryOwnableAppUpgradeableFilterer, error) { - contract, err := bindTeleporterRegistryOwnableAppUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableFilterer{contract: contract}, nil -} - -// bindTeleporterRegistryOwnableAppUpgradeable binds a generic wrapper to an already deployed contract. -func bindTeleporterRegistryOwnableAppUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := TeleporterRegistryOwnableAppUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.TeleporterRegistryOwnableAppUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.TeleporterRegistryOwnableAppUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.TeleporterRegistryOwnableAppUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. -// -// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) TELEPORTERREGISTRYAPPSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "TELEPORTER_REGISTRY_APP_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. -// -// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) -} - -// TELEPORTERREGISTRYAPPSTORAGELOCATION is a free data retrieval call binding the contract method 0x909a6ac0. -// -// Solidity: function TELEPORTER_REGISTRY_APP_STORAGE_LOCATION() view returns(bytes32) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) TELEPORTERREGISTRYAPPSTORAGELOCATION() ([32]byte, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.TELEPORTERREGISTRYAPPSTORAGELOCATION(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) -} - -// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. -// -// Solidity: function getMinTeleporterVersion() view returns(uint256) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) GetMinTeleporterVersion(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "getMinTeleporterVersion") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. -// -// Solidity: function getMinTeleporterVersion() view returns(uint256) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) GetMinTeleporterVersion() (*big.Int, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) -} - -// GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. -// -// Solidity: function getMinTeleporterVersion() view returns(uint256) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) GetMinTeleporterVersion() (*big.Int, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.GetMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) -} - -// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. -// -// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) IsTeleporterAddressPaused(opts *bind.CallOpts, teleporterAddress common.Address) (bool, error) { - var out []interface{} - err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "isTeleporterAddressPaused", teleporterAddress) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. -// -// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts, teleporterAddress) -} - -// IsTeleporterAddressPaused is a free data retrieval call binding the contract method 0x97314297. -// -// Solidity: function isTeleporterAddressPaused(address teleporterAddress) view returns(bool) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) IsTeleporterAddressPaused(teleporterAddress common.Address) (bool, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.IsTeleporterAddressPaused(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts, teleporterAddress) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _TeleporterRegistryOwnableAppUpgradeable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) Owner() (common.Address, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.Owner(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableCallerSession) Owner() (common.Address, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.Owner(&_TeleporterRegistryOwnableAppUpgradeable.CallOpts) -} - -// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. -// -// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) PauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "pauseTeleporterAddress", teleporterAddress) -} - -// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. -// -// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) -} - -// PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. -// -// Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) PauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.PauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. -// -// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.ReceiveTeleporterMessage(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, sourceBlockchainID, originSenderAddress, message) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.RenounceOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.RenounceOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.TransferOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.TransferOwnership(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, newOwner) -} - -// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. -// -// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) UnpauseTeleporterAddress(opts *bind.TransactOpts, teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "unpauseTeleporterAddress", teleporterAddress) -} - -// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. -// -// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) -} - -// UnpauseTeleporterAddress is a paid mutator transaction binding the contract method 0x4511243e. -// -// Solidity: function unpauseTeleporterAddress(address teleporterAddress) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) UnpauseTeleporterAddress(teleporterAddress common.Address) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.UnpauseTeleporterAddress(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, teleporterAddress) -} - -// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. -// -// Solidity: function updateMinTeleporterVersion(uint256 version) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactor) UpdateMinTeleporterVersion(opts *bind.TransactOpts, version *big.Int) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.contract.Transact(opts, "updateMinTeleporterVersion", version) -} - -// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. -// -// Solidity: function updateMinTeleporterVersion(uint256 version) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, version) -} - -// UpdateMinTeleporterVersion is a paid mutator transaction binding the contract method 0x5eb99514. -// -// Solidity: function updateMinTeleporterVersion(uint256 version) returns() -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableTransactorSession) UpdateMinTeleporterVersion(version *big.Int) (*types.Transaction, error) { - return _TeleporterRegistryOwnableAppUpgradeable.Contract.UpdateMinTeleporterVersion(&_TeleporterRegistryOwnableAppUpgradeable.TransactOpts, version) -} - -// TeleporterRegistryOwnableAppUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableInitializedIterator struct { - Event *TeleporterRegistryOwnableAppUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryOwnableAppUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryOwnableAppUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryOwnableAppUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryOwnableAppUpgradeableInitialized represents a Initialized event raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*TeleporterRegistryOwnableAppUpgradeableInitializedIterator, error) { - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableInitializedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryOwnableAppUpgradeableInitialized) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseInitialized(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableInitialized, error) { - event := new(TeleporterRegistryOwnableAppUpgradeableInitialized) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator is returned from FilterMinTeleporterVersionUpdated and is used to iterate over the raw logs and unpacked data for MinTeleporterVersionUpdated events raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator struct { - Event *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated represents a MinTeleporterVersionUpdated event raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated struct { - OldMinTeleporterVersion *big.Int - NewMinTeleporterVersion *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMinTeleporterVersionUpdated is a free log retrieval operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. -// -// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterMinTeleporterVersionUpdated(opts *bind.FilterOpts, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (*TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator, error) { - - var oldMinTeleporterVersionRule []interface{} - for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { - oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) - } - var newMinTeleporterVersionRule []interface{} - for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { - newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdatedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "MinTeleporterVersionUpdated", logs: logs, sub: sub}, nil -} - -// WatchMinTeleporterVersionUpdated is a free log subscription operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. -// -// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchMinTeleporterVersionUpdated(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated, oldMinTeleporterVersion []*big.Int, newMinTeleporterVersion []*big.Int) (event.Subscription, error) { - - var oldMinTeleporterVersionRule []interface{} - for _, oldMinTeleporterVersionItem := range oldMinTeleporterVersion { - oldMinTeleporterVersionRule = append(oldMinTeleporterVersionRule, oldMinTeleporterVersionItem) - } - var newMinTeleporterVersionRule []interface{} - for _, newMinTeleporterVersionItem := range newMinTeleporterVersion { - newMinTeleporterVersionRule = append(newMinTeleporterVersionRule, newMinTeleporterVersionItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "MinTeleporterVersionUpdated", oldMinTeleporterVersionRule, newMinTeleporterVersionRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMinTeleporterVersionUpdated is a log parse operation binding the contract event 0xa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d. -// -// Solidity: event MinTeleporterVersionUpdated(uint256 indexed oldMinTeleporterVersion, uint256 indexed newMinTeleporterVersion) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseMinTeleporterVersionUpdated(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated, error) { - event := new(TeleporterRegistryOwnableAppUpgradeableMinTeleporterVersionUpdated) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "MinTeleporterVersionUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator struct { - Event *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableOwnershipTransferredIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred, error) { - event := new(TeleporterRegistryOwnableAppUpgradeableOwnershipTransferred) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator is returned from FilterTeleporterAddressPaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressPaused events raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator struct { - Event *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused represents a TeleporterAddressPaused event raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused struct { - TeleporterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTeleporterAddressPaused is a free log retrieval operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. -// -// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterTeleporterAddressPaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPausedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "TeleporterAddressPaused", logs: logs, sub: sub}, nil -} - -// WatchTeleporterAddressPaused is a free log subscription operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. -// -// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchTeleporterAddressPaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused, teleporterAddress []common.Address) (event.Subscription, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressPaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTeleporterAddressPaused is a log parse operation binding the contract event 0x933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c. -// -// Solidity: event TeleporterAddressPaused(address indexed teleporterAddress) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseTeleporterAddressPaused(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused, error) { - event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressPaused) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressPaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator is returned from FilterTeleporterAddressUnpaused and is used to iterate over the raw logs and unpacked data for TeleporterAddressUnpaused events raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator struct { - Event *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused represents a TeleporterAddressUnpaused event raised by the TeleporterRegistryOwnableAppUpgradeable contract. -type TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused struct { - TeleporterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTeleporterAddressUnpaused is a free log retrieval operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. -// -// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) FilterTeleporterAddressUnpaused(opts *bind.FilterOpts, teleporterAddress []common.Address) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.FilterLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return &TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpausedIterator{contract: _TeleporterRegistryOwnableAppUpgradeable.contract, event: "TeleporterAddressUnpaused", logs: logs, sub: sub}, nil -} - -// WatchTeleporterAddressUnpaused is a free log subscription operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. -// -// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) WatchTeleporterAddressUnpaused(opts *bind.WatchOpts, sink chan<- *TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused, teleporterAddress []common.Address) (event.Subscription, error) { - - var teleporterAddressRule []interface{} - for _, teleporterAddressItem := range teleporterAddress { - teleporterAddressRule = append(teleporterAddressRule, teleporterAddressItem) - } - - logs, sub, err := _TeleporterRegistryOwnableAppUpgradeable.contract.WatchLogs(opts, "TeleporterAddressUnpaused", teleporterAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTeleporterAddressUnpaused is a log parse operation binding the contract event 0x844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c3. -// -// Solidity: event TeleporterAddressUnpaused(address indexed teleporterAddress) -func (_TeleporterRegistryOwnableAppUpgradeable *TeleporterRegistryOwnableAppUpgradeableFilterer) ParseTeleporterAddressUnpaused(log types.Log) (*TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused, error) { - event := new(TeleporterRegistryOwnableAppUpgradeableTeleporterAddressUnpaused) - if err := _TeleporterRegistryOwnableAppUpgradeable.contract.UnpackLog(event, "TeleporterAddressUnpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TestMessengerMetaData contains all meta data concerning the TestMessenger contract. var TestMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ReceiveMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getCurrentMessage\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 53add587a..d565b306c 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -80,17 +80,6 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } -// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. -type ValidatorMessagesValidationPeriod struct { - SubnetID [32]byte - NodeID []byte - BlsPublicKey []byte - RegistrationExpiry uint64 - RemainingBalanceOwner PChainOwner - DisableOwner PChainOwner - Weight uint64 -} - // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -100,36 +89,23 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. -type WarpBlockHash struct { - SourceChainID [32]byte - BlockHash [32]byte -} - -// WarpMessage is an auto generated low-level Go binding around an user-defined struct. -type WarpMessage struct { - SourceChainID [32]byte - OriginSenderAddress common.Address - Payload []byte -} - -// AddressMetaData contains all meta data concerning the Address contract. -var AddressMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", +// ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. +var ERC20TokenStakingManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615cf8380380615cf883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615bab8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638280a25a11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b80638280a25a1461037f57806393e245981461038757806398f3e2b41461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360305d621161016557806360305d6214610322578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee5780635297fae61461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b61021461031d366004614d2b565b610f4f565b61032a601481565b60405163ffffffff909116815260200161023f565b61030161034d366004614d53565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b610231603081565b610214610395366004614c00565b61129d565b6102146103a8366004614d2b565b611368565b6103016103bb366004614d6e565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615ad683398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615af683398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614e03565b6102946202a30081565b6103015f80516020615ab683398151915281565b61021461049b366004614e97565b611cc5565b6103016104ae366004614ed5565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff16600581111561053557610535614d8e565b600581111561054657610546614d8e565b815260200160018201805461055a90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f40565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d8e565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190615081565b6040518263ffffffff1660e01b815260040161072991906150b2565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076991906150c4565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615af68339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083391906150c4565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150db565b6001600160a01b0316146108b05761088b60608401604085016150db565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150f6565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150f6565b8363ffffffff168181106108f7576108f761513b565b9050602002810190610909919061514f565b610912906151ba565b80516040519192505f91600888019161092a91615235565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da91906004016150b2565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391615235565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e191906150c4565b90508086600801835f01516040516109f99190615235565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d8e565b021790555060208201516001820190610a94908261528a565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b39911685615359565b8251604051919550610b4a91615235565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f9061536c565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff168361538e565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c3091906150b2565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f91906150c4565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154d0565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea9190810190615081565b90505f600282604051610cfd9190615235565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b91906150c4565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d8e565b14610dea578060405163170cc93360e21b81526004016104da9190614f78565b61076983836122a8565b5f805f80516020615ad683398151915260030154610e12908461555b565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615ad68339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d8e565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b3683398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b3683398151915255565b949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115610f9c57610f9c614d8e565b6003811115610fad57610fad614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d8e565b1461105b578251604051633b0d540d60e21b81526104da919060040161557a565b60048151600581111561107057611070614d8e565b036110865761107e85612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab8a612157565b604001516040518263ffffffff1660e01b81526004016110cb91906150b2565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190615594565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b03841661538e565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b5f80516020615ad68339815191525f6112b583611b76565b51905060048160058111156112cc576112cc614d8e565b146112ec578060405163170cc93360e21b81526004016104da9190614f78565b5f8381526005830160205260409020546001600160a01b0316331461133257335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b61137061277a565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff1660038111156113bd576113bd614d8e565b60038111156113ce576113ce614d8e565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561144757611447614d8e565b14611468578051604051633b0d540d60e21b81526104da919060040161557a565b60046114778260400151611b76565b51600581111561148957611489614d8e565b14611588575f61149885612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016114d791906150b2565b606060405180830381865af41580156114f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115169190615594565b5091509150818460400151146115425760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561158457604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61159183612de9565b50506115a960015f80516020615b3683398151915255565b5050565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b3683398151915255565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c91906150b2565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155d4565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f40565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d8e565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff16600381111561181b5761181b614d8e565b600381111561182c5761182c614d8e565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d8e565b141580156118c657506003815160038111156118c3576118c3614d8e565b14155b156118e7578051604051633b0d540d60e21b81526104da919060040161557a565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d69190810190615081565b6040518263ffffffff1660e01b81526004016119f291906150b2565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3291906150c4565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615af68339815191529190611a8090614f40565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d8e565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155f7565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906150c4565b611b7e614b4b565b5f8281525f80516020615b56833981519152602052604090819020815160e0810190925280545f80516020615af6833981519152929190829060ff166005811115611bcb57611bcb614d8e565b6005811115611bdc57611bdc614d8e565b8152602001600182018054611bf090614f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f40565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615af6833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615681565b90815260200160405180910390205491505092915050565b5f8381525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad68339815191529284929091829060ff166003811115611e4d57611e4d614d8e565b6003811115611e5e57611e5e614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d8e565b14611f0c578251604051633b0d540d60e21b81526104da919060040161557a565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f45573361130d565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615690565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d8e565b036120eb5760028401546080840151611fdf916001600160401b031690615690565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e91849161205991906156b0565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d8e565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f78565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156d0565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156d0565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a391906150c4565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161244291906150b2565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615760565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615ad6833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615ad6833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e6573361130d565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615690565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274491906150c4565b905080846008015f8a81526020019081526020015f205f8282546127689190615359565b90915550501515979650505050505050565b5f80516020615b368339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d91906150b2565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155d4565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d8e565b60058111156128b4576128b4614d8e565b81526020016001820180546128c890614f40565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f40565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d8e565b141580156129cb57506001815160058111156129c8576129c8614d8e565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f78565b600381516005811115612a0157612a01614d8e565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a9190615235565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d8e565b021790555060208201516001820190612a87908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d8e565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615ab683398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615ab6833981519152546115a9906001600160a01b03168383613987565b60015f80516020615b3683398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615ad683398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115612e3657612e36614d8e565b6003811115612e4757612e47614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615690565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff168561538e565b612f9e919061555b565b915081866008015f8681526020019081526020015f205f828254612fc29190615359565b90915550612fd290508284615783565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615ad68339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d8e565b146130c657805160405163170cc93360e21b81526104da9190600401614f78565b5f8282608001516130d79190615690565b905083600201600a9054906101000a90046001600160401b031682604001516131009190615796565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d8e565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6115a9816140b0565b5f8281525f80516020615b56833981519152602052604081206002015481905f80516020615af683398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134519190810190615081565b6040518263ffffffff1660e01b815260040161346d91906150b2565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad91906150c4565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615ad683398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d8e565b148061355c575060048251600581111561355a5761355a614d8e565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d8e565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f78565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a91906150c4565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff1660058111156136f8576136f8614d8e565b600581111561370957613709614d8e565b815260200160018201805461371d90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f40565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d8e565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d8e565b021790555060208201516001820190613892908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615ab6833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615af683398151915242613a6c6060860160408701614d53565b6001600160401b0316111580613aa65750613a8a6202a30042615359565b613a9a6060860160408701614d53565b6001600160401b031610155b15613ae057613abb6060850160408601614d53565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af060608601866157c1565b61456a565b613b05613af060808601866157c1565b6030613b1460208601866157d5565b905014613b4657613b2860208501856157d5565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157d5565b90505f03613b7d57613b6284806157d5565b604051633e08a12560e11b81526004016104da929190615817565b5f60088201613b8c86806157d5565b604051613b9a929190615681565b90815260200160405180910390205414613bd357613bb884806157d5565b60405163a41f772f60e01b81526004016104da929190615817565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d53565b6001600160401b03168152602001613cc660608b018b6157c1565b613ccf9061582a565b8152602001613ce160808b018b6157c1565b613cea9061582a565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d18919061594c565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d599190810190615a03565b5f82815260068601602052604090209193509150613d77828261528a565b508160088401613d8788806157d5565b604051613d95929190615681565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd19085906004016150b2565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1191906150c4565b6040805160e081019091529091508060018152602001613e3189806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d8e565b021790555060208201516001820190613ed9908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157d5565b604051613f85929190615681565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d53565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d53565b61408260e0860160c08701615a46565b614093610100870160e08801615a5f565b6101008701356140ab61014089016101208a016150db565b6146fc565b6140b8613ff1565b5f80516020615ab68339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615af68339815191525f6001600160401b03808416908516111561414c5761414583856156b0565b9050614159565b61415684846156b0565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b031690615359565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615690565b6001600160401b03169052505b6060810151614210906064615796565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff1661538e565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b0316816040018181516142869190615359565b9052506040810180516001600160401b03871691906142a6908390615783565b905250600184015460408201516064916142cb91600160401b90910460ff169061538e565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b568339815191526020526040812060020180545f80516020615af6833981519152919060089061438590600160401b90046001600160401b0316615a7f565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a9a565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b91906150c4565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa91906150c4565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a8282615783565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150f6565b151590505b156145de576145a96020820182614c86565b6145b660208301836150f6565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150f6565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150f6565b90508110156115a95761463960208301836150f6565b614644600184615783565b8181106146535761465361513b565b905060200201602081019061466891906150db565b6001600160a01b031661467e60208401846150f6565b8381811061468e5761468e61513b565b90506020020160208101906146a391906150db565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615ad683398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615af683398151915290815560146149336060840160408501615a5f565b60ff161180614952575061494d6060830160408401615a5f565b60ff16155b15614986576149676060830160408401615a5f565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a5f565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d53565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a369190615235565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f40565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f8060408385031215614d3c575f80fd5b614d4583614bad565b946020939093013593505050565b5f60208284031215614d63575f80fd5b813561215081614cb0565b5f8060408385031215614d7f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614db257614db2614d8e565b9052565b5f5b83811015614dd0578181015183820152602001614db8565b50505f910152565b5f8151808452614def816020860160208601614db6565b601f01601f19169290920160200192915050565b60208152614e15602082018351614da2565b5f602083015160e06040840152614e30610100840182614dd8565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614eaa575f80fd5b61014080821215614eb9575f80fd5b8493508301359050614eca81614e83565b809150509250929050565b5f8060208385031215614ee6575f80fd5b82356001600160401b0380821115614efc575f80fd5b818501915085601f830112614f0f575f80fd5b813581811115614f1d575f80fd5b866020828501011115614f2e575f80fd5b60209290920196919550909350505050565b600181811c90821680614f5457607f821691505b602082108103614f7257634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614da2565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614fbc57614fbc614f86565b60405290565b604080519081016001600160401b0381118282101715614fbc57614fbc614f86565b604051601f8201601f191681016001600160401b038111828210171561500c5761500c614f86565b604052919050565b5f6001600160401b0382111561502c5761502c614f86565b50601f01601f191660200190565b5f82601f830112615049575f80fd5b815161505c61505782615014565b614fe4565b818152846020838601011115615070575f80fd5b610f47826020830160208701614db6565b5f60208284031215615091575f80fd5b81516001600160401b038111156150a6575f80fd5b610f478482850161503a565b602081525f6121506020830184614dd8565b5f602082840312156150d4575f80fd5b5051919050565b5f602082840312156150eb575f80fd5b813561215081614e83565b5f808335601e1984360301811261510b575f80fd5b8301803591506001600160401b03821115615124575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615163575f80fd5b9190910192915050565b5f82601f83011261517c575f80fd5b813561518a61505782615014565b81815284602083860101111561519e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151ca575f80fd5b6151d2614f9a565b82356001600160401b03808211156151e8575f80fd5b6151f43683870161516d565b83526020850135915080821115615209575f80fd5b506152163682860161516d565b602083015250604083013561522a81614cb0565b604082015292915050565b5f8251615163818460208701614db6565b601f8211156104e357805f5260205f20601f840160051c8101602085101561526b5750805b601f840160051c820191505b81811015611a32575f8155600101615277565b81516001600160401b038111156152a3576152a3614f86565b6152b7816152b18454614f40565b84615246565b602080601f8311600181146152ea575f84156152d35750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b82811015615318578886015182559484019460019091019084016152f9565b508582101561533557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e48615345565b5f63ffffffff80831681810361538457615384615345565b6001019392505050565b8082028115828204841417610e4857610e48615345565b5f808335601e198436030181126153ba575f80fd5b83016020810192503590506001600160401b038111156153d8575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154c357848303601f19018952813536889003605e1901811261544a575f80fd5b8701606061545882806153a5565b82875261546883880182846153e6565b92505050615478868301836153a5565b8683038888015261548a8382846153e6565b92505050604080830135925061549f83614cb0565b6001600160401b039290921694909101939093529783019790830190600101615425565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154f481614e83565b6001600160a01b031660608381019190915283013536849003601e1901811261551b575f80fd5b83016020810190356001600160401b03811115615536575f80fd5b8060051b3603821315615547575f80fd5b60808085015261369a60a08501828461540e565b5f8261557557634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061558e5761558e614d8e565b91905290565b5f805f606084860312156155a6575f80fd5b8351925060208401516155b881614cb0565b60408501519092506155c981614cb0565b809150509250925092565b5f80604083850312156155e5575f80fd5b825191506020830151614eca81614ba0565b5f60208083525f845461560981614f40565b806020870152604060018084165f811461562a576001811461564657615673565b60ff19851660408a0152604084151560051b8a01019550615673565b895f5260205f205f5b8581101561566a5781548b820186015290830190880161564f565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561226657612266615345565b6001600160401b0382811682821603908082111561226657612266615345565b5f80604083850312156156e1575f80fd5b82516001600160401b03808211156156f7575f80fd5b908401906060828703121561570a575f80fd5b615712614f9a565b82518152602083015161572481614e83565b602082015260408301518281111561573a575f80fd5b6157468882860161503a565b6040830152508094505050506020830151614eca81614ba0565b5f8060408385031215615771575f80fd5b825191506020830151614eca81614cb0565b81810381811115610e4857610e48615345565b6001600160401b038181168382160280821691908281146157b9576157b9615345565b505092915050565b5f8235603e19833603018112615163575f80fd5b5f808335601e198436030181126157ea575f80fd5b8301803591506001600160401b03821115615803575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153e6565b5f6040823603121561583a575f80fd5b615842614fc2565b61584b83614bad565b81526020808401356001600160401b0380821115615867575f80fd5b9085019036601f830112615879575f80fd5b81358181111561588b5761588b614f86565b8060051b915061589c848301614fe4565b81815291830184019184810190368411156158b5575f80fd5b938501935b838510156158df57843592506158cf83614e83565b82825293850193908501906158ba565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b03168252938301936001929092019190830190615923565b60208152815160208201525f602083015160e06040840152615972610100840182614dd8565b90506040840151601f19808584030160608601526159908383614dd8565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159c083836158f1565b925060a08601519150808584030160c0860152506159de82826158f1565b91505060c08401516159fb60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a14575f80fd5b8251915060208301516001600160401b03811115615a30575f80fd5b615a3c8582860161503a565b9150509250929050565b5f60208284031215615a56575f80fd5b61215082614c9f565b5f60208284031215615a6f575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361538457615384615345565b5f60208284031215615aaa575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212204ca9a50194199189e26dc263d6e7a3864a5bf7568967035b043b2c1b9f3f56a064736f6c63430008190033", } -// AddressABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressMetaData.ABI instead. -var AddressABI = AddressMetaData.ABI +// ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20TokenStakingManagerMetaData.ABI instead. +var ERC20TokenStakingManagerABI = ERC20TokenStakingManagerMetaData.ABI -// AddressBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressMetaData.Bin instead. -var AddressBin = AddressMetaData.Bin +// ERC20TokenStakingManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20TokenStakingManagerMetaData.Bin instead. +var ERC20TokenStakingManagerBin = ERC20TokenStakingManagerMetaData.Bin -// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. -func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { - parsed, err := AddressMetaData.GetAbi() +// DeployERC20TokenStakingManager deploys a new Ethereum contract, binding an instance of ERC20TokenStakingManager to it. +func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ERC20TokenStakingManager, error) { + parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -137,111 +113,111 @@ func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (commo return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20TokenStakingManagerBin), backend, init) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil + return address, tx, &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil } -// Address is an auto generated Go binding around an Ethereum contract. -type Address struct { - AddressCaller // Read-only binding to the contract - AddressTransactor // Write-only binding to the contract - AddressFilterer // Log filterer for contract events +// ERC20TokenStakingManager is an auto generated Go binding around an Ethereum contract. +type ERC20TokenStakingManager struct { + ERC20TokenStakingManagerCaller // Read-only binding to the contract + ERC20TokenStakingManagerTransactor // Write-only binding to the contract + ERC20TokenStakingManagerFilterer // Log filterer for contract events } -// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressCaller struct { +// ERC20TokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressTransactor struct { +// ERC20TokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressFilterer struct { +// ERC20TokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20TokenStakingManagerFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// AddressSession is an auto generated Go binding around an Ethereum contract, +// ERC20TokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type AddressSession struct { - Contract *Address // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20TokenStakingManagerSession struct { + Contract *ERC20TokenStakingManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ERC20TokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type AddressCallerSession struct { - Contract *AddressCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ERC20TokenStakingManagerCallerSession struct { + Contract *ERC20TokenStakingManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ERC20TokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type AddressTransactorSession struct { - Contract *AddressTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20TokenStakingManagerTransactorSession struct { + Contract *ERC20TokenStakingManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressRaw struct { - Contract *Address // Generic contract binding to access the raw methods on +// ERC20TokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20TokenStakingManagerRaw struct { + Contract *ERC20TokenStakingManager // Generic contract binding to access the raw methods on } -// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressCallerRaw struct { - Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +// ERC20TokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerCallerRaw struct { + Contract *ERC20TokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on } -// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressTransactorRaw struct { - Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +// ERC20TokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20TokenStakingManagerTransactorRaw struct { + Contract *ERC20TokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on } -// NewAddress creates a new instance of Address, bound to a specific deployed contract. -func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { - contract, err := bindAddress(address, backend, backend, backend) +// NewERC20TokenStakingManager creates a new instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManager(address common.Address, backend bind.ContractBackend) (*ERC20TokenStakingManager, error) { + contract, err := bindERC20TokenStakingManager(address, backend, backend, backend) if err != nil { return nil, err } - return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil + return &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil } -// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. -func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { - contract, err := bindAddress(address, caller, nil, nil) +// NewERC20TokenStakingManagerCaller creates a new read-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*ERC20TokenStakingManagerCaller, error) { + contract, err := bindERC20TokenStakingManager(address, caller, nil, nil) if err != nil { return nil, err } - return &AddressCaller{contract: contract}, nil + return &ERC20TokenStakingManagerCaller{contract: contract}, nil } -// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. -func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { - contract, err := bindAddress(address, nil, transactor, nil) +// NewERC20TokenStakingManagerTransactor creates a new write-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20TokenStakingManagerTransactor, error) { + contract, err := bindERC20TokenStakingManager(address, nil, transactor, nil) if err != nil { return nil, err } - return &AddressTransactor{contract: contract}, nil + return &ERC20TokenStakingManagerTransactor{contract: contract}, nil } -// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. -func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { - contract, err := bindAddress(address, nil, nil, filterer) +// NewERC20TokenStakingManagerFilterer creates a new log filterer instance of ERC20TokenStakingManager, bound to a specific deployed contract. +func NewERC20TokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20TokenStakingManagerFilterer, error) { + contract, err := bindERC20TokenStakingManager(address, nil, nil, filterer) if err != nil { return nil, err } - return &AddressFilterer{contract: contract}, nil + return &ERC20TokenStakingManagerFilterer{contract: contract}, nil } -// bindAddress binds a generic wrapper to an already deployed contract. -func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressMetaData.GetAbi() +// bindERC20TokenStakingManager binds a generic wrapper to an already deployed contract. +func bindERC20TokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() if err != nil { return nil, err } @@ -252,1190 +228,729 @@ func bindAddress(address common.Address, caller bind.ContractCaller, transactor // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transfer(opts) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.contract.Call(opts, result, method, params...) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20TokenStakingManager.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.contract.Transfer(opts) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.contract.Transact(opts, method, params...) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) } -// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. -var ContextUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") -// ContextUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextUpgradeableMetaData.ABI instead. -var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI + if err != nil { + return *new(uint32), err + } -// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. -type ContextUpgradeable struct { - ContextUpgradeableCaller // Read-only binding to the contract - ContextUpgradeableTransactor // Write-only binding to the contract - ContextUpgradeableFilterer // Log filterer for contract events -} + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) -// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + return out0, err -// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { + return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextUpgradeableSession struct { - Contract *ContextUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextUpgradeableCallerSession struct { - Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") -// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextUpgradeableTransactorSession struct { - Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + if err != nil { + return *new(uint16), err + } -// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextUpgradeableRaw struct { - Contract *ContextUpgradeable // Generic contract binding to access the raw methods on -} + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err -// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextUpgradeableCallerRaw struct { - Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on } -// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactorRaw struct { - Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) } -// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { - contract, err := bindContextUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) } -// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { - contract, err := bindContextUpgradeable(address, caller, nil, nil) +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + if err != nil { - return nil, err + return *new(uint8), err } - return &ContextUpgradeableCaller{contract: contract}, nil + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + } -// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { - contract, err := bindContextUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextUpgradeableTransactor{contract: contract}, nil +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { - contract, err := bindContextUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextUpgradeableFilterer{contract: contract}, nil +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// bindContextUpgradeable binds a generic wrapper to an already deployed contract. -func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextUpgradeableMetaData.GetAbi() +// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. +// +// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ERC20STAKINGMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ERC20_STAKING_MANAGER_STORAGE_LOCATION") + if err != nil { - return nil, err + return *new([32]byte), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) +// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. +// +// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) +// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. +// +// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transfer(opts) +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) } -// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. -type ContextUpgradeableInitializedIterator struct { - Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data + if err != nil { + return *new(uint16), err + } - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ContextUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ContextUpgradeableInitializedIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContextUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) } -// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. -type ContextUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. // -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { - return nil, err + return *new(uint64), err } - return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log + return out0, err - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. // -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. -var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615cf8380380615cf883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615bab8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638280a25a11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b80638280a25a1461037f57806393e245981461038757806398f3e2b41461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360305d621161016557806360305d6214610322578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee5780635297fae61461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b61021461031d366004614d2b565b610f4f565b61032a601481565b60405163ffffffff909116815260200161023f565b61030161034d366004614d53565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b610231603081565b610214610395366004614c00565b61129d565b6102146103a8366004614d2b565b611368565b6103016103bb366004614d6e565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615ad683398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615af683398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614e03565b6102946202a30081565b6103015f80516020615ab683398151915281565b61021461049b366004614e97565b611cc5565b6103016104ae366004614ed5565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff16600581111561053557610535614d8e565b600581111561054657610546614d8e565b815260200160018201805461055a90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f40565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d8e565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190615081565b6040518263ffffffff1660e01b815260040161072991906150b2565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076991906150c4565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615af68339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083391906150c4565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150db565b6001600160a01b0316146108b05761088b60608401604085016150db565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150f6565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150f6565b8363ffffffff168181106108f7576108f761513b565b9050602002810190610909919061514f565b610912906151ba565b80516040519192505f91600888019161092a91615235565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da91906004016150b2565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391615235565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e191906150c4565b90508086600801835f01516040516109f99190615235565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d8e565b021790555060208201516001820190610a94908261528a565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b39911685615359565b8251604051919550610b4a91615235565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f9061536c565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff168361538e565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c3091906150b2565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f91906150c4565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154d0565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea9190810190615081565b90505f600282604051610cfd9190615235565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b91906150c4565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d8e565b14610dea578060405163170cc93360e21b81526004016104da9190614f78565b61076983836122a8565b5f805f80516020615ad683398151915260030154610e12908461555b565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615ad68339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d8e565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b3683398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b3683398151915255565b949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115610f9c57610f9c614d8e565b6003811115610fad57610fad614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d8e565b1461105b578251604051633b0d540d60e21b81526104da919060040161557a565b60048151600581111561107057611070614d8e565b036110865761107e85612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab8a612157565b604001516040518263ffffffff1660e01b81526004016110cb91906150b2565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190615594565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b03841661538e565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b5f80516020615ad68339815191525f6112b583611b76565b51905060048160058111156112cc576112cc614d8e565b146112ec578060405163170cc93360e21b81526004016104da9190614f78565b5f8381526005830160205260409020546001600160a01b0316331461133257335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b61137061277a565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff1660038111156113bd576113bd614d8e565b60038111156113ce576113ce614d8e565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561144757611447614d8e565b14611468578051604051633b0d540d60e21b81526104da919060040161557a565b60046114778260400151611b76565b51600581111561148957611489614d8e565b14611588575f61149885612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016114d791906150b2565b606060405180830381865af41580156114f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115169190615594565b5091509150818460400151146115425760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561158457604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61159183612de9565b50506115a960015f80516020615b3683398151915255565b5050565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b3683398151915255565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c91906150b2565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155d4565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f40565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d8e565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff16600381111561181b5761181b614d8e565b600381111561182c5761182c614d8e565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d8e565b141580156118c657506003815160038111156118c3576118c3614d8e565b14155b156118e7578051604051633b0d540d60e21b81526104da919060040161557a565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d69190810190615081565b6040518263ffffffff1660e01b81526004016119f291906150b2565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3291906150c4565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615af68339815191529190611a8090614f40565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d8e565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155f7565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906150c4565b611b7e614b4b565b5f8281525f80516020615b56833981519152602052604090819020815160e0810190925280545f80516020615af6833981519152929190829060ff166005811115611bcb57611bcb614d8e565b6005811115611bdc57611bdc614d8e565b8152602001600182018054611bf090614f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f40565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615af6833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615681565b90815260200160405180910390205491505092915050565b5f8381525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad68339815191529284929091829060ff166003811115611e4d57611e4d614d8e565b6003811115611e5e57611e5e614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d8e565b14611f0c578251604051633b0d540d60e21b81526104da919060040161557a565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f45573361130d565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615690565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d8e565b036120eb5760028401546080840151611fdf916001600160401b031690615690565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e91849161205991906156b0565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d8e565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f78565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156d0565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156d0565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a391906150c4565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161244291906150b2565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615760565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615ad6833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615ad6833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e6573361130d565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615690565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274491906150c4565b905080846008015f8a81526020019081526020015f205f8282546127689190615359565b90915550501515979650505050505050565b5f80516020615b368339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d91906150b2565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155d4565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d8e565b60058111156128b4576128b4614d8e565b81526020016001820180546128c890614f40565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f40565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d8e565b141580156129cb57506001815160058111156129c8576129c8614d8e565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f78565b600381516005811115612a0157612a01614d8e565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a9190615235565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d8e565b021790555060208201516001820190612a87908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d8e565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615ab683398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615ab6833981519152546115a9906001600160a01b03168383613987565b60015f80516020615b3683398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615ad683398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115612e3657612e36614d8e565b6003811115612e4757612e47614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615690565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff168561538e565b612f9e919061555b565b915081866008015f8681526020019081526020015f205f828254612fc29190615359565b90915550612fd290508284615783565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615ad68339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d8e565b146130c657805160405163170cc93360e21b81526104da9190600401614f78565b5f8282608001516130d79190615690565b905083600201600a9054906101000a90046001600160401b031682604001516131009190615796565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d8e565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6115a9816140b0565b5f8281525f80516020615b56833981519152602052604081206002015481905f80516020615af683398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134519190810190615081565b6040518263ffffffff1660e01b815260040161346d91906150b2565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad91906150c4565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615ad683398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d8e565b148061355c575060048251600581111561355a5761355a614d8e565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d8e565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f78565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a91906150c4565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff1660058111156136f8576136f8614d8e565b600581111561370957613709614d8e565b815260200160018201805461371d90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f40565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d8e565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d8e565b021790555060208201516001820190613892908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615ab6833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615af683398151915242613a6c6060860160408701614d53565b6001600160401b0316111580613aa65750613a8a6202a30042615359565b613a9a6060860160408701614d53565b6001600160401b031610155b15613ae057613abb6060850160408601614d53565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af060608601866157c1565b61456a565b613b05613af060808601866157c1565b6030613b1460208601866157d5565b905014613b4657613b2860208501856157d5565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157d5565b90505f03613b7d57613b6284806157d5565b604051633e08a12560e11b81526004016104da929190615817565b5f60088201613b8c86806157d5565b604051613b9a929190615681565b90815260200160405180910390205414613bd357613bb884806157d5565b60405163a41f772f60e01b81526004016104da929190615817565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d53565b6001600160401b03168152602001613cc660608b018b6157c1565b613ccf9061582a565b8152602001613ce160808b018b6157c1565b613cea9061582a565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d18919061594c565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d599190810190615a03565b5f82815260068601602052604090209193509150613d77828261528a565b508160088401613d8788806157d5565b604051613d95929190615681565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd19085906004016150b2565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1191906150c4565b6040805160e081019091529091508060018152602001613e3189806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d8e565b021790555060208201516001820190613ed9908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157d5565b604051613f85929190615681565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d53565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d53565b61408260e0860160c08701615a46565b614093610100870160e08801615a5f565b6101008701356140ab61014089016101208a016150db565b6146fc565b6140b8613ff1565b5f80516020615ab68339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615af68339815191525f6001600160401b03808416908516111561414c5761414583856156b0565b9050614159565b61415684846156b0565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b031690615359565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615690565b6001600160401b03169052505b6060810151614210906064615796565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff1661538e565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b0316816040018181516142869190615359565b9052506040810180516001600160401b03871691906142a6908390615783565b905250600184015460408201516064916142cb91600160401b90910460ff169061538e565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b568339815191526020526040812060020180545f80516020615af6833981519152919060089061438590600160401b90046001600160401b0316615a7f565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a9a565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b91906150c4565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa91906150c4565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a8282615783565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150f6565b151590505b156145de576145a96020820182614c86565b6145b660208301836150f6565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150f6565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150f6565b90508110156115a95761463960208301836150f6565b614644600184615783565b8181106146535761465361513b565b905060200201602081019061466891906150db565b6001600160a01b031661467e60208401846150f6565b8381811061468e5761468e61513b565b90506020020160208101906146a391906150db565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615ad683398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615af683398151915290815560146149336060840160408501615a5f565b60ff161180614952575061494d6060830160408401615a5f565b60ff16155b15614986576149676060830160408401615a5f565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a5f565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d53565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a369190615235565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f40565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f8060408385031215614d3c575f80fd5b614d4583614bad565b946020939093013593505050565b5f60208284031215614d63575f80fd5b813561215081614cb0565b5f8060408385031215614d7f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614db257614db2614d8e565b9052565b5f5b83811015614dd0578181015183820152602001614db8565b50505f910152565b5f8151808452614def816020860160208601614db6565b601f01601f19169290920160200192915050565b60208152614e15602082018351614da2565b5f602083015160e06040840152614e30610100840182614dd8565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614eaa575f80fd5b61014080821215614eb9575f80fd5b8493508301359050614eca81614e83565b809150509250929050565b5f8060208385031215614ee6575f80fd5b82356001600160401b0380821115614efc575f80fd5b818501915085601f830112614f0f575f80fd5b813581811115614f1d575f80fd5b866020828501011115614f2e575f80fd5b60209290920196919550909350505050565b600181811c90821680614f5457607f821691505b602082108103614f7257634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614da2565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614fbc57614fbc614f86565b60405290565b604080519081016001600160401b0381118282101715614fbc57614fbc614f86565b604051601f8201601f191681016001600160401b038111828210171561500c5761500c614f86565b604052919050565b5f6001600160401b0382111561502c5761502c614f86565b50601f01601f191660200190565b5f82601f830112615049575f80fd5b815161505c61505782615014565b614fe4565b818152846020838601011115615070575f80fd5b610f47826020830160208701614db6565b5f60208284031215615091575f80fd5b81516001600160401b038111156150a6575f80fd5b610f478482850161503a565b602081525f6121506020830184614dd8565b5f602082840312156150d4575f80fd5b5051919050565b5f602082840312156150eb575f80fd5b813561215081614e83565b5f808335601e1984360301811261510b575f80fd5b8301803591506001600160401b03821115615124575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615163575f80fd5b9190910192915050565b5f82601f83011261517c575f80fd5b813561518a61505782615014565b81815284602083860101111561519e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151ca575f80fd5b6151d2614f9a565b82356001600160401b03808211156151e8575f80fd5b6151f43683870161516d565b83526020850135915080821115615209575f80fd5b506152163682860161516d565b602083015250604083013561522a81614cb0565b604082015292915050565b5f8251615163818460208701614db6565b601f8211156104e357805f5260205f20601f840160051c8101602085101561526b5750805b601f840160051c820191505b81811015611a32575f8155600101615277565b81516001600160401b038111156152a3576152a3614f86565b6152b7816152b18454614f40565b84615246565b602080601f8311600181146152ea575f84156152d35750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b82811015615318578886015182559484019460019091019084016152f9565b508582101561533557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e48615345565b5f63ffffffff80831681810361538457615384615345565b6001019392505050565b8082028115828204841417610e4857610e48615345565b5f808335601e198436030181126153ba575f80fd5b83016020810192503590506001600160401b038111156153d8575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154c357848303601f19018952813536889003605e1901811261544a575f80fd5b8701606061545882806153a5565b82875261546883880182846153e6565b92505050615478868301836153a5565b8683038888015261548a8382846153e6565b92505050604080830135925061549f83614cb0565b6001600160401b039290921694909101939093529783019790830190600101615425565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154f481614e83565b6001600160a01b031660608381019190915283013536849003601e1901811261551b575f80fd5b83016020810190356001600160401b03811115615536575f80fd5b8060051b3603821315615547575f80fd5b60808085015261369a60a08501828461540e565b5f8261557557634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061558e5761558e614d8e565b91905290565b5f805f606084860312156155a6575f80fd5b8351925060208401516155b881614cb0565b60408501519092506155c981614cb0565b809150509250925092565b5f80604083850312156155e5575f80fd5b825191506020830151614eca81614ba0565b5f60208083525f845461560981614f40565b806020870152604060018084165f811461562a576001811461564657615673565b60ff19851660408a0152604084151560051b8a01019550615673565b895f5260205f205f5b8581101561566a5781548b820186015290830190880161564f565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561226657612266615345565b6001600160401b0382811682821603908082111561226657612266615345565b5f80604083850312156156e1575f80fd5b82516001600160401b03808211156156f7575f80fd5b908401906060828703121561570a575f80fd5b615712614f9a565b82518152602083015161572481614e83565b602082015260408301518281111561573a575f80fd5b6157468882860161503a565b6040830152508094505050506020830151614eca81614ba0565b5f8060408385031215615771575f80fd5b825191506020830151614eca81614cb0565b81810381811115610e4857610e48615345565b6001600160401b038181168382160280821691908281146157b9576157b9615345565b505092915050565b5f8235603e19833603018112615163575f80fd5b5f808335601e198436030181126157ea575f80fd5b8301803591506001600160401b03821115615803575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153e6565b5f6040823603121561583a575f80fd5b615842614fc2565b61584b83614bad565b81526020808401356001600160401b0380821115615867575f80fd5b9085019036601f830112615879575f80fd5b81358181111561588b5761588b614f86565b8060051b915061589c848301614fe4565b81815291830184019184810190368411156158b5575f80fd5b938501935b838510156158df57843592506158cf83614e83565b82825293850193908501906158ba565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b03168252938301936001929092019190830190615923565b60208152815160208201525f602083015160e06040840152615972610100840182614dd8565b90506040840151601f19808584030160608601526159908383614dd8565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159c083836158f1565b925060a08601519150808584030160c0860152506159de82826158f1565b91505060c08401516159fb60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a14575f80fd5b8251915060208301516001600160401b03811115615a30575f80fd5b615a3c8582860161503a565b9150509250929050565b5f60208284031215615a56575f80fd5b61215082614c9f565b5f60208284031215615a6f575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361538457615384615345565b5f60208284031215615aaa575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212204ca9a50194199189e26dc263d6e7a3864a5bf7568967035b043b2c1b9f3f56a064736f6c63430008190033", +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) } -// ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20TokenStakingManagerMetaData.ABI instead. -var ERC20TokenStakingManagerABI = ERC20TokenStakingManagerMetaData.ABI - -// ERC20TokenStakingManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20TokenStakingManagerMetaData.Bin instead. -var ERC20TokenStakingManagerBin = ERC20TokenStakingManagerMetaData.Bin +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") -// DeployERC20TokenStakingManager deploys a new Ethereum contract, binding an instance of ERC20TokenStakingManager to it. -func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ERC20TokenStakingManager, error) { - parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") + return *new(uint8), err } - validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) - ERC20TokenStakingManagerBin = strings.ReplaceAll(ERC20TokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20TokenStakingManagerBin), backend, init) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil -} + return out0, err -// ERC20TokenStakingManager is an auto generated Go binding around an Ethereum contract. -type ERC20TokenStakingManager struct { - ERC20TokenStakingManagerCaller // Read-only binding to the contract - ERC20TokenStakingManagerTransactor // Write-only binding to the contract - ERC20TokenStakingManagerFilterer // Log filterer for contract events } -// ERC20TokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) } -// ERC20TokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) } -// ERC20TokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20TokenStakingManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") -// ERC20TokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC20TokenStakingManagerSession struct { - Contract *ERC20TokenStakingManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + if err != nil { + return *new([32]byte), err + } -// ERC20TokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC20TokenStakingManagerCallerSession struct { - Contract *ERC20TokenStakingManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) -// ERC20TokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC20TokenStakingManagerTransactorSession struct { - Contract *ERC20TokenStakingManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + return out0, err -// ERC20TokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20TokenStakingManagerRaw struct { - Contract *ERC20TokenStakingManager // Generic contract binding to access the raw methods on } -// ERC20TokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerCallerRaw struct { - Contract *ERC20TokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// ERC20TokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerTransactorRaw struct { - Contract *ERC20TokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// NewERC20TokenStakingManager creates a new instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManager(address common.Address, backend bind.ContractBackend) (*ERC20TokenStakingManager, error) { - contract, err := bindERC20TokenStakingManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil -} +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") -// NewERC20TokenStakingManagerCaller creates a new read-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*ERC20TokenStakingManagerCaller, error) { - contract, err := bindERC20TokenStakingManager(address, caller, nil, nil) if err != nil { - return nil, err + return *new([32]byte), err } - return &ERC20TokenStakingManagerCaller{contract: contract}, nil -} -// NewERC20TokenStakingManagerTransactor creates a new write-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20TokenStakingManagerTransactor, error) { - contract, err := bindERC20TokenStakingManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerTransactor{contract: contract}, nil + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// NewERC20TokenStakingManagerFilterer creates a new log filterer instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20TokenStakingManagerFilterer, error) { - contract, err := bindERC20TokenStakingManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerFilterer{contract: contract}, nil -} - -// bindERC20TokenStakingManager binds a generic wrapper to an already deployed contract. -func bindERC20TokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20TokenStakingManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.contract.Transfer(opts) +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") if err != nil { - return *new(uint32), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { - return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") if err != nil { - return *new(uint16), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { + return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) } -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) if err != nil { - return *new(uint8), err + return *new(Validator), err } - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) return out0, err } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) } -// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ERC20STAKINGMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ERC20_STAKING_MANAGER_STORAGE_LOCATION") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) if err != nil { - return *new([32]byte), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err } -// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) } -// ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) if err != nil { - return *new(uint8), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) if err != nil { - return *new(uint16), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) } -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. // -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) if err != nil { - return *new(uint64), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. // -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. // -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) } -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. // -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) } -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. // -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. // -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. // -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) } -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. // -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. // -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +} - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +} - return out0, err +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +} +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initialize", settings, token) } -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. // -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. -// -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initialize", settings, token) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. -// -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. +// Initialize is a paid mutator transaction binding the contract method 0xf74c607b. // // Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings, address token) returns() func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { @@ -1949,13411 +1464,166 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegato return nil, err } event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRegisteredIterator struct { - Event *ERC20TokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*ERC20TokenStakingManagerDelegatorRegistered, error) { - event := new(ERC20TokenStakingManagerDelegatorRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *ERC20TokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialValidatorCreatedIterator struct { - Event *ERC20TokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ERC20TokenStakingManagerInitialValidatorCreated, error) { - event := new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitializedIterator struct { - Event *ERC20TokenStakingManagerInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialized(log types.Log) (*ERC20TokenStakingManagerInitialized, error) { - event := new(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdatedIterator struct { - Event *ERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerUptimeUpdatedIterator{contract: _ERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerUptimeUpdated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*ERC20TokenStakingManagerUptimeUpdated, error) { - event := new(ERC20TokenStakingManagerUptimeUpdated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodCreatedIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ERC20TokenStakingManagerValidationPeriodCreated, error) { - event := new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodEndedIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ERC20TokenStakingManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ERC20TokenStakingManagerValidationPeriodEnded, error) { - event := new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ERC20TokenStakingManagerValidationPeriodRegistered, error) { - event := new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *ERC20TokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerValidatorRemovalInitialized, error) { - event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorWeightUpdateIterator struct { - Event *ERC20TokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ERC20TokenStakingManagerValidatorWeightUpdate, error) { - event := new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20MetaData contains all meta data concerning the IERC20 contract. -var IERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetaData.ABI instead. -var IERC20ABI = IERC20MetaData.ABI - -// IERC20 is an auto generated Go binding around an Ethereum contract. -type IERC20 struct { - IERC20Caller // Read-only binding to the contract - IERC20Transactor // Write-only binding to the contract - IERC20Filterer // Log filterer for contract events -} - -// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20Session struct { - Contract *IERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CallerSession struct { - Contract *IERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TransactorSession struct { - Contract *IERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20Raw struct { - Contract *IERC20 // Generic contract binding to access the raw methods on -} - -// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CallerRaw struct { - Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TransactorRaw struct { - Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. -func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { - contract, err := bindIERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil -} - -// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { - contract, err := bindIERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20Caller{contract: contract}, nil -} - -// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { - contract, err := bindIERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20Transactor{contract: contract}, nil -} - -// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. -func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { - contract, err := bindIERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20Filterer{contract: contract}, nil -} - -// bindIERC20 binds a generic wrapper to an already deployed contract. -func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. -type IERC20ApprovalIterator struct { - Event *IERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Approval represents a Approval event raised by the IERC20 contract. -type IERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. -type IERC20TransferIterator struct { - Event *IERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Transfer represents a Transfer event raised by the IERC20 contract. -type IERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20MintableMetaData contains all meta data concerning the IERC20Mintable contract. -var IERC20MintableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20MintableABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MintableMetaData.ABI instead. -var IERC20MintableABI = IERC20MintableMetaData.ABI - -// IERC20Mintable is an auto generated Go binding around an Ethereum contract. -type IERC20Mintable struct { - IERC20MintableCaller // Read-only binding to the contract - IERC20MintableTransactor // Write-only binding to the contract - IERC20MintableFilterer // Log filterer for contract events -} - -// IERC20MintableCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20MintableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MintableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20MintableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MintableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20MintableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MintableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20MintableSession struct { - Contract *IERC20Mintable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MintableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20MintableCallerSession struct { - Contract *IERC20MintableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20MintableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20MintableTransactorSession struct { - Contract *IERC20MintableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MintableRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20MintableRaw struct { - Contract *IERC20Mintable // Generic contract binding to access the raw methods on -} - -// IERC20MintableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20MintableCallerRaw struct { - Contract *IERC20MintableCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20MintableTransactorRaw struct { - Contract *IERC20MintableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Mintable creates a new instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20Mintable(address common.Address, backend bind.ContractBackend) (*IERC20Mintable, error) { - contract, err := bindIERC20Mintable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Mintable{IERC20MintableCaller: IERC20MintableCaller{contract: contract}, IERC20MintableTransactor: IERC20MintableTransactor{contract: contract}, IERC20MintableFilterer: IERC20MintableFilterer{contract: contract}}, nil -} - -// NewIERC20MintableCaller creates a new read-only instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*IERC20MintableCaller, error) { - contract, err := bindIERC20Mintable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20MintableCaller{contract: contract}, nil -} - -// NewIERC20MintableTransactor creates a new write-only instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MintableTransactor, error) { - contract, err := bindIERC20Mintable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20MintableTransactor{contract: contract}, nil -} - -// NewIERC20MintableFilterer creates a new log filterer instance of IERC20Mintable, bound to a specific deployed contract. -func NewIERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MintableFilterer, error) { - contract, err := bindIERC20Mintable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20MintableFilterer{contract: contract}, nil -} - -// bindIERC20Mintable binds a generic wrapper to an already deployed contract. -func bindIERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MintableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Mintable *IERC20MintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Mintable.Contract.IERC20MintableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Mintable *IERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Mintable *IERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Mintable.Contract.IERC20MintableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Mintable *IERC20MintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Mintable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Mintable *IERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Mintable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Mintable *IERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Mintable.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Mintable *IERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.Allowance(&_IERC20Mintable.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Mintable.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Mintable *IERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Mintable *IERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Mintable.Contract.BalanceOf(&_IERC20Mintable.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Mintable *IERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20Mintable.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Mintable *IERC20MintableSession) TotalSupply() (*big.Int, error) { - return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Mintable *IERC20MintableCallerSession) TotalSupply() (*big.Int, error) { - return _IERC20Mintable.Contract.TotalSupply(&_IERC20Mintable.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Approve(&_IERC20Mintable.TransactOpts, spender, value) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns() -func (_IERC20Mintable *IERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "mint", account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns() -func (_IERC20Mintable *IERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns() -func (_IERC20Mintable *IERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Mint(&_IERC20Mintable.TransactOpts, account, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.Transfer(&_IERC20Mintable.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20Mintable *IERC20MintableTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20Mintable.Contract.TransferFrom(&_IERC20Mintable.TransactOpts, from, to, value) -} - -// IERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Mintable contract. -type IERC20MintableApprovalIterator struct { - Event *IERC20MintableApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20MintableApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20MintableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20MintableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MintableApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20MintableApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20MintableApproval represents a Approval event raised by the IERC20Mintable contract. -type IERC20MintableApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MintableApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20MintableApprovalIterator{contract: _IERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20MintableApproval) - if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) ParseApproval(log types.Log) (*IERC20MintableApproval, error) { - event := new(IERC20MintableApproval) - if err := _IERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Mintable contract. -type IERC20MintableTransferIterator struct { - Event *IERC20MintableTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20MintableTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20MintableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20MintableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MintableTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20MintableTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20MintableTransfer represents a Transfer event raised by the IERC20Mintable contract. -type IERC20MintableTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MintableTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20MintableTransferIterator{contract: _IERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20MintableTransfer) - if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Mintable *IERC20MintableFilterer) ParseTransfer(log types.Log) (*IERC20MintableTransfer, error) { - event := new(IERC20MintableTransfer) - if err := _IERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20PermitMetaData contains all meta data concerning the IERC20Permit contract. -var IERC20PermitMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20PermitABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20PermitMetaData.ABI instead. -var IERC20PermitABI = IERC20PermitMetaData.ABI - -// IERC20Permit is an auto generated Go binding around an Ethereum contract. -type IERC20Permit struct { - IERC20PermitCaller // Read-only binding to the contract - IERC20PermitTransactor // Write-only binding to the contract - IERC20PermitFilterer // Log filterer for contract events -} - -// IERC20PermitCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20PermitCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20PermitTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20PermitFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20PermitSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20PermitSession struct { - Contract *IERC20Permit // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20PermitCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20PermitCallerSession struct { - Contract *IERC20PermitCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20PermitTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20PermitTransactorSession struct { - Contract *IERC20PermitTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20PermitRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20PermitRaw struct { - Contract *IERC20Permit // Generic contract binding to access the raw methods on -} - -// IERC20PermitCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20PermitCallerRaw struct { - Contract *IERC20PermitCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20PermitTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20PermitTransactorRaw struct { - Contract *IERC20PermitTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Permit creates a new instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20Permit(address common.Address, backend bind.ContractBackend) (*IERC20Permit, error) { - contract, err := bindIERC20Permit(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Permit{IERC20PermitCaller: IERC20PermitCaller{contract: contract}, IERC20PermitTransactor: IERC20PermitTransactor{contract: contract}, IERC20PermitFilterer: IERC20PermitFilterer{contract: contract}}, nil -} - -// NewIERC20PermitCaller creates a new read-only instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitCaller(address common.Address, caller bind.ContractCaller) (*IERC20PermitCaller, error) { - contract, err := bindIERC20Permit(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20PermitCaller{contract: contract}, nil -} - -// NewIERC20PermitTransactor creates a new write-only instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20PermitTransactor, error) { - contract, err := bindIERC20Permit(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20PermitTransactor{contract: contract}, nil -} - -// NewIERC20PermitFilterer creates a new log filterer instance of IERC20Permit, bound to a specific deployed contract. -func NewIERC20PermitFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20PermitFilterer, error) { - contract, err := bindIERC20Permit(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20PermitFilterer{contract: contract}, nil -} - -// bindIERC20Permit binds a generic wrapper to an already deployed contract. -func bindIERC20Permit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20PermitMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Permit *IERC20PermitRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Permit.Contract.IERC20PermitCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Permit *IERC20PermitRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Permit *IERC20PermitRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Permit *IERC20PermitCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Permit.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Permit *IERC20PermitTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Permit.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Permit *IERC20PermitTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Permit.Contract.contract.Transact(opts, method, params...) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IERC20Permit.contract.Call(opts, &out, "DOMAIN_SEPARATOR") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IERC20Permit *IERC20PermitCallerSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Permit.contract.Call(opts, &out, "nonces", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitSession) Nonces(owner common.Address) (*big.Int, error) { - return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IERC20Permit *IERC20PermitCallerSession) Nonces(owner common.Address) (*big.Int, error) { - return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IERC20Permit *IERC20PermitTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// IERC20TokenStakingManagerMetaData contains all meta data concerning the IERC20TokenStakingManager contract. -var IERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20TokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20TokenStakingManagerMetaData.ABI instead. -var IERC20TokenStakingManagerABI = IERC20TokenStakingManagerMetaData.ABI - -// IERC20TokenStakingManager is an auto generated Go binding around an Ethereum contract. -type IERC20TokenStakingManager struct { - IERC20TokenStakingManagerCaller // Read-only binding to the contract - IERC20TokenStakingManagerTransactor // Write-only binding to the contract - IERC20TokenStakingManagerFilterer // Log filterer for contract events -} - -// IERC20TokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20TokenStakingManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20TokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20TokenStakingManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20TokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20TokenStakingManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20TokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20TokenStakingManagerSession struct { - Contract *IERC20TokenStakingManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20TokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20TokenStakingManagerCallerSession struct { - Contract *IERC20TokenStakingManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TokenStakingManagerTransactorSession struct { - Contract *IERC20TokenStakingManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20TokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20TokenStakingManagerRaw struct { - Contract *IERC20TokenStakingManager // Generic contract binding to access the raw methods on -} - -// IERC20TokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20TokenStakingManagerCallerRaw struct { - Contract *IERC20TokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TokenStakingManagerTransactorRaw struct { - Contract *IERC20TokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20TokenStakingManager creates a new instance of IERC20TokenStakingManager, bound to a specific deployed contract. -func NewIERC20TokenStakingManager(address common.Address, backend bind.ContractBackend) (*IERC20TokenStakingManager, error) { - contract, err := bindIERC20TokenStakingManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManager{IERC20TokenStakingManagerCaller: IERC20TokenStakingManagerCaller{contract: contract}, IERC20TokenStakingManagerTransactor: IERC20TokenStakingManagerTransactor{contract: contract}, IERC20TokenStakingManagerFilterer: IERC20TokenStakingManagerFilterer{contract: contract}}, nil -} - -// NewIERC20TokenStakingManagerCaller creates a new read-only instance of IERC20TokenStakingManager, bound to a specific deployed contract. -func NewIERC20TokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*IERC20TokenStakingManagerCaller, error) { - contract, err := bindIERC20TokenStakingManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerCaller{contract: contract}, nil -} - -// NewIERC20TokenStakingManagerTransactor creates a new write-only instance of IERC20TokenStakingManager, bound to a specific deployed contract. -func NewIERC20TokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20TokenStakingManagerTransactor, error) { - contract, err := bindIERC20TokenStakingManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerTransactor{contract: contract}, nil -} - -// NewIERC20TokenStakingManagerFilterer creates a new log filterer instance of IERC20TokenStakingManager, bound to a specific deployed contract. -func NewIERC20TokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20TokenStakingManagerFilterer, error) { - contract, err := bindIERC20TokenStakingManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerFilterer{contract: contract}, nil -} - -// bindIERC20TokenStakingManager binds a generic wrapper to an already deployed contract. -func bindIERC20TokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20TokenStakingManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20TokenStakingManager.Contract.IERC20TokenStakingManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.IERC20TokenStakingManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.IERC20TokenStakingManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20TokenStakingManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ClaimDelegationFees(&_IERC20TokenStakingManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ClaimDelegationFees(&_IERC20TokenStakingManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteEndDelegation(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteEndDelegation(&_IERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteEndValidation(&_IERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteEndValidation(&_IERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 stakeAmount) returns(bytes32) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte, stakeAmount *big.Int) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID, stakeAmount) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 stakeAmount) returns(bytes32) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte, stakeAmount *big.Int) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, validationID, stakeAmount) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 stakeAmount) returns(bytes32) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte, stakeAmount *big.Int) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_IERC20TokenStakingManager.TransactOpts, validationID, stakeAmount) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeEndDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeEndValidation(&_IERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_IERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeValidatorSet(&_IERC20TokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.InitializeValidatorSet(&_IERC20TokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_IERC20TokenStakingManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_IERC20TokenStakingManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.SubmitUptimeProof(&_IERC20TokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IERC20TokenStakingManager.Contract.SubmitUptimeProof(&_IERC20TokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// IERC20TokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegationEndedIterator struct { - Event *IERC20TokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IERC20TokenStakingManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerDelegationEndedIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerDelegationEnded) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*IERC20TokenStakingManagerDelegationEnded, error) { - event := new(IERC20TokenStakingManagerDelegationEnded) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegatorAddedIterator struct { - Event *IERC20TokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IERC20TokenStakingManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerDelegatorAddedIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerDelegatorAdded) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*IERC20TokenStakingManagerDelegatorAdded, error) { - event := new(IERC20TokenStakingManagerDelegatorAdded) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegatorRegisteredIterator struct { - Event *IERC20TokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IERC20TokenStakingManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerDelegatorRegistered) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*IERC20TokenStakingManagerDelegatorRegistered, error) { - event := new(IERC20TokenStakingManagerDelegatorRegistered) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *IERC20TokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _IERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IERC20TokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(IERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerInitialValidatorCreatedIterator struct { - Event *IERC20TokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _IERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerInitialValidatorCreated) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IERC20TokenStakingManagerInitialValidatorCreated, error) { - event := new(IERC20TokenStakingManagerInitialValidatorCreated) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerUptimeUpdatedIterator struct { - Event *IERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IERC20TokenStakingManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerUptimeUpdatedIterator{contract: _IERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerUptimeUpdated) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*IERC20TokenStakingManagerUptimeUpdated, error) { - event := new(IERC20TokenStakingManagerUptimeUpdated) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidationPeriodCreatedIterator struct { - Event *IERC20TokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerValidationPeriodCreated) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IERC20TokenStakingManagerValidationPeriodCreated, error) { - event := new(IERC20TokenStakingManagerValidationPeriodCreated) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidationPeriodEndedIterator struct { - Event *IERC20TokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IERC20TokenStakingManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerValidationPeriodEnded) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IERC20TokenStakingManagerValidationPeriodEnded, error) { - event := new(IERC20TokenStakingManagerValidationPeriodEnded) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *IERC20TokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerValidationPeriodRegistered) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IERC20TokenStakingManagerValidationPeriodRegistered, error) { - event := new(IERC20TokenStakingManagerValidationPeriodRegistered) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *IERC20TokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IERC20TokenStakingManagerValidatorRemovalInitialized, error) { - event := new(IERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidatorWeightUpdateIterator struct { - Event *IERC20TokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20TokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IERC20TokenStakingManager contract. -type IERC20TokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &IERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _IERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20TokenStakingManagerValidatorWeightUpdate) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IERC20TokenStakingManager *IERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IERC20TokenStakingManagerValidatorWeightUpdate, error) { - event := new(IERC20TokenStakingManagerValidatorWeightUpdate) - if err := _IERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerMetaData contains all meta data concerning the IPoSValidatorManager contract. -var IPoSValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IPoSValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IPoSValidatorManagerMetaData.ABI instead. -var IPoSValidatorManagerABI = IPoSValidatorManagerMetaData.ABI - -// IPoSValidatorManager is an auto generated Go binding around an Ethereum contract. -type IPoSValidatorManager struct { - IPoSValidatorManagerCaller // Read-only binding to the contract - IPoSValidatorManagerTransactor // Write-only binding to the contract - IPoSValidatorManagerFilterer // Log filterer for contract events -} - -// IPoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IPoSValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IPoSValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IPoSValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IPoSValidatorManagerSession struct { - Contract *IPoSValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IPoSValidatorManagerCallerSession struct { - Contract *IPoSValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IPoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IPoSValidatorManagerTransactorSession struct { - Contract *IPoSValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IPoSValidatorManagerRaw struct { - Contract *IPoSValidatorManager // Generic contract binding to access the raw methods on -} - -// IPoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IPoSValidatorManagerCallerRaw struct { - Contract *IPoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// IPoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IPoSValidatorManagerTransactorRaw struct { - Contract *IPoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIPoSValidatorManager creates a new instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*IPoSValidatorManager, error) { - contract, err := bindIPoSValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IPoSValidatorManager{IPoSValidatorManagerCaller: IPoSValidatorManagerCaller{contract: contract}, IPoSValidatorManagerTransactor: IPoSValidatorManagerTransactor{contract: contract}, IPoSValidatorManagerFilterer: IPoSValidatorManagerFilterer{contract: contract}}, nil -} - -// NewIPoSValidatorManagerCaller creates a new read-only instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IPoSValidatorManagerCaller, error) { - contract, err := bindIPoSValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerCaller{contract: contract}, nil -} - -// NewIPoSValidatorManagerTransactor creates a new write-only instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoSValidatorManagerTransactor, error) { - contract, err := bindIPoSValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerTransactor{contract: contract}, nil -} - -// NewIPoSValidatorManagerFilterer creates a new log filterer instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoSValidatorManagerFilterer, error) { - contract, err := bindIPoSValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerFilterer{contract: contract}, nil -} - -// bindIPoSValidatorManager binds a generic wrapper to an already deployed contract. -func bindIPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IPoSValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoSValidatorManager *IPoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoSValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// IPoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegationEndedIterator struct { - Event *IPoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegationEndedIterator{contract: _IPoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegationEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*IPoSValidatorManagerDelegationEnded, error) { - event := new(IPoSValidatorManagerDelegationEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorAddedIterator struct { - Event *IPoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IPoSValidatorManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegatorAddedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorAdded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*IPoSValidatorManagerDelegatorAdded, error) { - event := new(IPoSValidatorManagerDelegatorAdded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRegisteredIterator struct { - Event *IPoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegatorRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*IPoSValidatorManagerDelegatorRegistered, error) { - event := new(IPoSValidatorManagerDelegatorRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRemovalInitializedIterator struct { - Event *IPoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerDelegatorRemovalInitialized, error) { - event := new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerInitialValidatorCreatedIterator struct { - Event *IPoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoSValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerInitialValidatorCreatedIterator{contract: _IPoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerInitialValidatorCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoSValidatorManagerInitialValidatorCreated, error) { - event := new(IPoSValidatorManagerInitialValidatorCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerUptimeUpdatedIterator struct { - Event *IPoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerUptimeUpdatedIterator{contract: _IPoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerUptimeUpdated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*IPoSValidatorManagerUptimeUpdated, error) { - event := new(IPoSValidatorManagerUptimeUpdated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodCreatedIterator struct { - Event *IPoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoSValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodCreatedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoSValidatorManagerValidationPeriodCreated, error) { - event := new(IPoSValidatorManagerValidationPeriodCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodEndedIterator struct { - Event *IPoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IPoSValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodEndedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IPoSValidatorManagerValidationPeriodEnded, error) { - event := new(IPoSValidatorManagerValidationPeriodEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodRegisteredIterator struct { - Event *IPoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoSValidatorManagerValidationPeriodRegistered, error) { - event := new(IPoSValidatorManagerValidationPeriodRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorRemovalInitializedIterator struct { - Event *IPoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoSValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerValidatorRemovalInitialized, error) { - event := new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorWeightUpdateIterator struct { - Event *IPoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoSValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidatorWeightUpdateIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidatorWeightUpdate) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoSValidatorManagerValidatorWeightUpdate, error) { - event := new(IPoSValidatorManagerValidatorWeightUpdate) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IRewardCalculatorMetaData contains all meta data concerning the IRewardCalculator contract. -var IRewardCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IRewardCalculatorABI is the input ABI used to generate the binding from. -// Deprecated: Use IRewardCalculatorMetaData.ABI instead. -var IRewardCalculatorABI = IRewardCalculatorMetaData.ABI - -// IRewardCalculator is an auto generated Go binding around an Ethereum contract. -type IRewardCalculator struct { - IRewardCalculatorCaller // Read-only binding to the contract - IRewardCalculatorTransactor // Write-only binding to the contract - IRewardCalculatorFilterer // Log filterer for contract events -} - -// IRewardCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. -type IRewardCalculatorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IRewardCalculatorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IRewardCalculatorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IRewardCalculatorSession struct { - Contract *IRewardCalculator // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IRewardCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IRewardCalculatorCallerSession struct { - Contract *IRewardCalculatorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IRewardCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IRewardCalculatorTransactorSession struct { - Contract *IRewardCalculatorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IRewardCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. -type IRewardCalculatorRaw struct { - Contract *IRewardCalculator // Generic contract binding to access the raw methods on -} - -// IRewardCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IRewardCalculatorCallerRaw struct { - Contract *IRewardCalculatorCaller // Generic read-only contract binding to access the raw methods on -} - -// IRewardCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IRewardCalculatorTransactorRaw struct { - Contract *IRewardCalculatorTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIRewardCalculator creates a new instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculator(address common.Address, backend bind.ContractBackend) (*IRewardCalculator, error) { - contract, err := bindIRewardCalculator(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IRewardCalculator{IRewardCalculatorCaller: IRewardCalculatorCaller{contract: contract}, IRewardCalculatorTransactor: IRewardCalculatorTransactor{contract: contract}, IRewardCalculatorFilterer: IRewardCalculatorFilterer{contract: contract}}, nil -} - -// NewIRewardCalculatorCaller creates a new read-only instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorCaller(address common.Address, caller bind.ContractCaller) (*IRewardCalculatorCaller, error) { - contract, err := bindIRewardCalculator(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IRewardCalculatorCaller{contract: contract}, nil -} - -// NewIRewardCalculatorTransactor creates a new write-only instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*IRewardCalculatorTransactor, error) { - contract, err := bindIRewardCalculator(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IRewardCalculatorTransactor{contract: contract}, nil -} - -// NewIRewardCalculatorFilterer creates a new log filterer instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*IRewardCalculatorFilterer, error) { - contract, err := bindIRewardCalculator(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IRewardCalculatorFilterer{contract: contract}, nil -} - -// bindIRewardCalculator binds a generic wrapper to an already deployed contract. -func bindIRewardCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IRewardCalculatorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IRewardCalculator *IRewardCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IRewardCalculator.Contract.IRewardCalculatorCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IRewardCalculator *IRewardCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IRewardCalculator *IRewardCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IRewardCalculator *IRewardCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IRewardCalculator.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IRewardCalculator.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IRewardCalculator.Contract.contract.Transact(opts, method, params...) -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorCaller) CalculateReward(opts *bind.CallOpts, stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - var out []interface{} - err := _IRewardCalculator.contract.Call(opts, &out, "calculateReward", stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorCallerSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) -} - -// IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. -var IValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IValidatorManagerMetaData.ABI instead. -var IValidatorManagerABI = IValidatorManagerMetaData.ABI - -// IValidatorManager is an auto generated Go binding around an Ethereum contract. -type IValidatorManager struct { - IValidatorManagerCaller // Read-only binding to the contract - IValidatorManagerTransactor // Write-only binding to the contract - IValidatorManagerFilterer // Log filterer for contract events -} - -// IValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IValidatorManagerSession struct { - Contract *IValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IValidatorManagerCallerSession struct { - Contract *IValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IValidatorManagerTransactorSession struct { - Contract *IValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IValidatorManagerRaw struct { - Contract *IValidatorManager // Generic contract binding to access the raw methods on -} - -// IValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IValidatorManagerCallerRaw struct { - Contract *IValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// IValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IValidatorManagerTransactorRaw struct { - Contract *IValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIValidatorManager creates a new instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManager(address common.Address, backend bind.ContractBackend) (*IValidatorManager, error) { - contract, err := bindIValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IValidatorManager{IValidatorManagerCaller: IValidatorManagerCaller{contract: contract}, IValidatorManagerTransactor: IValidatorManagerTransactor{contract: contract}, IValidatorManagerFilterer: IValidatorManagerFilterer{contract: contract}}, nil -} - -// NewIValidatorManagerCaller creates a new read-only instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IValidatorManagerCaller, error) { - contract, err := bindIValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IValidatorManagerCaller{contract: contract}, nil -} - -// NewIValidatorManagerTransactor creates a new write-only instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IValidatorManagerTransactor, error) { - contract, err := bindIValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IValidatorManagerTransactor{contract: contract}, nil -} - -// NewIValidatorManagerFilterer creates a new log filterer instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IValidatorManagerFilterer, error) { - contract, err := bindIValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IValidatorManagerFilterer{contract: contract}, nil -} - -// bindIValidatorManager binds a generic wrapper to an already deployed contract. -func bindIValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IValidatorManager *IValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IValidatorManager.Contract.IValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IValidatorManager *IValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IValidatorManager *IValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IValidatorManager *IValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IValidatorManager *IValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IValidatorManager *IValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// IValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IValidatorManager contract. -type IValidatorManagerInitialValidatorCreatedIterator struct { - Event *IValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IValidatorManager contract. -type IValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerInitialValidatorCreatedIterator{contract: _IValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerInitialValidatorCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IValidatorManagerInitialValidatorCreated, error) { - event := new(IValidatorManagerInitialValidatorCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodCreatedIterator struct { - Event *IValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodCreatedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IValidatorManagerValidationPeriodCreated, error) { - event := new(IValidatorManagerValidationPeriodCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodEndedIterator struct { - Event *IValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodEndedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodEnded) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IValidatorManagerValidationPeriodEnded, error) { - event := new(IValidatorManagerValidationPeriodEnded) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodRegisteredIterator struct { - Event *IValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodRegisteredIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodRegistered) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IValidatorManagerValidationPeriodRegistered, error) { - event := new(IValidatorManagerValidationPeriodRegistered) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IValidatorManager contract. -type IValidatorManagerValidatorRemovalInitializedIterator struct { - Event *IValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IValidatorManager contract. -type IValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidatorRemovalInitializedIterator{contract: _IValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidatorRemovalInitialized) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IValidatorManagerValidatorRemovalInitialized, error) { - event := new(IValidatorManagerValidatorRemovalInitialized) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IValidatorManager contract. -type IValidatorManagerValidatorWeightUpdateIterator struct { - Event *IValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IValidatorManager contract. -type IValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidatorWeightUpdateIterator{contract: _IValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidatorWeightUpdate) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IValidatorManagerValidatorWeightUpdate, error) { - event := new(IValidatorManagerValidatorWeightUpdate) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. -var IWarpMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWarpMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use IWarpMessengerMetaData.ABI instead. -var IWarpMessengerABI = IWarpMessengerMetaData.ABI - -// IWarpMessenger is an auto generated Go binding around an Ethereum contract. -type IWarpMessenger struct { - IWarpMessengerCaller // Read-only binding to the contract - IWarpMessengerTransactor // Write-only binding to the contract - IWarpMessengerFilterer // Log filterer for contract events -} - -// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWarpMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWarpMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWarpMessengerSession struct { - Contract *IWarpMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWarpMessengerCallerSession struct { - Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWarpMessengerTransactorSession struct { - Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWarpMessengerRaw struct { - Contract *IWarpMessenger // Generic contract binding to access the raw methods on -} - -// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWarpMessengerCallerRaw struct { - Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactorRaw struct { - Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { - contract, err := bindIWarpMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil -} - -// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { - contract, err := bindIWarpMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerCaller{contract: contract}, nil -} - -// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { - contract, err := bindIWarpMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerTransactor{contract: contract}, nil -} - -// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { - contract, err := bindIWarpMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWarpMessengerFilterer{contract: contract}, nil -} - -// bindIWarpMessenger binds a generic wrapper to an already deployed contract. -func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWarpMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) - - outstruct := new(struct { - WarpBlockHash WarpBlockHash - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) - - outstruct := new(struct { - Message WarpMessage - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessageIterator struct { - Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWarpMessengerSendWarpMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWarpMessengerSendWarpMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessage struct { - Sender common.Address - MessageID [32]byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil -} - -// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// InitializableMetaData contains all meta data concerning the Initializable contract. -var InitializableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// InitializableABI is the input ABI used to generate the binding from. -// Deprecated: Use InitializableMetaData.ABI instead. -var InitializableABI = InitializableMetaData.ABI - -// Initializable is an auto generated Go binding around an Ethereum contract. -type Initializable struct { - InitializableCaller // Read-only binding to the contract - InitializableTransactor // Write-only binding to the contract - InitializableFilterer // Log filterer for contract events -} - -// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. -type InitializableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type InitializableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type InitializableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type InitializableSession struct { - Contract *Initializable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type InitializableCallerSession struct { - Contract *InitializableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type InitializableTransactorSession struct { - Contract *InitializableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. -type InitializableRaw struct { - Contract *Initializable // Generic contract binding to access the raw methods on -} - -// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type InitializableCallerRaw struct { - Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on -} - -// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type InitializableTransactorRaw struct { - Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. -func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { - contract, err := bindInitializable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil -} - -// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { - contract, err := bindInitializable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &InitializableCaller{contract: contract}, nil -} - -// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { - contract, err := bindInitializable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &InitializableTransactor{contract: contract}, nil -} - -// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. -func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { - contract, err := bindInitializable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &InitializableFilterer{contract: contract}, nil -} - -// bindInitializable binds a generic wrapper to an already deployed contract. -func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := InitializableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transact(opts, method, params...) -} - -// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. -type InitializableInitializedIterator struct { - Event *InitializableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *InitializableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *InitializableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *InitializableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// InitializableInitialized represents a Initialized event raised by the Initializable contract. -type InitializableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { - - logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { - - logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerMetaData contains all meta data concerning the PoSValidatorManager contract. -var PoSValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// PoSValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use PoSValidatorManagerMetaData.ABI instead. -var PoSValidatorManagerABI = PoSValidatorManagerMetaData.ABI - -// PoSValidatorManager is an auto generated Go binding around an Ethereum contract. -type PoSValidatorManager struct { - PoSValidatorManagerCaller // Read-only binding to the contract - PoSValidatorManagerTransactor // Write-only binding to the contract - PoSValidatorManagerFilterer // Log filterer for contract events -} - -// PoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type PoSValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type PoSValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type PoSValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type PoSValidatorManagerSession struct { - Contract *PoSValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type PoSValidatorManagerCallerSession struct { - Contract *PoSValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// PoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type PoSValidatorManagerTransactorSession struct { - Contract *PoSValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type PoSValidatorManagerRaw struct { - Contract *PoSValidatorManager // Generic contract binding to access the raw methods on -} - -// PoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type PoSValidatorManagerCallerRaw struct { - Contract *PoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// PoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type PoSValidatorManagerTransactorRaw struct { - Contract *PoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewPoSValidatorManager creates a new instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*PoSValidatorManager, error) { - contract, err := bindPoSValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &PoSValidatorManager{PoSValidatorManagerCaller: PoSValidatorManagerCaller{contract: contract}, PoSValidatorManagerTransactor: PoSValidatorManagerTransactor{contract: contract}, PoSValidatorManagerFilterer: PoSValidatorManagerFilterer{contract: contract}}, nil -} - -// NewPoSValidatorManagerCaller creates a new read-only instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoSValidatorManagerCaller, error) { - contract, err := bindPoSValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &PoSValidatorManagerCaller{contract: contract}, nil -} - -// NewPoSValidatorManagerTransactor creates a new write-only instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoSValidatorManagerTransactor, error) { - contract, err := bindPoSValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &PoSValidatorManagerTransactor{contract: contract}, nil -} - -// NewPoSValidatorManagerFilterer creates a new log filterer instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoSValidatorManagerFilterer, error) { - contract, err := bindPoSValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &PoSValidatorManagerFilterer{contract: contract}, nil -} - -// bindPoSValidatorManager binds a generic wrapper to an already deployed contract. -func bindPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := PoSValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_PoSValidatorManager *PoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoSValidatorManager.Contract.PoSValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_PoSValidatorManager *PoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_PoSValidatorManager *PoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_PoSValidatorManager *PoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoSValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoSValidatorManager *PoSValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoSValidatorManager *PoSValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoSValidatorManager *PoSValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoSValidatorManager *PoSValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoSValidatorManager *PoSValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "valueToWeight", value) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_PoSValidatorManager *PoSValidatorManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "weightToValue", weight) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_PoSValidatorManager *PoSValidatorManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// PoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegationEndedIterator struct { - Event *PoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegationEndedIterator{contract: _PoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegationEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*PoSValidatorManagerDelegationEnded, error) { - event := new(PoSValidatorManagerDelegationEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorAddedIterator struct { - Event *PoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*PoSValidatorManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegatorAddedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegatorAdded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*PoSValidatorManagerDelegatorAdded, error) { - event := new(PoSValidatorManagerDelegatorAdded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRegisteredIterator struct { - Event *PoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegatorRegisteredIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegatorRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*PoSValidatorManagerDelegatorRegistered, error) { - event := new(PoSValidatorManagerDelegatorRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRemovalInitializedIterator struct { - Event *PoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*PoSValidatorManagerDelegatorRemovalInitialized, error) { - event := new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitialValidatorCreatedIterator struct { - Event *PoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoSValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerInitialValidatorCreatedIterator{contract: _PoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerInitialValidatorCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoSValidatorManagerInitialValidatorCreated, error) { - event := new(PoSValidatorManagerInitialValidatorCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitializedIterator struct { - Event *PoSValidatorManagerInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerInitialized represents a Initialized event raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoSValidatorManagerInitializedIterator, error) { - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &PoSValidatorManagerInitializedIterator{contract: _PoSValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoSValidatorManagerInitialized, error) { - event := new(PoSValidatorManagerInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the PoSValidatorManager contract. -type PoSValidatorManagerUptimeUpdatedIterator struct { - Event *PoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the PoSValidatorManager contract. -type PoSValidatorManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerUptimeUpdatedIterator{contract: _PoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerUptimeUpdated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*PoSValidatorManagerUptimeUpdated, error) { - event := new(PoSValidatorManagerUptimeUpdated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodCreatedIterator struct { - Event *PoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoSValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidationPeriodCreatedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidationPeriodCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoSValidatorManagerValidationPeriodCreated, error) { - event := new(PoSValidatorManagerValidationPeriodCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodEndedIterator struct { - Event *PoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoSValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidationPeriodEndedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidationPeriodEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoSValidatorManagerValidationPeriodEnded, error) { - event := new(PoSValidatorManagerValidationPeriodEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodRegisteredIterator struct { - Event *PoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidationPeriodRegisteredIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidationPeriodRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoSValidatorManagerValidationPeriodRegistered, error) { - event := new(PoSValidatorManagerValidationPeriodRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorRemovalInitializedIterator struct { - Event *PoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoSValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoSValidatorManagerValidatorRemovalInitialized, error) { - event := new(PoSValidatorManagerValidatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorWeightUpdateIterator struct { - Event *PoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoSValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidatorWeightUpdateIterator{contract: _PoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidatorWeightUpdate) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoSValidatorManagerValidatorWeightUpdate, error) { - event := new(PoSValidatorManagerValidatorWeightUpdate) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. -var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. -var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI - -// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeable struct { - ReentrancyGuardUpgradeableCaller // Read-only binding to the contract - ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract - ReentrancyGuardUpgradeableFilterer // Log filterer for contract events -} - -// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReentrancyGuardUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReentrancyGuardUpgradeableSession struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReentrancyGuardUpgradeableCallerSession struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReentrancyGuardUpgradeableTransactorSession struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableRaw struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCallerRaw struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactorRaw struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { - contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil -} - -// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { - contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil -} - -// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. -func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitializedIterator struct { - Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. -var SafeERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122044774e8ae9cb3b510a51dacb03d3b3d6bee0ee00ebb240bae28efc962ab9298a64736f6c63430008190033", -} - -// SafeERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeERC20MetaData.ABI instead. -var SafeERC20ABI = SafeERC20MetaData.ABI - -// SafeERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeERC20MetaData.Bin instead. -var SafeERC20Bin = SafeERC20MetaData.Bin - -// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. -func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// SafeERC20 is an auto generated Go binding around an Ethereum contract. -type SafeERC20 struct { - SafeERC20Caller // Read-only binding to the contract - SafeERC20Transactor // Write-only binding to the contract - SafeERC20Filterer // Log filterer for contract events -} - -// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type SafeERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeERC20Session struct { - Contract *SafeERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeERC20CallerSession struct { - Contract *SafeERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeERC20TransactorSession struct { - Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type SafeERC20Raw struct { - Contract *SafeERC20 // Generic contract binding to access the raw methods on -} - -// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeERC20CallerRaw struct { - Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeERC20TransactorRaw struct { - Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { - contract, err := bindSafeERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { - contract, err := bindSafeERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeERC20Caller{contract: contract}, nil -} - -// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { - contract, err := bindSafeERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeERC20Transactor{contract: contract}, nil -} - -// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { - contract, err := bindSafeERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeERC20Filterer{contract: contract}, nil -} - -// bindSafeERC20 binds a generic wrapper to an already deployed contract. -func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transact(opts, method, params...) -} - -// SafeERC20TransferFromMetaData contains all meta data concerning the SafeERC20TransferFrom contract. -var SafeERC20TransferFromMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206a67e765459c7c24f187543272046fd3214ad556da06c492ce0a4aee92d9549264736f6c63430008190033", -} - -// SafeERC20TransferFromABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeERC20TransferFromMetaData.ABI instead. -var SafeERC20TransferFromABI = SafeERC20TransferFromMetaData.ABI - -// SafeERC20TransferFromBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeERC20TransferFromMetaData.Bin instead. -var SafeERC20TransferFromBin = SafeERC20TransferFromMetaData.Bin - -// DeploySafeERC20TransferFrom deploys a new Ethereum contract, binding an instance of SafeERC20TransferFrom to it. -func DeploySafeERC20TransferFrom(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20TransferFrom, error) { - parsed, err := SafeERC20TransferFromMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20TransferFromBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil -} - -// SafeERC20TransferFrom is an auto generated Go binding around an Ethereum contract. -type SafeERC20TransferFrom struct { - SafeERC20TransferFromCaller // Read-only binding to the contract - SafeERC20TransferFromTransactor // Write-only binding to the contract - SafeERC20TransferFromFilterer // Log filterer for contract events -} - -// SafeERC20TransferFromCaller is an auto generated read-only Go binding around an Ethereum contract. -type SafeERC20TransferFromCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeERC20TransferFromTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeERC20TransferFromFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20TransferFromSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeERC20TransferFromSession struct { - Contract *SafeERC20TransferFrom // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20TransferFromCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeERC20TransferFromCallerSession struct { - Contract *SafeERC20TransferFromCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeERC20TransferFromTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeERC20TransferFromTransactorSession struct { - Contract *SafeERC20TransferFromTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20TransferFromRaw is an auto generated low-level Go binding around an Ethereum contract. -type SafeERC20TransferFromRaw struct { - Contract *SafeERC20TransferFrom // Generic contract binding to access the raw methods on -} - -// SafeERC20TransferFromCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeERC20TransferFromCallerRaw struct { - Contract *SafeERC20TransferFromCaller // Generic read-only contract binding to access the raw methods on -} - -// SafeERC20TransferFromTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeERC20TransferFromTransactorRaw struct { - Contract *SafeERC20TransferFromTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeERC20TransferFrom creates a new instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFrom(address common.Address, backend bind.ContractBackend) (*SafeERC20TransferFrom, error) { - contract, err := bindSafeERC20TransferFrom(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeERC20TransferFrom{SafeERC20TransferFromCaller: SafeERC20TransferFromCaller{contract: contract}, SafeERC20TransferFromTransactor: SafeERC20TransferFromTransactor{contract: contract}, SafeERC20TransferFromFilterer: SafeERC20TransferFromFilterer{contract: contract}}, nil -} - -// NewSafeERC20TransferFromCaller creates a new read-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromCaller(address common.Address, caller bind.ContractCaller) (*SafeERC20TransferFromCaller, error) { - contract, err := bindSafeERC20TransferFrom(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromCaller{contract: contract}, nil -} - -// NewSafeERC20TransferFromTransactor creates a new write-only instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20TransferFromTransactor, error) { - contract, err := bindSafeERC20TransferFrom(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromTransactor{contract: contract}, nil -} - -// NewSafeERC20TransferFromFilterer creates a new log filterer instance of SafeERC20TransferFrom, bound to a specific deployed contract. -func NewSafeERC20TransferFromFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20TransferFromFilterer, error) { - contract, err := bindSafeERC20TransferFrom(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeERC20TransferFromFilterer{contract: contract}, nil -} - -// bindSafeERC20TransferFrom binds a generic wrapper to an already deployed contract. -func bindSafeERC20TransferFrom(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeERC20TransferFromMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20TransferFrom *SafeERC20TransferFromRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.SafeERC20TransferFromTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20TransferFrom *SafeERC20TransferFromCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20TransferFrom.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20TransferFrom *SafeERC20TransferFromTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20TransferFrom.Contract.contract.Transact(opts, method, params...) -} - -// ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. -var ValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use ValidatorManagerMetaData.ABI instead. -var ValidatorManagerABI = ValidatorManagerMetaData.ABI - -// ValidatorManager is an auto generated Go binding around an Ethereum contract. -type ValidatorManager struct { - ValidatorManagerCaller // Read-only binding to the contract - ValidatorManagerTransactor // Write-only binding to the contract - ValidatorManagerFilterer // Log filterer for contract events -} - -// ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ValidatorManagerSession struct { - Contract *ValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ValidatorManagerCallerSession struct { - Contract *ValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ValidatorManagerTransactorSession struct { - Contract *ValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ValidatorManagerRaw struct { - Contract *ValidatorManager // Generic contract binding to access the raw methods on -} - -// ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ValidatorManagerCallerRaw struct { - Contract *ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ValidatorManagerTransactorRaw struct { - Contract *ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewValidatorManager creates a new instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManager(address common.Address, backend bind.ContractBackend) (*ValidatorManager, error) { - contract, err := bindValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil -} - -// NewValidatorManagerCaller creates a new read-only instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ValidatorManagerCaller, error) { - contract, err := bindValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ValidatorManagerCaller{contract: contract}, nil -} - -// NewValidatorManagerTransactor creates a new write-only instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorManagerTransactor, error) { - contract, err := bindValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ValidatorManagerTransactor{contract: contract}, nil -} - -// NewValidatorManagerFilterer creates a new log filterer instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorManagerFilterer, error) { - contract, err := bindValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ValidatorManagerFilterer{contract: contract}, nil -} - -// bindValidatorManager binds a generic wrapper to an already deployed contract. -func bindValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorManager *ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorManager.Contract.ValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorManager *ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorManager *ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorManager *ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorManager *ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorManager *ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) + return event, nil } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) -} +// ERC20TokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRegisteredIterator struct { + Event *ERC20TokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { + return it.fail } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) +// ERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRegisteredIterator, error) { -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) -} +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerDelegatorRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*ERC20TokenStakingManagerDelegatorRegistered, error) { + event := new(ERC20TokenStakingManagerDelegatorRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ValidatorManager contract. -type ValidatorManagerInitialValidatorCreatedIterator struct { - Event *ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { + Event *ERC20TokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15367,7 +1637,7 @@ type ValidatorManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15376,7 +1646,7 @@ func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialValidatorCreated) + it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15391,7 +1661,7 @@ func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialValidatorCreated) + it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15407,61 +1677,60 @@ func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Error() error { +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Close() error { +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ValidatorManager contract. -type ValidatorManagerInitialValidatorCreated struct { +// ERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte ValidationID [32]byte - NodeID common.Hash - Weight *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ValidatorManagerInitialValidatorCreatedIterator, error) { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ValidatorManagerInitialValidatorCreatedIterator{contract: _ValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -15471,8 +1740,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerInitialValidatorCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -15493,21 +1762,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated( }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ValidatorManagerInitialValidatorCreated, error) { - event := new(ValidatorManagerInitialValidatorCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerDelegatorRemovalInitialized, error) { + event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ValidatorManager contract. -type ValidatorManagerInitializedIterator struct { - Event *ValidatorManagerInitialized // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialValidatorCreatedIterator struct { + Event *ERC20TokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15521,7 +1790,7 @@ type ValidatorManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerInitializedIterator) Next() bool { +func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15530,7 +1799,7 @@ func (it *ValidatorManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialized) + it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15545,7 +1814,7 @@ func (it *ValidatorManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialized) + it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15561,41 +1830,61 @@ func (it *ValidatorManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerInitializedIterator) Error() error { +func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerInitializedIterator) Close() error { +func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerInitialized represents a Initialized event raised by the ValidatorManager contract. -type ValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// ERC20TokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatorManagerInitializedIterator, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } - return &ValidatorManagerInitializedIterator{contract: _ValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialized) (event.Subscription, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } @@ -15605,8 +1894,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.W select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(ERC20TokenStakingManagerInitialValidatorCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return err } event.Raw = log @@ -15627,21 +1916,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.W }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ValidatorManagerInitialized, error) { - event := new(ValidatorManagerInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ERC20TokenStakingManagerInitialValidatorCreated, error) { + event := new(ERC20TokenStakingManagerInitialValidatorCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodCreatedIterator struct { - Event *ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitializedIterator struct { + Event *ERC20TokenStakingManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15655,7 +1944,7 @@ type ValidatorManagerValidationPeriodCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { +func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15664,7 +1953,7 @@ func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodCreated) + it.Event = new(ERC20TokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15679,7 +1968,7 @@ func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodCreated) + it.Event = new(ERC20TokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15695,71 +1984,41 @@ func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Error() error { +func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Close() error { +func (it *ERC20TokenStakingManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos +// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &ValidatorManagerValidationPeriodCreatedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialized) (event.Subscription, error) { - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -15769,8 +2028,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + event := new(ERC20TokenStakingManagerInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -15791,21 +2050,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated( }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ValidatorManagerValidationPeriodCreated, error) { - event := new(ValidatorManagerValidationPeriodCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialized(log types.Log) (*ERC20TokenStakingManagerInitialized, error) { + event := new(ERC20TokenStakingManagerInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodEndedIterator struct { - Event *ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerUptimeUpdatedIterator struct { + Event *ERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15819,7 +2078,7 @@ type ValidatorManagerValidationPeriodEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15828,7 +2087,7 @@ func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodEnded) + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15843,7 +2102,7 @@ func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodEnded) + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15859,60 +2118,52 @@ func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodEndedIterator) Error() error { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidationPeriodEndedIterator) Close() error { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodEnded struct { +// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerUptimeUpdated struct { ValidationID [32]byte - Status uint8 + Uptime uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ValidatorManagerValidationPeriodEndedIterator, error) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &ValidatorManagerValidationPeriodEndedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerUptimeUpdatedIterator{contract: _ERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -15922,8 +2173,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodEnded) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + event := new(ERC20TokenStakingManagerUptimeUpdated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -15944,21 +2195,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(op }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ValidatorManagerValidationPeriodEnded, error) { - event := new(ValidatorManagerValidationPeriodEnded) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*ERC20TokenStakingManagerUptimeUpdated, error) { + event := new(ERC20TokenStakingManagerUptimeUpdated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodRegisteredIterator struct { - Event *ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodCreatedIterator struct { + Event *ERC20TokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15972,7 +2223,7 @@ type ValidatorManagerValidationPeriodRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15981,7 +2232,7 @@ func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodRegistered) + it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15996,7 +2247,7 @@ func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodRegistered) + it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16012,53 +2263,71 @@ func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Error() error { +func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Close() error { +func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos +// ERC20TokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ValidatorManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } - return &ValidatorManagerValidationPeriodRegisteredIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } @@ -16068,8 +2337,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegister select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodRegistered) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + event := new(ERC20TokenStakingManagerValidationPeriodCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return err } event.Raw = log @@ -16090,21 +2359,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegister }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ValidatorManagerValidationPeriodRegistered, error) { - event := new(ValidatorManagerValidationPeriodRegistered) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ERC20TokenStakingManagerValidationPeriodCreated, error) { + event := new(ERC20TokenStakingManagerValidationPeriodCreated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ValidatorManager contract. -type ValidatorManagerValidatorRemovalInitializedIterator struct { - Event *ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodEndedIterator struct { + Event *ERC20TokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16118,7 +2387,7 @@ type ValidatorManagerValidatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { +func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16127,7 +2396,7 @@ func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorRemovalInitialized) + it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16142,7 +2411,7 @@ func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorRemovalInitialized) + it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16158,62 +2427,60 @@ func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Error() error { +func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Close() error { +func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ValidatorManager contract. -type ValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// ERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ValidatorManagerValidatorRemovalInitializedIterator, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ERC20TokenStakingManagerValidationPeriodEndedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } - return &ValidatorManagerValidatorRemovalInitializedIterator{contract: _ValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } @@ -16223,8 +2490,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitiali select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidatorRemovalInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + event := new(ERC20TokenStakingManagerValidationPeriodEnded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return err } event.Raw = log @@ -16245,21 +2512,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitiali }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ValidatorManagerValidatorRemovalInitialized, error) { - event := new(ValidatorManagerValidatorRemovalInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ERC20TokenStakingManagerValidationPeriodEnded, error) { + event := new(ERC20TokenStakingManagerValidationPeriodEnded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ValidatorManager contract. -type ValidatorManagerValidatorWeightUpdateIterator struct { - Event *ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { + Event *ERC20TokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16273,7 +2540,7 @@ type ValidatorManagerValidatorWeightUpdateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { +func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16282,7 +2549,7 @@ func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorWeightUpdate) + it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16297,7 +2564,7 @@ func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorWeightUpdate) + it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16313,62 +2580,53 @@ func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Error() error { +func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Close() error { +func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ValidatorManager contract. -type ValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// ERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ValidatorManagerValidatorWeightUpdateIterator, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } - return &ValidatorManagerValidatorWeightUpdateIterator{contract: _ValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } @@ -16378,8 +2636,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidatorWeightUpdate) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + event := new(ERC20TokenStakingManagerValidationPeriodRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return err } event.Raw = log @@ -16400,533 +2658,324 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(op }), nil } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ValidatorManagerValidatorWeightUpdate, error) { - event := new(ValidatorManagerValidatorWeightUpdate) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ERC20TokenStakingManagerValidationPeriodRegistered, error) { + event := new(ERC20TokenStakingManagerValidationPeriodRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. -var ValidatorMessagesMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", -} - -// ValidatorMessagesABI is the input ABI used to generate the binding from. -// Deprecated: Use ValidatorMessagesMetaData.ABI instead. -var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI - -// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ValidatorMessagesMetaData.Bin instead. -var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin - -// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. -func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { - parsed, err := ValidatorMessagesMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil -} - -// ValidatorMessages is an auto generated Go binding around an Ethereum contract. -type ValidatorMessages struct { - ValidatorMessagesCaller // Read-only binding to the contract - ValidatorMessagesTransactor // Write-only binding to the contract - ValidatorMessagesFilterer // Log filterer for contract events -} - -// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. -type ValidatorMessagesCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ValidatorMessagesTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ValidatorMessagesFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ValidatorMessagesSession struct { - Contract *ValidatorMessages // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ValidatorMessagesCallerSession struct { - Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ValidatorMessagesTransactorSession struct { - Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. -type ValidatorMessagesRaw struct { - Contract *ValidatorMessages // Generic contract binding to access the raw methods on -} - -// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ValidatorMessagesCallerRaw struct { - Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on -} - -// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ValidatorMessagesTransactorRaw struct { - Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { - contract, err := bindValidatorMessages(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil -} - -// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { - contract, err := bindValidatorMessages(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ValidatorMessagesCaller{contract: contract}, nil -} - -// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { - contract, err := bindValidatorMessages(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ValidatorMessagesTransactor{contract: contract}, nil -} - -// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { - contract, err := bindValidatorMessages(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ValidatorMessagesFilterer{contract: contract}, nil -} - -// bindValidatorMessages binds a generic wrapper to an already deployed contract. -func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ValidatorMessagesMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorMessages.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) - - if err != nil { - return *new([32]byte), *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) - - return out0, out1, err - -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) -} - -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} +// ERC20TokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorRemovalInitializedIterator struct { + Event *ERC20TokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) - - if err != nil { - return *new([]byte), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) -} - -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) - - if err != nil { - return *new([]byte), err + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) -} - -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) - - if err != nil { - return *new([]byte), err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() } +} - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail } -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +// ERC20TokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { - if err != nil { - return *new(ValidatorMessagesValidationPeriod), err + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) - - return out0, err - -} - -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. -// -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { - return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { - return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) -} +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. -// -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { - return *new([32]byte), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { - return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerValidatorRemovalInitialized, error) { + event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. -// -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { - return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) -} +// ERC20TokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorWeightUpdateIterator struct { + Event *ERC20TokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data - if err != nil { - return *new([32]byte), *new(bool), err + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(bool)).(*bool) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, out1, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { + return it.fail } -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +// ERC20TokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos } -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { - if err != nil { - return *new([32]byte), *new(uint64), *new(uint64), err + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) - out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) - - return out0, out1, out2, err - -} - -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. -// -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &ERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil } -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) -} +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. -// -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { - return *new([32]byte), *new(uint64), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) - - return out0, out1, err - -} - -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. -// -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { - return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { - return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ERC20TokenStakingManagerValidatorWeightUpdate, error) { + event := new(ERC20TokenStakingManagerValidatorWeightUpdate) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } diff --git a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go index 40a6756b7..e21e3f85f 100644 --- a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go +++ b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go @@ -356,185 +356,3 @@ func (_ExampleRewardCalculator *ExampleRewardCalculatorSession) RewardBasisPoint func (_ExampleRewardCalculator *ExampleRewardCalculatorCallerSession) RewardBasisPoints() (uint64, error) { return _ExampleRewardCalculator.Contract.RewardBasisPoints(&_ExampleRewardCalculator.CallOpts) } - -// IRewardCalculatorMetaData contains all meta data concerning the IRewardCalculator contract. -var IRewardCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IRewardCalculatorABI is the input ABI used to generate the binding from. -// Deprecated: Use IRewardCalculatorMetaData.ABI instead. -var IRewardCalculatorABI = IRewardCalculatorMetaData.ABI - -// IRewardCalculator is an auto generated Go binding around an Ethereum contract. -type IRewardCalculator struct { - IRewardCalculatorCaller // Read-only binding to the contract - IRewardCalculatorTransactor // Write-only binding to the contract - IRewardCalculatorFilterer // Log filterer for contract events -} - -// IRewardCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. -type IRewardCalculatorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IRewardCalculatorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IRewardCalculatorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IRewardCalculatorSession struct { - Contract *IRewardCalculator // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IRewardCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IRewardCalculatorCallerSession struct { - Contract *IRewardCalculatorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IRewardCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IRewardCalculatorTransactorSession struct { - Contract *IRewardCalculatorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IRewardCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. -type IRewardCalculatorRaw struct { - Contract *IRewardCalculator // Generic contract binding to access the raw methods on -} - -// IRewardCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IRewardCalculatorCallerRaw struct { - Contract *IRewardCalculatorCaller // Generic read-only contract binding to access the raw methods on -} - -// IRewardCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IRewardCalculatorTransactorRaw struct { - Contract *IRewardCalculatorTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIRewardCalculator creates a new instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculator(address common.Address, backend bind.ContractBackend) (*IRewardCalculator, error) { - contract, err := bindIRewardCalculator(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IRewardCalculator{IRewardCalculatorCaller: IRewardCalculatorCaller{contract: contract}, IRewardCalculatorTransactor: IRewardCalculatorTransactor{contract: contract}, IRewardCalculatorFilterer: IRewardCalculatorFilterer{contract: contract}}, nil -} - -// NewIRewardCalculatorCaller creates a new read-only instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorCaller(address common.Address, caller bind.ContractCaller) (*IRewardCalculatorCaller, error) { - contract, err := bindIRewardCalculator(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IRewardCalculatorCaller{contract: contract}, nil -} - -// NewIRewardCalculatorTransactor creates a new write-only instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*IRewardCalculatorTransactor, error) { - contract, err := bindIRewardCalculator(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IRewardCalculatorTransactor{contract: contract}, nil -} - -// NewIRewardCalculatorFilterer creates a new log filterer instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*IRewardCalculatorFilterer, error) { - contract, err := bindIRewardCalculator(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IRewardCalculatorFilterer{contract: contract}, nil -} - -// bindIRewardCalculator binds a generic wrapper to an already deployed contract. -func bindIRewardCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IRewardCalculatorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IRewardCalculator *IRewardCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IRewardCalculator.Contract.IRewardCalculatorCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IRewardCalculator *IRewardCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IRewardCalculator *IRewardCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IRewardCalculator *IRewardCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IRewardCalculator.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IRewardCalculator.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IRewardCalculator.Contract.contract.Transact(opts, method, params...) -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorCaller) CalculateReward(opts *bind.CallOpts, stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - var out []interface{} - err := _IRewardCalculator.contract.Call(opts, &out, "calculateReward", stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorCallerSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) -} diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 7af949ab2..968761e21 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -80,17 +80,6 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } -// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. -type ValidatorMessagesValidationPeriod struct { - SubnetID [32]byte - NodeID []byte - BlsPublicKey []byte - RegistrationExpiry uint64 - RemainingBalanceOwner PChainOwner - DisableOwner PChainOwner - Weight uint64 -} - // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -100,36 +89,23 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. -type WarpBlockHash struct { - SourceChainID [32]byte - BlockHash [32]byte -} - -// WarpMessage is an auto generated low-level Go binding around an user-defined struct. -type WarpMessage struct { - SourceChainID [32]byte - OriginSenderAddress common.Address - Payload []byte -} - -// AddressMetaData contains all meta data concerning the Address contract. -var AddressMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d2dabc5051a0f1ba488def6f101c5ffcdd34e71b16d3b6b944eda1ed980237464736f6c63430008190033", +// NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. +var NativeTokenStakingManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615a16380380615a1683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158c98061014d5f395ff3fe6080604052600436106101f1575f3560e01c80638280a25a11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b80638280a25a1461045257806393e245981461046657806398f3e2b414610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360305d621161015957806360305d62146103ab57806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d5780635297fae61461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506102146103a6366004614a43565b61107c565b3480156103b6575f80fd5b506103bf601481565b60405163ffffffff9091168152602001610257565b3480156103df575f80fd5b506103f36103ee366004614a7f565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b50610249603081565b348015610471575f80fd5b506102146104803660046149a4565b6113ca565b348015610490575f80fd5b5061021461049f366004614a43565b611495565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614aab565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157f483398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f8051602061581483398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614b0c565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b98565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614c18565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561069757610697614b23565b60058111156106a8576106a8614b23565b81526020016001820180546106bc90614c83565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c83565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614b23565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614dc6565b6040518263ffffffff1660e01b815260040161088b9190614df7565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614e09565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206158148339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614e09565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e34565b6001600160a01b031614610a12576109ed6060840160408501614e34565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e4f565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e4f565b8363ffffffff16818110610a5957610a59614e94565b9050602002810190610a6b9190614ea8565b610a7490614f13565b80516040519192505f916008880191610a8c91614f8e565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614df7565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f8e565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614e09565b90508086600801835f0151604051610b5b9190614f8e565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614b23565b021790555060208201516001820190610bf69082614fe3565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b9116856150b2565b8251604051919550610cac91614f8e565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d01906150c5565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150e7565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614df7565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614e09565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b9190615229565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614dc6565b90505f600282604051610e5f9190614f8e565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614e09565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614b23565b14610f4c578060405163170cc93360e21b815260040161063c9190614cb5565b6108cb8383612405565b5f805f805160206157f483398151915260030154610f7490846152b4565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157f48339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614b23565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061585483398151915255565b50565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156110c9576110c9614b23565b60038111156110da576110da614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614b23565b14611188578251604051633b0d540d60e21b815261063c91906004016152d3565b60048151600581111561119d5761119d614b23565b036111b3576111ab85612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d88a6122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614df7565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152ed565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150e7565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b5f805160206157f48339815191525f6113e283611db9565b51905060048160058111156113f9576113f9614b23565b14611419578060405163170cc93360e21b815260040161063c9190614cb5565b5f8381526005830160205260409020546001600160a01b0316331461145f57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b61149d6128d7565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156114ea576114ea614b23565b60038111156114fb576114fb614b23565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561157457611574614b23565b14611595578051604051633b0d540d60e21b815261063c91906004016152d3565b60046115a48260400151611db9565b5160058111156115b6576115b6614b23565b146116b5575f6115c5856122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016116049190614df7565b606060405180830381865af415801561161f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164391906152ed565b50915091508184604001511461166f5760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156116b157604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6116be83612d45565b50506116d660015f8051602061585483398151915255565b5050565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614df7565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b9190615322565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c83565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614b23565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061585483398151915255565b9392505050565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff16600381111561195057611950614b23565b600381111561196157611961614b23565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614b23565b141580156119fb57506003815160038111156119f8576119f8614b23565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152d3565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614dc6565b6040518263ffffffff1660e01b8152600401611b279190614df7565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614e09565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206158148339815191529190611bb590614c83565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614b23565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615350565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614e09565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061585483398151915255565b919050565b611dc16148f4565b5f8281525f80516020615874833981519152602052604090819020815160e0810190925280545f80516020615814833981519152929190829060ff166005811115611e0e57611e0e614b23565b6005811115611e1f57611e1f614b23565b8152602001600182018054611e3390614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c83565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020615814833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153da565b90815260200160405180910390205491505092915050565b5f8381525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f48339815191529284929091829060ff166003811115611fb157611fb1614b23565b6003811115611fc257611fc2614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614b23565b14612070578251604051633b0d540d60e21b815261063c91906004016152d3565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361143a565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153e9565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614b23565b0361224f5760028401546080840151612143916001600160401b0316906153e9565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd9190615409565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614b23565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614cb5565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f9190810190615429565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124779190810190615429565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614e09565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614df7565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd91906154b9565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157f4833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157f483398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361143a565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153e9565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614e09565b905080846008015f8a81526020019081526020015f205f8282546128c591906150b2565b90915550501515979650505050505050565b5f8051602061585483398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614df7565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a89190615322565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614b23565b6005811115612a1157612a11614b23565b8152602001600182018054612a2590614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c83565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614b23565b14158015612b285750600181516005811115612b2557612b25614b23565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614cb5565b600381516005811115612b5e57612b5e614b23565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f8e565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614b23565b021790555060208201516001820190612be49082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614b23565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b6116d66001600160a01b03831682613aa5565b60015f8051602061585483398151915255565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff166003811115612d9257612d92614b23565b6003811115612da357612da3614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153e9565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150e7565b612efa91906152b4565b915081866008015f8681526020019081526020015f205f828254612f1e91906150b2565b90915550612f2e905082846154dc565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157f483398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157f48339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614b23565b146131fe57805160405163170cc93360e21b815261063c9190600401614cb5565b5f82826080015161320f91906153e9565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154ef565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614b23565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f80516020615874833981519152602052604081206002015481905f8051602061581483398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614dc6565b6040518263ffffffff1660e01b815260040161358b9190614df7565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614e09565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157f483398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614b23565b148061367a575060048251600581111561367857613678614b23565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614b23565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614cb5565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614e09565b95945050505050565b6137c96148f4565b5f8281525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561381657613816614b23565b600581111561382757613827614b23565b815260200160018201805461383b90614c83565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c83565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614b23565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614b23565b0217905550602082015160018201906139b09082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061581483398151915242613b9b6060860160408701614a7f565b6001600160401b0316111580613bd55750613bb96202a300426150b2565b613bc96060860160408701614a7f565b6001600160401b031610155b15613c0f57613bea6060850160408601614a7f565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f606086018661551a565b614477565b613c34613c1f608086018661551a565b6030613c43602086018661552e565b905014613c7557613c57602085018561552e565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f848061552e565b90505f03613cac57613c91848061552e565b604051633e08a12560e11b815260040161063c929190615570565b5f60088201613cbb868061552e565b604051613cc99291906153da565b90815260200160405180910390205414613d0257613ce7848061552e565b60405163a41f772f60e01b815260040161063c929190615570565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a8061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b61552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a7f565b6001600160401b03168152602001613df560608b018b61551a565b613dfe90615583565b8152602001613e1060808b018b61551a565b613e1990615583565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e4791906156a5565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e88919081019061575c565b5f82815260068601602052604090209193509150613ea68282614fe3565b508160088401613eb6888061552e565b604051613ec49291906153da565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614df7565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614e09565b6040805160e081019091529091508060018152602001613f60898061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614b23565b0217905550602082015160018201906140089082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a6888061552e565b6040516140b49291906153da565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a7f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a7f565b6141b160e0860160c0870161579f565b6141c2610100870160e088016157b8565b6101008701356141da61014089016101208a01614e34565b614609565b5f805160206158148339815191525f6001600160401b0380841690851611156142135761420c8385615409565b9050614220565b61421d8484615409565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b0316906150b2565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153e9565b6001600160401b03169052505b60608101516142d79060646154ef565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150e7565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d91906150b2565b9052506040810180516001600160401b038716919061436d9083906154dc565b9052506001840154604082015160649161439291600160401b90910460ff16906150e7565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206158748339815191526020526040812060020180545f80516020615814833981519152919060089061444c90600160401b90046001600160401b03166157d8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e4f565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e4f565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e4f565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e4f565b90508110156116d6576145466020830183614e4f565b6145516001846154dc565b81811061456057614560614e94565b90506020020160208101906145759190614e34565b6001600160a01b031661458b6020840184614e4f565b8381811061459b5761459b614e94565b90506020020160208101906145b09190614e34565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157f483398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f8051602061581483398151915290815560146147fa60608401604085016157b8565b60ff161180614819575061481460608301604084016157b8565b60ff16155b1561484d5761482e60608301604084016157b8565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d60608301604084016157b8565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a7f565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c83565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b5f8060408385031215614a54575f80fd5b614a5d83614956565b946020939093013593505050565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a8f575f80fd5b81356118fc81614a6b565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614abd575f80fd5b83356001600160401b03811115614ad2575f80fd5b840160a08187031215614ae3575f80fd5b9250614af160208501614a9a565b91506040840135614b0181614a6b565b809150509250925092565b5f6101408284031215614b1d575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b4757614b47614b23565b9052565b5f5b83811015614b65578181015183820152602001614b4d565b50505f910152565b5f8151808452614b84816020860160208601614b4b565b601f01601f19169290920160200192915050565b60208152614baa602082018351614b37565b5f602083015160e06040840152614bc5610100840182614b6d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c29575f80fd5b82356001600160401b0380821115614c3f575f80fd5b818501915085601f830112614c52575f80fd5b813581811115614c60575f80fd5b866020828501011115614c71575f80fd5b60209290920196919550909350505050565b600181811c90821680614c9757607f821691505b602082108103614b1d57634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b37565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cf957614cf9614cc3565b60405290565b604080519081016001600160401b0381118282101715614cf957614cf9614cc3565b604051601f8201601f191681016001600160401b0381118282101715614d4957614d49614cc3565b604052919050565b5f6001600160401b03821115614d6957614d69614cc3565b50601f01601f191660200190565b5f82601f830112614d86575f80fd5b8151614d99614d9482614d51565b614d21565b818152846020838601011115614dad575f80fd5b614dbe826020830160208701614b4b565b949350505050565b5f60208284031215614dd6575f80fd5b81516001600160401b03811115614deb575f80fd5b614dbe84828501614d77565b602081525f6118fc6020830184614b6d565b5f60208284031215614e19575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e44575f80fd5b81356118fc81614e20565b5f808335601e19843603018112614e64575f80fd5b8301803591506001600160401b03821115614e7d575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614ebc575f80fd5b9190910192915050565b5f82601f830112614ed5575f80fd5b8135614ee3614d9482614d51565b818152846020838601011115614ef7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f23575f80fd5b614f2b614cd7565b82356001600160401b0380821115614f41575f80fd5b614f4d36838701614ec6565b83526020850135915080821115614f62575f80fd5b50614f6f36828601614ec6565b6020830152506040830135614f8381614a6b565b604082015292915050565b5f8251614ebc818460208701614b4b565b601f82111561064557805f5260205f20601f840160051c81016020851015614fc45750805b601f840160051c820191505b81811015611b67575f8155600101614fd0565b81516001600160401b03811115614ffc57614ffc614cc3565b6150108161500a8454614c83565b84614f9f565b602080601f831160018114615043575f841561502c5750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b8281101561507157888601518255948401946001909101908401615052565b508582101561508e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa61509e565b5f63ffffffff8083168181036150dd576150dd61509e565b6001019392505050565b8082028115828204841417610faa57610faa61509e565b5f808335601e19843603018112615113575f80fd5b83016020810192503590506001600160401b03811115615131575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561521c57848303601f19018952813536889003605e190181126151a3575f80fd5b870160606151b182806150fe565b8287526151c1838801828461513f565b925050506151d1868301836150fe565b868303888801526151e383828461513f565b9250505060408083013592506151f883614a6b565b6001600160401b03929092169490910193909352978301979083019060010161517e565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561524d81614e20565b6001600160a01b031660608381019190915283013536849003601e19018112615274575f80fd5b83016020810190356001600160401b0381111561528f575f80fd5b8060051b36038213156152a0575f80fd5b6080808501526137b860a085018284615167565b5f826152ce57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152e7576152e7614b23565b91905290565b5f805f606084860312156152ff575f80fd5b83519250602084015161531181614a6b565b6040850151909250614b0181614a6b565b5f8060408385031215615333575f80fd5b82519150602083015161534581614949565b809150509250929050565b5f60208083525f845461536281614c83565b806020870152604060018084165f8114615383576001811461539f576153cc565b60ff19851660408a0152604084151560051b8a010195506153cc565b895f5260205f205f5b858110156153c35781548b82018601529083019088016153a8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c361509e565b6001600160401b038281168282160390808211156123c3576123c361509e565b5f806040838503121561543a575f80fd5b82516001600160401b0380821115615450575f80fd5b9084019060608287031215615463575f80fd5b61546b614cd7565b82518152602083015161547d81614e20565b6020820152604083015182811115615493575f80fd5b61549f88828601614d77565b604083015250809450505050602083015161534581614949565b5f80604083850312156154ca575f80fd5b82519150602083015161534581614a6b565b81810381811115610faa57610faa61509e565b6001600160401b038181168382160280821691908281146155125761551261509e565b505092915050565b5f8235603e19833603018112614ebc575f80fd5b5f808335601e19843603018112615543575f80fd5b8301803591506001600160401b0382111561555c575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614dbe60208301848661513f565b5f60408236031215615593575f80fd5b61559b614cff565b6155a483614956565b81526020808401356001600160401b03808211156155c0575f80fd5b9085019036601f8301126155d2575f80fd5b8135818111156155e4576155e4614cc3565b8060051b91506155f5848301614d21565b818152918301840191848101903684111561560e575f80fd5b938501935b83851015615638578435925061562883614e20565b8282529385019390850190615613565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b0316825293830193600192909201919083019061567c565b60208152815160208201525f602083015160e060408401526156cb610100840182614b6d565b90506040840151601f19808584030160608601526156e98383614b6d565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615719838361564a565b925060a08601519150808584030160c086015250615737828261564a565b91505060c084015161575460e08501826001600160401b03169052565b509392505050565b5f806040838503121561576d575f80fd5b8251915060208301516001600160401b03811115615789575f80fd5b61579585828601614d77565b9150509250929050565b5f602082840312156157af575f80fd5b6118fc82614a9a565b5f602082840312156157c8575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150dd576150dd61509e56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a264697066735822122000dc11d0ff59903cf09d18ad2de1ed503693ff3d1a2c42c47ae695f27ecb47f264736f6c63430008190033", } -// AddressABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressMetaData.ABI instead. -var AddressABI = AddressMetaData.ABI +// NativeTokenStakingManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use NativeTokenStakingManagerMetaData.ABI instead. +var NativeTokenStakingManagerABI = NativeTokenStakingManagerMetaData.ABI -// AddressBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressMetaData.Bin instead. -var AddressBin = AddressMetaData.Bin +// NativeTokenStakingManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use NativeTokenStakingManagerMetaData.Bin instead. +var NativeTokenStakingManagerBin = NativeTokenStakingManagerMetaData.Bin -// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. -func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { - parsed, err := AddressMetaData.GetAbi() +// DeployNativeTokenStakingManager deploys a new Ethereum contract, binding an instance of NativeTokenStakingManager to it. +func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *NativeTokenStakingManager, error) { + parsed, err := NativeTokenStakingManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -137,111 +113,111 @@ func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (commo return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NativeTokenStakingManagerBin), backend, init) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil + return address, tx, &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil } -// Address is an auto generated Go binding around an Ethereum contract. -type Address struct { - AddressCaller // Read-only binding to the contract - AddressTransactor // Write-only binding to the contract - AddressFilterer // Log filterer for contract events +// NativeTokenStakingManager is an auto generated Go binding around an Ethereum contract. +type NativeTokenStakingManager struct { + NativeTokenStakingManagerCaller // Read-only binding to the contract + NativeTokenStakingManagerTransactor // Write-only binding to the contract + NativeTokenStakingManagerFilterer // Log filterer for contract events } -// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressCaller struct { +// NativeTokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressTransactor struct { +// NativeTokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressFilterer struct { +// NativeTokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type NativeTokenStakingManagerFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// AddressSession is an auto generated Go binding around an Ethereum contract, +// NativeTokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type AddressSession struct { - Contract *Address // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type NativeTokenStakingManagerSession struct { + Contract *NativeTokenStakingManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// NativeTokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type AddressCallerSession struct { - Contract *AddressCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type NativeTokenStakingManagerCallerSession struct { + Contract *NativeTokenStakingManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// NativeTokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type AddressTransactorSession struct { - Contract *AddressTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type NativeTokenStakingManagerTransactorSession struct { + Contract *NativeTokenStakingManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressRaw struct { - Contract *Address // Generic contract binding to access the raw methods on +// NativeTokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type NativeTokenStakingManagerRaw struct { + Contract *NativeTokenStakingManager // Generic contract binding to access the raw methods on } -// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressCallerRaw struct { - Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +// NativeTokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerCallerRaw struct { + Contract *NativeTokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on } -// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressTransactorRaw struct { - Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +// NativeTokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type NativeTokenStakingManagerTransactorRaw struct { + Contract *NativeTokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on } -// NewAddress creates a new instance of Address, bound to a specific deployed contract. -func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { - contract, err := bindAddress(address, backend, backend, backend) +// NewNativeTokenStakingManager creates a new instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManager(address common.Address, backend bind.ContractBackend) (*NativeTokenStakingManager, error) { + contract, err := bindNativeTokenStakingManager(address, backend, backend, backend) if err != nil { return nil, err } - return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil + return &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil } -// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. -func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { - contract, err := bindAddress(address, caller, nil, nil) +// NewNativeTokenStakingManagerCaller creates a new read-only instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*NativeTokenStakingManagerCaller, error) { + contract, err := bindNativeTokenStakingManager(address, caller, nil, nil) if err != nil { return nil, err } - return &AddressCaller{contract: contract}, nil + return &NativeTokenStakingManagerCaller{contract: contract}, nil } -// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. -func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { - contract, err := bindAddress(address, nil, transactor, nil) +// NewNativeTokenStakingManagerTransactor creates a new write-only instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*NativeTokenStakingManagerTransactor, error) { + contract, err := bindNativeTokenStakingManager(address, nil, transactor, nil) if err != nil { return nil, err } - return &AddressTransactor{contract: contract}, nil + return &NativeTokenStakingManagerTransactor{contract: contract}, nil } -// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. -func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { - contract, err := bindAddress(address, nil, nil, filterer) +// NewNativeTokenStakingManagerFilterer creates a new log filterer instance of NativeTokenStakingManager, bound to a specific deployed contract. +func NewNativeTokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*NativeTokenStakingManagerFilterer, error) { + contract, err := bindNativeTokenStakingManager(address, nil, nil, filterer) if err != nil { return nil, err } - return &AddressFilterer{contract: contract}, nil + return &NativeTokenStakingManagerFilterer{contract: contract}, nil } -// bindAddress binds a generic wrapper to an already deployed contract. -func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressMetaData.GetAbi() +// bindNativeTokenStakingManager binds a generic wrapper to an already deployed contract. +func bindNativeTokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := NativeTokenStakingManagerMetaData.GetAbi() if err != nil { return nil, err } @@ -252,1152 +228,1036 @@ func bindAddress(address common.Address, caller bind.ContractCaller, transactor // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transfer(opts) +func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.contract.Call(opts, result, method, params...) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _NativeTokenStakingManager.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.contract.Transfer(opts) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.contract.Transact(opts, method, params...) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) } -// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. -var ContextUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") -// ContextUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextUpgradeableMetaData.ABI instead. -var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI + if err != nil { + return *new(uint32), err + } -// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. -type ContextUpgradeable struct { - ContextUpgradeableCaller // Read-only binding to the contract - ContextUpgradeableTransactor // Write-only binding to the contract - ContextUpgradeableFilterer // Log filterer for contract events -} + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) -// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + return out0, err -// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { + return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) } -// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextUpgradeableSession struct { - Contract *ContextUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) } -// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextUpgradeableCallerSession struct { - Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") -// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextUpgradeableTransactorSession struct { - Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + if err != nil { + return *new(uint16), err + } -// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextUpgradeableRaw struct { - Contract *ContextUpgradeable // Generic contract binding to access the raw methods on -} + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err -// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextUpgradeableCallerRaw struct { - Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on } -// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactorRaw struct { - Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) } -// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { - contract, err := bindContextUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil +// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. +// +// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) } -// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { - contract, err := bindContextUpgradeable(address, caller, nil, nil) +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + if err != nil { - return nil, err + return *new(uint8), err } - return &ContextUpgradeableCaller{contract: contract}, nil + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + } -// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { - contract, err := bindContextUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextUpgradeableTransactor{contract: contract}, nil +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) } -// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { - contract, err := bindContextUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextUpgradeableFilterer{contract: contract}, nil +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) } -// bindContextUpgradeable binds a generic wrapper to an already deployed contract. -func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextUpgradeableMetaData.GetAbi() +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + if err != nil { - return nil, err + return *new(uint8), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transfer(opts) +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) +// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. +// +// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) } -// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. -type ContextUpgradeableInitializedIterator struct { - Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data + if err != nil { + return *new(uint64), err + } - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ContextUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ContextUpgradeableInitializedIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContextUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) } -// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. -type ContextUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") - logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { - return nil, err + return *new(uint8), err } - return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log + return out0, err - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) } -// IAllowListMetaData contains all meta data concerning the IAllowList contract. -var IAllowListMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. +// +// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) } -// IAllowListABI is the input ABI used to generate the binding from. -// Deprecated: Use IAllowListMetaData.ABI instead. -var IAllowListABI = IAllowListMetaData.ABI +// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. +// +// Solidity: function NATIVE_MINTER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) NATIVEMINTER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "NATIVE_MINTER") -// IAllowList is an auto generated Go binding around an Ethereum contract. -type IAllowList struct { - IAllowListCaller // Read-only binding to the contract - IAllowListTransactor // Write-only binding to the contract - IAllowListFilterer // Log filterer for contract events -} + if err != nil { + return *new(common.Address), err + } -// IAllowListCaller is an auto generated read-only Go binding around an Ethereum contract. -type IAllowListCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// IAllowListTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IAllowListTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + return out0, err -// IAllowListFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IAllowListFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IAllowListSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IAllowListSession struct { - Contract *IAllowList // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. +// +// Solidity: function NATIVE_MINTER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) NATIVEMINTER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) } -// IAllowListCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IAllowListCallerSession struct { - Contract *IAllowListCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. +// +// Solidity: function NATIVE_MINTER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) NATIVEMINTER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) } -// IAllowListTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IAllowListTransactorSession struct { - Contract *IAllowListTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") -// IAllowListRaw is an auto generated low-level Go binding around an Ethereum contract. -type IAllowListRaw struct { - Contract *IAllowList // Generic contract binding to access the raw methods on -} + if err != nil { + return *new([32]byte), err + } -// IAllowListCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IAllowListCallerRaw struct { - Contract *IAllowListCaller // Generic read-only contract binding to access the raw methods on -} + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) -// IAllowListTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IAllowListTransactorRaw struct { - Contract *IAllowListTransactor // Generic write-only contract binding to access the raw methods on -} + return out0, err -// NewIAllowList creates a new instance of IAllowList, bound to a specific deployed contract. -func NewIAllowList(address common.Address, backend bind.ContractBackend) (*IAllowList, error) { - contract, err := bindIAllowList(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IAllowList{IAllowListCaller: IAllowListCaller{contract: contract}, IAllowListTransactor: IAllowListTransactor{contract: contract}, IAllowListFilterer: IAllowListFilterer{contract: contract}}, nil } -// NewIAllowListCaller creates a new read-only instance of IAllowList, bound to a specific deployed contract. -func NewIAllowListCaller(address common.Address, caller bind.ContractCaller) (*IAllowListCaller, error) { - contract, err := bindIAllowList(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IAllowListCaller{contract: contract}, nil +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) } -// NewIAllowListTransactor creates a new write-only instance of IAllowList, bound to a specific deployed contract. -func NewIAllowListTransactor(address common.Address, transactor bind.ContractTransactor) (*IAllowListTransactor, error) { - contract, err := bindIAllowList(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IAllowListTransactor{contract: contract}, nil +// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. +// +// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) } -// NewIAllowListFilterer creates a new log filterer instance of IAllowList, bound to a specific deployed contract. -func NewIAllowListFilterer(address common.Address, filterer bind.ContractFilterer) (*IAllowListFilterer, error) { - contract, err := bindIAllowList(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IAllowListFilterer{contract: contract}, nil -} +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") -// bindIAllowList binds a generic wrapper to an already deployed contract. -func bindIAllowList(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IAllowListMetaData.GetAbi() if err != nil { - return nil, err + return *new([32]byte), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IAllowList *IAllowListRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IAllowList.Contract.IAllowListCaller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IAllowList *IAllowListRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IAllowList.Contract.IAllowListTransactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) -// Transact invokes the (paid) contract method with params as input values. -func (_IAllowList *IAllowListRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IAllowList.Contract.IAllowListTransactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IAllowList *IAllowListCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IAllowList.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IAllowList *IAllowListTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IAllowList.Contract.contract.Transfer(opts) +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_IAllowList *IAllowListTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IAllowList.Contract.contract.Transact(opts, method, params...) +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) } -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_IAllowList *IAllowListCaller) ReadAllowList(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _IAllowList.contract.Call(opts, &out, "readAllowList", addr) + err := _NativeTokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") if err != nil { - return *new(*big.Int), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_IAllowList *IAllowListSession) ReadAllowList(addr common.Address) (*big.Int, error) { - return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) } -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_IAllowList *IAllowListCallerSession) ReadAllowList(addr common.Address) (*big.Int, error) { - return _IAllowList.Contract.ReadAllowList(&_IAllowList.CallOpts, addr) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) } -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function setAdmin(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetAdmin(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setAdmin", addr) -} +// Solidity: function WARP_MESSENGER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address addr) returns() -func (_IAllowList *IAllowListSession) SetAdmin(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) -} + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetAdmin(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetAdmin(&_IAllowList.TransactOpts, addr) } -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function setEnabled(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetEnabled(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setEnabled", addr) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) } -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function setEnabled(address addr) returns() -func (_IAllowList *IAllowListSession) SetEnabled(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) } -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function setEnabled(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetEnabled(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetEnabled(&_IAllowList.TransactOpts, addr) -} +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. -// -// Solidity: function setManager(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetManager(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setManager", addr) } -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function setManager(address addr) returns() -func (_IAllowList *IAllowListSession) SetManager(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) } -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function setManager(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetManager(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetManager(&_IAllowList.TransactOpts, addr) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) } -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function setNone(address addr) returns() -func (_IAllowList *IAllowListTransactor) SetNone(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _IAllowList.contract.Transact(opts, "setNone", addr) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function setNone(address addr) returns() -func (_IAllowList *IAllowListSession) SetNone(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) } -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function setNone(address addr) returns() -func (_IAllowList *IAllowListTransactorSession) SetNone(addr common.Address) (*types.Transaction, error) { - return _IAllowList.Contract.SetNone(&_IAllowList.TransactOpts, addr) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) } -// IAllowListRoleSetIterator is returned from FilterRoleSet and is used to iterate over the raw logs and unpacked data for RoleSet events raised by the IAllowList contract. -type IAllowListRoleSetIterator struct { - Event *IAllowListRoleSet // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IAllowListRoleSetIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false + if err != nil { + return *new([32]byte), err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IAllowListRoleSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IAllowListRoleSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IAllowListRoleSetIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IAllowListRoleSetIterator) Close() error { - it.sub.Unsubscribe() - return nil +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) } -// IAllowListRoleSet represents a RoleSet event raised by the IAllowList contract. -type IAllowListRoleSet struct { - Role *big.Int - Account common.Address - Sender common.Address - OldRole *big.Int - Raw types.Log // Blockchain specific contextual infos +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) } -// FilterRoleSet is a free log retrieval operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_IAllowList *IAllowListFilterer) FilterRoleSet(opts *bind.FilterOpts, role []*big.Int, account []common.Address, sender []common.Address) (*IAllowListRoleSetIterator, error) { - - var roleRule []interface{} - for _, roleItem := range role { - roleRule = append(roleRule, roleItem) - } - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) - } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) - logs, sub, err := _IAllowList.contract.FilterLogs(opts, "RoleSet", roleRule, accountRule, senderRule) if err != nil { - return nil, err + return *new(uint64), err } - return &IAllowListRoleSetIterator{contract: _IAllowList.contract, event: "RoleSet", logs: logs, sub: sub}, nil -} -// WatchRoleSet is a free log subscription operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. -// -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_IAllowList *IAllowListFilterer) WatchRoleSet(opts *bind.WatchOpts, sink chan<- *IAllowListRoleSet, role []*big.Int, account []common.Address, sender []common.Address) (event.Subscription, error) { - - var roleRule []interface{} - for _, roleItem := range role { - roleRule = append(roleRule, roleItem) - } - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) - } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - logs, sub, err := _IAllowList.contract.WatchLogs(opts, "RoleSet", roleRule, accountRule, senderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IAllowListRoleSet) - if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { - return err - } - event.Raw = log + return out0, err - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil } -// ParseRoleSet is a log parse operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_IAllowList *IAllowListFilterer) ParseRoleSet(log types.Log) (*IAllowListRoleSet, error) { - event := new(IAllowListRoleSet) - if err := _IAllowList.contract.UnpackLog(event, "RoleSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) } -// INativeMinterMetaData contains all meta data concerning the INativeMinter contract. -var INativeMinterMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeCoinMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldRole\",\"type\":\"uint256\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintNativeCoin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. +// +// Solidity: function valueToWeight(uint256 value) view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) } -// INativeMinterABI is the input ABI used to generate the binding from. -// Deprecated: Use INativeMinterMetaData.ABI instead. -var INativeMinterABI = INativeMinterMetaData.ABI +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) -// INativeMinter is an auto generated Go binding around an Ethereum contract. -type INativeMinter struct { - INativeMinterCaller // Read-only binding to the contract - INativeMinterTransactor // Write-only binding to the contract - INativeMinterFilterer // Log filterer for contract events -} + if err != nil { + return *new(*big.Int), err + } -// INativeMinterCaller is an auto generated read-only Go binding around an Ethereum contract. -type INativeMinterCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// INativeMinterTransactor is an auto generated write-only Go binding around an Ethereum contract. -type INativeMinterTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + return out0, err -// INativeMinterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type INativeMinterFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// INativeMinterSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type INativeMinterSession struct { - Contract *INativeMinter // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) } -// INativeMinterCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type INativeMinterCallerSession struct { - Contract *INativeMinterCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// WeightToValue is a free data retrieval call binding the contract method 0x62065856. +// +// Solidity: function weightToValue(uint64 weight) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) } -// INativeMinterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type INativeMinterTransactorSession struct { - Contract *INativeMinterTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) } -// INativeMinterRaw is an auto generated low-level Go binding around an Ethereum contract. -type INativeMinterRaw struct { - Contract *INativeMinter // Generic contract binding to access the raw methods on +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) } -// INativeMinterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type INativeMinterCallerRaw struct { - Contract *INativeMinterCaller // Generic read-only contract binding to access the raw methods on +// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. +// +// Solidity: function claimDelegationFees(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) } -// INativeMinterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type INativeMinterTransactorRaw struct { - Contract *INativeMinterTransactor // Generic write-only contract binding to access the raw methods on +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) } -// NewINativeMinter creates a new instance of INativeMinter, bound to a specific deployed contract. -func NewINativeMinter(address common.Address, backend bind.ContractBackend) (*INativeMinter, error) { - contract, err := bindINativeMinter(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &INativeMinter{INativeMinterCaller: INativeMinterCaller{contract: contract}, INativeMinterTransactor: INativeMinterTransactor{contract: contract}, INativeMinterFilterer: INativeMinterFilterer{contract: contract}}, nil +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) } -// NewINativeMinterCaller creates a new read-only instance of INativeMinter, bound to a specific deployed contract. -func NewINativeMinterCaller(address common.Address, caller bind.ContractCaller) (*INativeMinterCaller, error) { - contract, err := bindINativeMinter(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &INativeMinterCaller{contract: contract}, nil +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// +// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) } -// NewINativeMinterTransactor creates a new write-only instance of INativeMinter, bound to a specific deployed contract. -func NewINativeMinterTransactor(address common.Address, transactor bind.ContractTransactor) (*INativeMinterTransactor, error) { - contract, err := bindINativeMinter(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &INativeMinterTransactor{contract: contract}, nil +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) } -// NewINativeMinterFilterer creates a new log filterer instance of INativeMinter, bound to a specific deployed contract. -func NewINativeMinterFilterer(address common.Address, filterer bind.ContractFilterer) (*INativeMinterFilterer, error) { - contract, err := bindINativeMinter(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &INativeMinterFilterer{contract: contract}, nil +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) } -// bindINativeMinter binds a generic wrapper to an already deployed contract. -func bindINativeMinter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := INativeMinterMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// +// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_INativeMinter *INativeMinterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _INativeMinter.Contract.INativeMinterCaller.contract.Call(opts, result, method, params...) +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_INativeMinter *INativeMinterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _INativeMinter.Contract.INativeMinterTransactor.contract.Transfer(opts) +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) } -// Transact invokes the (paid) contract method with params as input values. -func (_INativeMinter *INativeMinterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _INativeMinter.Contract.INativeMinterTransactor.contract.Transact(opts, method, params...) +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_INativeMinter *INativeMinterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _INativeMinter.Contract.contract.Call(opts, result, method, params...) +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_INativeMinter *INativeMinterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _INativeMinter.Contract.contract.Transfer(opts) +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) } -// Transact invokes the (paid) contract method with params as input values. -func (_INativeMinter *INativeMinterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _INativeMinter.Contract.contract.Transact(opts, method, params...) +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) } -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_INativeMinter *INativeMinterCaller) ReadAllowList(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { - var out []interface{} - err := _INativeMinter.contract.Call(opts, &out, "readAllowList", addr) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_INativeMinter *INativeMinterSession) ReadAllowList(addr common.Address) (*big.Int, error) { - return _INativeMinter.Contract.ReadAllowList(&_INativeMinter.CallOpts, addr) +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) } -// ReadAllowList is a free data retrieval call binding the contract method 0xeb54dae1. +// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // -// Solidity: function readAllowList(address addr) view returns(uint256 role) -func (_INativeMinter *INativeMinterCallerSession) ReadAllowList(addr common.Address) (*big.Int, error) { - return _INativeMinter.Contract.ReadAllowList(&_INativeMinter.CallOpts, addr) +// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) } -// MintNativeCoin is a paid mutator transaction binding the contract method 0x4f5aaaba. +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // -// Solidity: function mintNativeCoin(address addr, uint256 amount) returns() -func (_INativeMinter *INativeMinterTransactor) MintNativeCoin(opts *bind.TransactOpts, addr common.Address, amount *big.Int) (*types.Transaction, error) { - return _INativeMinter.contract.Transact(opts, "mintNativeCoin", addr, amount) +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) } -// MintNativeCoin is a paid mutator transaction binding the contract method 0x4f5aaaba. +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // -// Solidity: function mintNativeCoin(address addr, uint256 amount) returns() -func (_INativeMinter *INativeMinterSession) MintNativeCoin(addr common.Address, amount *big.Int) (*types.Transaction, error) { - return _INativeMinter.Contract.MintNativeCoin(&_INativeMinter.TransactOpts, addr, amount) +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) } -// MintNativeCoin is a paid mutator transaction binding the contract method 0x4f5aaaba. +// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // -// Solidity: function mintNativeCoin(address addr, uint256 amount) returns() -func (_INativeMinter *INativeMinterTransactorSession) MintNativeCoin(addr common.Address, amount *big.Int) (*types.Transaction, error) { - return _INativeMinter.Contract.MintNativeCoin(&_INativeMinter.TransactOpts, addr, amount) +// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) } -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. // -// Solidity: function setAdmin(address addr) returns() -func (_INativeMinter *INativeMinterTransactor) SetAdmin(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _INativeMinter.contract.Transact(opts, "setAdmin", addr) +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initialize", settings) } -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. // -// Solidity: function setAdmin(address addr) returns() -func (_INativeMinter *INativeMinterSession) SetAdmin(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetAdmin(&_INativeMinter.TransactOpts, addr) +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) } -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. // -// Solidity: function setAdmin(address addr) returns() -func (_INativeMinter *INativeMinterTransactorSession) SetAdmin(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetAdmin(&_INativeMinter.TransactOpts, addr) +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) } -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. // -// Solidity: function setEnabled(address addr) returns() -func (_INativeMinter *INativeMinterTransactor) SetEnabled(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _INativeMinter.contract.Transact(opts, "setEnabled", addr) +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID) } -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. // -// Solidity: function setEnabled(address addr) returns() -func (_INativeMinter *INativeMinterSession) SetEnabled(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetEnabled(&_INativeMinter.TransactOpts, addr) +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) } -// SetEnabled is a paid mutator transaction binding the contract method 0x0aaf7043. +// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. // -// Solidity: function setEnabled(address addr) returns() -func (_INativeMinter *INativeMinterTransactorSession) SetEnabled(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetEnabled(&_INativeMinter.TransactOpts, addr) +// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) } -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // -// Solidity: function setManager(address addr) returns() -func (_INativeMinter *INativeMinterTransactor) SetManager(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _INativeMinter.contract.Transact(opts, "setManager", addr) +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // -// Solidity: function setManager(address addr) returns() -func (_INativeMinter *INativeMinterSession) SetManager(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetManager(&_INativeMinter.TransactOpts, addr) +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) } -// SetManager is a paid mutator transaction binding the contract method 0xd0ebdbe7. +// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // -// Solidity: function setManager(address addr) returns() -func (_INativeMinter *INativeMinterTransactorSession) SetManager(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetManager(&_INativeMinter.TransactOpts, addr) +// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) } -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. // -// Solidity: function setNone(address addr) returns() -func (_INativeMinter *INativeMinterTransactor) SetNone(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _INativeMinter.contract.Transact(opts, "setNone", addr) +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) } -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. // -// Solidity: function setNone(address addr) returns() -func (_INativeMinter *INativeMinterSession) SetNone(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetNone(&_INativeMinter.TransactOpts, addr) +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) } -// SetNone is a paid mutator transaction binding the contract method 0x8c6bfb3b. +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. // -// Solidity: function setNone(address addr) returns() -func (_INativeMinter *INativeMinterTransactorSession) SetNone(addr common.Address) (*types.Transaction, error) { - return _INativeMinter.Contract.SetNone(&_INativeMinter.TransactOpts, addr) +// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) } -// INativeMinterNativeCoinMintedIterator is returned from FilterNativeCoinMinted and is used to iterate over the raw logs and unpacked data for NativeCoinMinted events raised by the INativeMinter contract. -type INativeMinterNativeCoinMintedIterator struct { - Event *INativeMinterNativeCoinMinted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeMinterNativeCoinMintedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeMinterNativeCoinMinted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeMinterNativeCoinMinted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeMinterNativeCoinMintedIterator) Error() error { - return it.fail +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeMinterNativeCoinMintedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) } -// INativeMinterNativeCoinMinted represents a NativeCoinMinted event raised by the INativeMinter contract. -type INativeMinterNativeCoinMinted struct { - Sender common.Address - Recipient common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) } -// FilterNativeCoinMinted is a free log retrieval operation binding the contract event 0x400cd392f3d56fd10bb1dbd5839fdda8298208ddaa97b368faa053e1850930ee. +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. // -// Solidity: event NativeCoinMinted(address indexed sender, address indexed recipient, uint256 amount) -func (_INativeMinter *INativeMinterFilterer) FilterNativeCoinMinted(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*INativeMinterNativeCoinMintedIterator, error) { +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} - logs, sub, err := _INativeMinter.contract.FilterLogs(opts, "NativeCoinMinted", senderRule, recipientRule) - if err != nil { - return nil, err - } - return &INativeMinterNativeCoinMintedIterator{contract: _INativeMinter.contract, event: "NativeCoinMinted", logs: logs, sub: sub}, nil +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) } -// WatchNativeCoinMinted is a free log subscription operation binding the contract event 0x400cd392f3d56fd10bb1dbd5839fdda8298208ddaa97b368faa053e1850930ee. +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. // -// Solidity: event NativeCoinMinted(address indexed sender, address indexed recipient, uint256 amount) -func (_INativeMinter *INativeMinterFilterer) WatchNativeCoinMinted(opts *bind.WatchOpts, sink chan<- *INativeMinterNativeCoinMinted, sender []common.Address, recipient []common.Address) (event.Subscription, error) { +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) +} + +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. +// +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. +// +// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) +} + +// NativeTokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegationEndedIterator struct { + Event *NativeTokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegationEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerDelegationEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerDelegationEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegationEnded struct { + DelegationID [32]byte + ValidationID [32]byte + Rewards *big.Int + Fees *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegationEndedIterator, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil +} + +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. +// +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _INativeMinter.contract.WatchLogs(opts, "NativeCoinMinted", senderRule, recipientRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1407,8 +1267,8 @@ func (_INativeMinter *INativeMinterFilterer) WatchNativeCoinMinted(opts *bind.Wa select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(INativeMinterNativeCoinMinted) - if err := _INativeMinter.contract.UnpackLog(event, "NativeCoinMinted", log); err != nil { + event := new(NativeTokenStakingManagerDelegationEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return err } event.Raw = log @@ -1429,21 +1289,21 @@ func (_INativeMinter *INativeMinterFilterer) WatchNativeCoinMinted(opts *bind.Wa }), nil } -// ParseNativeCoinMinted is a log parse operation binding the contract event 0x400cd392f3d56fd10bb1dbd5839fdda8298208ddaa97b368faa053e1850930ee. +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // -// Solidity: event NativeCoinMinted(address indexed sender, address indexed recipient, uint256 amount) -func (_INativeMinter *INativeMinterFilterer) ParseNativeCoinMinted(log types.Log) (*INativeMinterNativeCoinMinted, error) { - event := new(INativeMinterNativeCoinMinted) - if err := _INativeMinter.contract.UnpackLog(event, "NativeCoinMinted", log); err != nil { +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*NativeTokenStakingManagerDelegationEnded, error) { + event := new(NativeTokenStakingManagerDelegationEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// INativeMinterRoleSetIterator is returned from FilterRoleSet and is used to iterate over the raw logs and unpacked data for RoleSet events raised by the INativeMinter contract. -type INativeMinterRoleSetIterator struct { - Event *INativeMinterRoleSet // Event containing the contract specifics and raw log +// NativeTokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorAddedIterator struct { + Event *NativeTokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1457,7 +1317,7 @@ type INativeMinterRoleSetIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *INativeMinterRoleSetIterator) Next() bool { +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1466,7 +1326,7 @@ func (it *INativeMinterRoleSetIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(INativeMinterRoleSet) + it.Event = new(NativeTokenStakingManagerDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1481,7 +1341,7 @@ func (it *INativeMinterRoleSetIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(INativeMinterRoleSet) + it.Event = new(NativeTokenStakingManagerDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1497,70 +1357,73 @@ func (it *INativeMinterRoleSetIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeMinterRoleSetIterator) Error() error { +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *INativeMinterRoleSetIterator) Close() error { +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Close() error { it.sub.Unsubscribe() return nil } -// INativeMinterRoleSet represents a RoleSet event raised by the INativeMinter contract. -type INativeMinterRoleSet struct { - Role *big.Int - Account common.Address - Sender common.Address - OldRole *big.Int - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorAdded struct { + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterRoleSet is a free log retrieval operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. // -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_INativeMinter *INativeMinterFilterer) FilterRoleSet(opts *bind.FilterOpts, role []*big.Int, account []common.Address, sender []common.Address) (*INativeMinterRoleSetIterator, error) { +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenStakingManagerDelegatorAddedIterator, error) { - var roleRule []interface{} - for _, roleItem := range role { - roleRule = append(roleRule, roleItem) + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) } - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _INativeMinter.contract.FilterLogs(opts, "RoleSet", roleRule, accountRule, senderRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } - return &INativeMinterRoleSetIterator{contract: _INativeMinter.contract, event: "RoleSet", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerDelegatorAddedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } -// WatchRoleSet is a free log subscription operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. // -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_INativeMinter *INativeMinterFilterer) WatchRoleSet(opts *bind.WatchOpts, sink chan<- *INativeMinterRoleSet, role []*big.Int, account []common.Address, sender []common.Address) (event.Subscription, error) { +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - var roleRule []interface{} - for _, roleItem := range role { - roleRule = append(roleRule, roleItem) + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) } - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) } - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _INativeMinter.contract.WatchLogs(opts, "RoleSet", roleRule, accountRule, senderRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } @@ -1570,8 +1433,8 @@ func (_INativeMinter *INativeMinterFilterer) WatchRoleSet(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(INativeMinterRoleSet) - if err := _INativeMinter.contract.UnpackLog(event, "RoleSet", log); err != nil { + event := new(NativeTokenStakingManagerDelegatorAdded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return err } event.Raw = log @@ -1592,12970 +1455,175 @@ func (_INativeMinter *INativeMinterFilterer) WatchRoleSet(opts *bind.WatchOpts, }), nil } -// ParseRoleSet is a log parse operation binding the contract event 0xcdb7ea01f00a414d78757bdb0f6391664ba3fedf987eed280927c1e7d695be3e. +// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. // -// Solidity: event RoleSet(uint256 indexed role, address indexed account, address indexed sender, uint256 oldRole) -func (_INativeMinter *INativeMinterFilterer) ParseRoleSet(log types.Log) (*INativeMinterRoleSet, error) { - event := new(INativeMinterRoleSet) - if err := _INativeMinter.contract.UnpackLog(event, "RoleSet", log); err != nil { +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenStakingManagerDelegatorAdded, error) { + event := new(NativeTokenStakingManagerDelegatorAdded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// INativeTokenStakingManagerMetaData contains all meta data concerning the INativeTokenStakingManager contract. -var INativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// INativeTokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use INativeTokenStakingManagerMetaData.ABI instead. -var INativeTokenStakingManagerABI = INativeTokenStakingManagerMetaData.ABI - -// INativeTokenStakingManager is an auto generated Go binding around an Ethereum contract. -type INativeTokenStakingManager struct { - INativeTokenStakingManagerCaller // Read-only binding to the contract - INativeTokenStakingManagerTransactor // Write-only binding to the contract - INativeTokenStakingManagerFilterer // Log filterer for contract events -} +// NativeTokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRegisteredIterator struct { + Event *NativeTokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log -// INativeTokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type INativeTokenStakingManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// INativeTokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type INativeTokenStakingManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// INativeTokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type INativeTokenStakingManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// INativeTokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type INativeTokenStakingManagerSession struct { - Contract *INativeTokenStakingManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// INativeTokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type INativeTokenStakingManagerCallerSession struct { - Contract *INativeTokenStakingManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// INativeTokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type INativeTokenStakingManagerTransactorSession struct { - Contract *INativeTokenStakingManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// INativeTokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type INativeTokenStakingManagerRaw struct { - Contract *INativeTokenStakingManager // Generic contract binding to access the raw methods on -} - -// INativeTokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type INativeTokenStakingManagerCallerRaw struct { - Contract *INativeTokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// INativeTokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type INativeTokenStakingManagerTransactorRaw struct { - Contract *INativeTokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewINativeTokenStakingManager creates a new instance of INativeTokenStakingManager, bound to a specific deployed contract. -func NewINativeTokenStakingManager(address common.Address, backend bind.ContractBackend) (*INativeTokenStakingManager, error) { - contract, err := bindINativeTokenStakingManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &INativeTokenStakingManager{INativeTokenStakingManagerCaller: INativeTokenStakingManagerCaller{contract: contract}, INativeTokenStakingManagerTransactor: INativeTokenStakingManagerTransactor{contract: contract}, INativeTokenStakingManagerFilterer: INativeTokenStakingManagerFilterer{contract: contract}}, nil -} - -// NewINativeTokenStakingManagerCaller creates a new read-only instance of INativeTokenStakingManager, bound to a specific deployed contract. -func NewINativeTokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*INativeTokenStakingManagerCaller, error) { - contract, err := bindINativeTokenStakingManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerCaller{contract: contract}, nil -} - -// NewINativeTokenStakingManagerTransactor creates a new write-only instance of INativeTokenStakingManager, bound to a specific deployed contract. -func NewINativeTokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*INativeTokenStakingManagerTransactor, error) { - contract, err := bindINativeTokenStakingManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerTransactor{contract: contract}, nil -} - -// NewINativeTokenStakingManagerFilterer creates a new log filterer instance of INativeTokenStakingManager, bound to a specific deployed contract. -func NewINativeTokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*INativeTokenStakingManagerFilterer, error) { - contract, err := bindINativeTokenStakingManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerFilterer{contract: contract}, nil -} - -// bindINativeTokenStakingManager binds a generic wrapper to an already deployed contract. -func bindINativeTokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := INativeTokenStakingManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_INativeTokenStakingManager *INativeTokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _INativeTokenStakingManager.Contract.INativeTokenStakingManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_INativeTokenStakingManager *INativeTokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.INativeTokenStakingManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_INativeTokenStakingManager *INativeTokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.INativeTokenStakingManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_INativeTokenStakingManager *INativeTokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _INativeTokenStakingManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ClaimDelegationFees(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ClaimDelegationFees(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteEndDelegation(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteEndDelegation(&_INativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteEndValidation(&_INativeTokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteEndValidation(&_INativeTokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeEndDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeEndValidation(&_INativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32 validationID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32 validationID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32 validationID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_INativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeValidatorSet(&_INativeTokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.InitializeValidatorSet(&_INativeTokenStakingManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_INativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ResendUpdateDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.ResendUpdateDelegation(&_INativeTokenStakingManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.SubmitUptimeProof(&_INativeTokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_INativeTokenStakingManager *INativeTokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _INativeTokenStakingManager.Contract.SubmitUptimeProof(&_INativeTokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// INativeTokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegationEndedIterator struct { - Event *INativeTokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*INativeTokenStakingManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerDelegationEndedIterator{contract: _INativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerDelegationEnded) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*INativeTokenStakingManagerDelegationEnded, error) { - event := new(INativeTokenStakingManagerDelegationEnded) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegatorAddedIterator struct { - Event *INativeTokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*INativeTokenStakingManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerDelegatorAddedIterator{contract: _INativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerDelegatorAdded) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*INativeTokenStakingManagerDelegatorAdded, error) { - event := new(INativeTokenStakingManagerDelegatorAdded) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegatorRegisteredIterator struct { - Event *INativeTokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*INativeTokenStakingManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerDelegatorRegisteredIterator{contract: _INativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerDelegatorRegistered) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*INativeTokenStakingManagerDelegatorRegistered, error) { - event := new(INativeTokenStakingManagerDelegatorRegistered) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *INativeTokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*INativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _INativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*INativeTokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(INativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerInitialValidatorCreatedIterator struct { - Event *INativeTokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*INativeTokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _INativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerInitialValidatorCreated) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*INativeTokenStakingManagerInitialValidatorCreated, error) { - event := new(INativeTokenStakingManagerInitialValidatorCreated) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerUptimeUpdatedIterator struct { - Event *INativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*INativeTokenStakingManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerUptimeUpdatedIterator{contract: _INativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerUptimeUpdated) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*INativeTokenStakingManagerUptimeUpdated, error) { - event := new(INativeTokenStakingManagerUptimeUpdated) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidationPeriodCreatedIterator struct { - Event *INativeTokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*INativeTokenStakingManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _INativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerValidationPeriodCreated) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*INativeTokenStakingManagerValidationPeriodCreated, error) { - event := new(INativeTokenStakingManagerValidationPeriodCreated) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidationPeriodEndedIterator struct { - Event *INativeTokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*INativeTokenStakingManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerValidationPeriodEndedIterator{contract: _INativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerValidationPeriodEnded) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*INativeTokenStakingManagerValidationPeriodEnded, error) { - event := new(INativeTokenStakingManagerValidationPeriodEnded) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *INativeTokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*INativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _INativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerValidationPeriodRegistered) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*INativeTokenStakingManagerValidationPeriodRegistered, error) { - event := new(INativeTokenStakingManagerValidationPeriodRegistered) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *INativeTokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*INativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _INativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerValidatorRemovalInitialized) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*INativeTokenStakingManagerValidatorRemovalInitialized, error) { - event := new(INativeTokenStakingManagerValidatorRemovalInitialized) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INativeTokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidatorWeightUpdateIterator struct { - Event *INativeTokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INativeTokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the INativeTokenStakingManager contract. -type INativeTokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*INativeTokenStakingManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &INativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _INativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *INativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _INativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INativeTokenStakingManagerValidatorWeightUpdate) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_INativeTokenStakingManager *INativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*INativeTokenStakingManagerValidatorWeightUpdate, error) { - event := new(INativeTokenStakingManagerValidatorWeightUpdate) - if err := _INativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerMetaData contains all meta data concerning the IPoSValidatorManager contract. -var IPoSValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IPoSValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IPoSValidatorManagerMetaData.ABI instead. -var IPoSValidatorManagerABI = IPoSValidatorManagerMetaData.ABI - -// IPoSValidatorManager is an auto generated Go binding around an Ethereum contract. -type IPoSValidatorManager struct { - IPoSValidatorManagerCaller // Read-only binding to the contract - IPoSValidatorManagerTransactor // Write-only binding to the contract - IPoSValidatorManagerFilterer // Log filterer for contract events -} - -// IPoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IPoSValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IPoSValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IPoSValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IPoSValidatorManagerSession struct { - Contract *IPoSValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IPoSValidatorManagerCallerSession struct { - Contract *IPoSValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IPoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IPoSValidatorManagerTransactorSession struct { - Contract *IPoSValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IPoSValidatorManagerRaw struct { - Contract *IPoSValidatorManager // Generic contract binding to access the raw methods on -} - -// IPoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IPoSValidatorManagerCallerRaw struct { - Contract *IPoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// IPoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IPoSValidatorManagerTransactorRaw struct { - Contract *IPoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIPoSValidatorManager creates a new instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*IPoSValidatorManager, error) { - contract, err := bindIPoSValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IPoSValidatorManager{IPoSValidatorManagerCaller: IPoSValidatorManagerCaller{contract: contract}, IPoSValidatorManagerTransactor: IPoSValidatorManagerTransactor{contract: contract}, IPoSValidatorManagerFilterer: IPoSValidatorManagerFilterer{contract: contract}}, nil -} - -// NewIPoSValidatorManagerCaller creates a new read-only instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IPoSValidatorManagerCaller, error) { - contract, err := bindIPoSValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerCaller{contract: contract}, nil -} - -// NewIPoSValidatorManagerTransactor creates a new write-only instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoSValidatorManagerTransactor, error) { - contract, err := bindIPoSValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerTransactor{contract: contract}, nil -} - -// NewIPoSValidatorManagerFilterer creates a new log filterer instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoSValidatorManagerFilterer, error) { - contract, err := bindIPoSValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerFilterer{contract: contract}, nil -} - -// bindIPoSValidatorManager binds a generic wrapper to an already deployed contract. -func bindIPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IPoSValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoSValidatorManager *IPoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoSValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// IPoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegationEndedIterator struct { - Event *IPoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegationEndedIterator{contract: _IPoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegationEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*IPoSValidatorManagerDelegationEnded, error) { - event := new(IPoSValidatorManagerDelegationEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorAddedIterator struct { - Event *IPoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IPoSValidatorManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegatorAddedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorAdded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*IPoSValidatorManagerDelegatorAdded, error) { - event := new(IPoSValidatorManagerDelegatorAdded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRegisteredIterator struct { - Event *IPoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegatorRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*IPoSValidatorManagerDelegatorRegistered, error) { - event := new(IPoSValidatorManagerDelegatorRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRemovalInitializedIterator struct { - Event *IPoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerDelegatorRemovalInitialized, error) { - event := new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerInitialValidatorCreatedIterator struct { - Event *IPoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoSValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerInitialValidatorCreatedIterator{contract: _IPoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerInitialValidatorCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoSValidatorManagerInitialValidatorCreated, error) { - event := new(IPoSValidatorManagerInitialValidatorCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerUptimeUpdatedIterator struct { - Event *IPoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerUptimeUpdatedIterator{contract: _IPoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerUptimeUpdated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*IPoSValidatorManagerUptimeUpdated, error) { - event := new(IPoSValidatorManagerUptimeUpdated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodCreatedIterator struct { - Event *IPoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoSValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodCreatedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoSValidatorManagerValidationPeriodCreated, error) { - event := new(IPoSValidatorManagerValidationPeriodCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodEndedIterator struct { - Event *IPoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IPoSValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodEndedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IPoSValidatorManagerValidationPeriodEnded, error) { - event := new(IPoSValidatorManagerValidationPeriodEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodRegisteredIterator struct { - Event *IPoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoSValidatorManagerValidationPeriodRegistered, error) { - event := new(IPoSValidatorManagerValidationPeriodRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorRemovalInitializedIterator struct { - Event *IPoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoSValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerValidatorRemovalInitialized, error) { - event := new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorWeightUpdateIterator struct { - Event *IPoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoSValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidatorWeightUpdateIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidatorWeightUpdate) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoSValidatorManagerValidatorWeightUpdate, error) { - event := new(IPoSValidatorManagerValidatorWeightUpdate) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IRewardCalculatorMetaData contains all meta data concerning the IRewardCalculator contract. -var IRewardCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IRewardCalculatorABI is the input ABI used to generate the binding from. -// Deprecated: Use IRewardCalculatorMetaData.ABI instead. -var IRewardCalculatorABI = IRewardCalculatorMetaData.ABI - -// IRewardCalculator is an auto generated Go binding around an Ethereum contract. -type IRewardCalculator struct { - IRewardCalculatorCaller // Read-only binding to the contract - IRewardCalculatorTransactor // Write-only binding to the contract - IRewardCalculatorFilterer // Log filterer for contract events -} - -// IRewardCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. -type IRewardCalculatorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IRewardCalculatorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IRewardCalculatorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IRewardCalculatorSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IRewardCalculatorSession struct { - Contract *IRewardCalculator // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IRewardCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IRewardCalculatorCallerSession struct { - Contract *IRewardCalculatorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IRewardCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IRewardCalculatorTransactorSession struct { - Contract *IRewardCalculatorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IRewardCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. -type IRewardCalculatorRaw struct { - Contract *IRewardCalculator // Generic contract binding to access the raw methods on -} - -// IRewardCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IRewardCalculatorCallerRaw struct { - Contract *IRewardCalculatorCaller // Generic read-only contract binding to access the raw methods on -} - -// IRewardCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IRewardCalculatorTransactorRaw struct { - Contract *IRewardCalculatorTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIRewardCalculator creates a new instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculator(address common.Address, backend bind.ContractBackend) (*IRewardCalculator, error) { - contract, err := bindIRewardCalculator(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IRewardCalculator{IRewardCalculatorCaller: IRewardCalculatorCaller{contract: contract}, IRewardCalculatorTransactor: IRewardCalculatorTransactor{contract: contract}, IRewardCalculatorFilterer: IRewardCalculatorFilterer{contract: contract}}, nil -} - -// NewIRewardCalculatorCaller creates a new read-only instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorCaller(address common.Address, caller bind.ContractCaller) (*IRewardCalculatorCaller, error) { - contract, err := bindIRewardCalculator(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IRewardCalculatorCaller{contract: contract}, nil -} - -// NewIRewardCalculatorTransactor creates a new write-only instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*IRewardCalculatorTransactor, error) { - contract, err := bindIRewardCalculator(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IRewardCalculatorTransactor{contract: contract}, nil -} - -// NewIRewardCalculatorFilterer creates a new log filterer instance of IRewardCalculator, bound to a specific deployed contract. -func NewIRewardCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*IRewardCalculatorFilterer, error) { - contract, err := bindIRewardCalculator(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IRewardCalculatorFilterer{contract: contract}, nil -} - -// bindIRewardCalculator binds a generic wrapper to an already deployed contract. -func bindIRewardCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IRewardCalculatorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IRewardCalculator *IRewardCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IRewardCalculator.Contract.IRewardCalculatorCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IRewardCalculator *IRewardCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IRewardCalculator *IRewardCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IRewardCalculator.Contract.IRewardCalculatorTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IRewardCalculator *IRewardCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IRewardCalculator.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IRewardCalculator.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IRewardCalculator *IRewardCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IRewardCalculator.Contract.contract.Transact(opts, method, params...) -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorCaller) CalculateReward(opts *bind.CallOpts, stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - var out []interface{} - err := _IRewardCalculator.contract.Call(opts, &out, "calculateReward", stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) -} - -// CalculateReward is a free data retrieval call binding the contract method 0x4f22429f. -// -// Solidity: function calculateReward(uint256 stakeAmount, uint64 validatorStartTime, uint64 stakingStartTime, uint64 stakingEndTime, uint64 uptimeSeconds) view returns(uint256) -func (_IRewardCalculator *IRewardCalculatorCallerSession) CalculateReward(stakeAmount *big.Int, validatorStartTime uint64, stakingStartTime uint64, stakingEndTime uint64, uptimeSeconds uint64) (*big.Int, error) { - return _IRewardCalculator.Contract.CalculateReward(&_IRewardCalculator.CallOpts, stakeAmount, validatorStartTime, stakingStartTime, stakingEndTime, uptimeSeconds) -} - -// IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. -var IValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IValidatorManagerMetaData.ABI instead. -var IValidatorManagerABI = IValidatorManagerMetaData.ABI - -// IValidatorManager is an auto generated Go binding around an Ethereum contract. -type IValidatorManager struct { - IValidatorManagerCaller // Read-only binding to the contract - IValidatorManagerTransactor // Write-only binding to the contract - IValidatorManagerFilterer // Log filterer for contract events -} - -// IValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IValidatorManagerSession struct { - Contract *IValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IValidatorManagerCallerSession struct { - Contract *IValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IValidatorManagerTransactorSession struct { - Contract *IValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IValidatorManagerRaw struct { - Contract *IValidatorManager // Generic contract binding to access the raw methods on -} - -// IValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IValidatorManagerCallerRaw struct { - Contract *IValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// IValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IValidatorManagerTransactorRaw struct { - Contract *IValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIValidatorManager creates a new instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManager(address common.Address, backend bind.ContractBackend) (*IValidatorManager, error) { - contract, err := bindIValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IValidatorManager{IValidatorManagerCaller: IValidatorManagerCaller{contract: contract}, IValidatorManagerTransactor: IValidatorManagerTransactor{contract: contract}, IValidatorManagerFilterer: IValidatorManagerFilterer{contract: contract}}, nil -} - -// NewIValidatorManagerCaller creates a new read-only instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IValidatorManagerCaller, error) { - contract, err := bindIValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IValidatorManagerCaller{contract: contract}, nil -} - -// NewIValidatorManagerTransactor creates a new write-only instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IValidatorManagerTransactor, error) { - contract, err := bindIValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IValidatorManagerTransactor{contract: contract}, nil -} - -// NewIValidatorManagerFilterer creates a new log filterer instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IValidatorManagerFilterer, error) { - contract, err := bindIValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IValidatorManagerFilterer{contract: contract}, nil -} - -// bindIValidatorManager binds a generic wrapper to an already deployed contract. -func bindIValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IValidatorManager *IValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IValidatorManager.Contract.IValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IValidatorManager *IValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IValidatorManager *IValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IValidatorManager *IValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IValidatorManager *IValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IValidatorManager *IValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// IValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IValidatorManager contract. -type IValidatorManagerInitialValidatorCreatedIterator struct { - Event *IValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IValidatorManager contract. -type IValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerInitialValidatorCreatedIterator{contract: _IValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerInitialValidatorCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IValidatorManagerInitialValidatorCreated, error) { - event := new(IValidatorManagerInitialValidatorCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodCreatedIterator struct { - Event *IValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodCreatedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IValidatorManagerValidationPeriodCreated, error) { - event := new(IValidatorManagerValidationPeriodCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodEndedIterator struct { - Event *IValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodEndedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodEnded) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IValidatorManagerValidationPeriodEnded, error) { - event := new(IValidatorManagerValidationPeriodEnded) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodRegisteredIterator struct { - Event *IValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodRegisteredIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodRegistered) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IValidatorManagerValidationPeriodRegistered, error) { - event := new(IValidatorManagerValidationPeriodRegistered) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IValidatorManager contract. -type IValidatorManagerValidatorRemovalInitializedIterator struct { - Event *IValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IValidatorManager contract. -type IValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidatorRemovalInitializedIterator{contract: _IValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidatorRemovalInitialized) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IValidatorManagerValidatorRemovalInitialized, error) { - event := new(IValidatorManagerValidatorRemovalInitialized) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IValidatorManager contract. -type IValidatorManagerValidatorWeightUpdateIterator struct { - Event *IValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IValidatorManager contract. -type IValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidatorWeightUpdateIterator{contract: _IValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidatorWeightUpdate) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IValidatorManagerValidatorWeightUpdate, error) { - event := new(IValidatorManagerValidatorWeightUpdate) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. -var IWarpMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWarpMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use IWarpMessengerMetaData.ABI instead. -var IWarpMessengerABI = IWarpMessengerMetaData.ABI - -// IWarpMessenger is an auto generated Go binding around an Ethereum contract. -type IWarpMessenger struct { - IWarpMessengerCaller // Read-only binding to the contract - IWarpMessengerTransactor // Write-only binding to the contract - IWarpMessengerFilterer // Log filterer for contract events -} - -// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWarpMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWarpMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWarpMessengerSession struct { - Contract *IWarpMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWarpMessengerCallerSession struct { - Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWarpMessengerTransactorSession struct { - Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWarpMessengerRaw struct { - Contract *IWarpMessenger // Generic contract binding to access the raw methods on -} - -// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWarpMessengerCallerRaw struct { - Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactorRaw struct { - Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { - contract, err := bindIWarpMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil -} - -// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { - contract, err := bindIWarpMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerCaller{contract: contract}, nil -} - -// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { - contract, err := bindIWarpMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerTransactor{contract: contract}, nil -} - -// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { - contract, err := bindIWarpMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWarpMessengerFilterer{contract: contract}, nil -} - -// bindIWarpMessenger binds a generic wrapper to an already deployed contract. -func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWarpMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) - - outstruct := new(struct { - WarpBlockHash WarpBlockHash - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) - - outstruct := new(struct { - Message WarpMessage - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessageIterator struct { - Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWarpMessengerSendWarpMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWarpMessengerSendWarpMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessage struct { - Sender common.Address - MessageID [32]byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil -} - -// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// InitializableMetaData contains all meta data concerning the Initializable contract. -var InitializableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// InitializableABI is the input ABI used to generate the binding from. -// Deprecated: Use InitializableMetaData.ABI instead. -var InitializableABI = InitializableMetaData.ABI - -// Initializable is an auto generated Go binding around an Ethereum contract. -type Initializable struct { - InitializableCaller // Read-only binding to the contract - InitializableTransactor // Write-only binding to the contract - InitializableFilterer // Log filterer for contract events -} - -// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. -type InitializableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type InitializableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type InitializableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type InitializableSession struct { - Contract *Initializable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type InitializableCallerSession struct { - Contract *InitializableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type InitializableTransactorSession struct { - Contract *InitializableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. -type InitializableRaw struct { - Contract *Initializable // Generic contract binding to access the raw methods on -} - -// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type InitializableCallerRaw struct { - Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on -} - -// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type InitializableTransactorRaw struct { - Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. -func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { - contract, err := bindInitializable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil -} - -// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { - contract, err := bindInitializable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &InitializableCaller{contract: contract}, nil -} - -// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { - contract, err := bindInitializable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &InitializableTransactor{contract: contract}, nil -} - -// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. -func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { - contract, err := bindInitializable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &InitializableFilterer{contract: contract}, nil -} - -// bindInitializable binds a generic wrapper to an already deployed contract. -func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := InitializableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transact(opts, method, params...) -} - -// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. -type InitializableInitializedIterator struct { - Event *InitializableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *InitializableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *InitializableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *InitializableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// InitializableInitialized represents a Initialized event raised by the Initializable contract. -type InitializableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { - - logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { - - logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. -var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615a16380380615a1683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158c98061014d5f395ff3fe6080604052600436106101f1575f3560e01c80638280a25a11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b80638280a25a1461045257806393e245981461046657806398f3e2b414610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360305d621161015957806360305d62146103ab57806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d5780635297fae61461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506102146103a6366004614a43565b61107c565b3480156103b6575f80fd5b506103bf601481565b60405163ffffffff9091168152602001610257565b3480156103df575f80fd5b506103f36103ee366004614a7f565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b50610249603081565b348015610471575f80fd5b506102146104803660046149a4565b6113ca565b348015610490575f80fd5b5061021461049f366004614a43565b611495565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614aab565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157f483398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f8051602061581483398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614b0c565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b98565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614c18565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561069757610697614b23565b60058111156106a8576106a8614b23565b81526020016001820180546106bc90614c83565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c83565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614b23565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614dc6565b6040518263ffffffff1660e01b815260040161088b9190614df7565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614e09565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206158148339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614e09565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e34565b6001600160a01b031614610a12576109ed6060840160408501614e34565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e4f565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e4f565b8363ffffffff16818110610a5957610a59614e94565b9050602002810190610a6b9190614ea8565b610a7490614f13565b80516040519192505f916008880191610a8c91614f8e565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614df7565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f8e565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614e09565b90508086600801835f0151604051610b5b9190614f8e565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614b23565b021790555060208201516001820190610bf69082614fe3565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b9116856150b2565b8251604051919550610cac91614f8e565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d01906150c5565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150e7565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614df7565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614e09565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b9190615229565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614dc6565b90505f600282604051610e5f9190614f8e565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614e09565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614b23565b14610f4c578060405163170cc93360e21b815260040161063c9190614cb5565b6108cb8383612405565b5f805f805160206157f483398151915260030154610f7490846152b4565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157f48339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614b23565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061585483398151915255565b50565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156110c9576110c9614b23565b60038111156110da576110da614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614b23565b14611188578251604051633b0d540d60e21b815261063c91906004016152d3565b60048151600581111561119d5761119d614b23565b036111b3576111ab85612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d88a6122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614df7565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152ed565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150e7565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b5f805160206157f48339815191525f6113e283611db9565b51905060048160058111156113f9576113f9614b23565b14611419578060405163170cc93360e21b815260040161063c9190614cb5565b5f8381526005830160205260409020546001600160a01b0316331461145f57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b61149d6128d7565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156114ea576114ea614b23565b60038111156114fb576114fb614b23565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561157457611574614b23565b14611595578051604051633b0d540d60e21b815261063c91906004016152d3565b60046115a48260400151611db9565b5160058111156115b6576115b6614b23565b146116b5575f6115c5856122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016116049190614df7565b606060405180830381865af415801561161f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164391906152ed565b50915091508184604001511461166f5760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156116b157604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6116be83612d45565b50506116d660015f8051602061585483398151915255565b5050565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614df7565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b9190615322565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c83565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614b23565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061585483398151915255565b9392505050565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff16600381111561195057611950614b23565b600381111561196157611961614b23565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614b23565b141580156119fb57506003815160038111156119f8576119f8614b23565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152d3565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614dc6565b6040518263ffffffff1660e01b8152600401611b279190614df7565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614e09565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206158148339815191529190611bb590614c83565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614b23565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615350565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614e09565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061585483398151915255565b919050565b611dc16148f4565b5f8281525f80516020615874833981519152602052604090819020815160e0810190925280545f80516020615814833981519152929190829060ff166005811115611e0e57611e0e614b23565b6005811115611e1f57611e1f614b23565b8152602001600182018054611e3390614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c83565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020615814833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153da565b90815260200160405180910390205491505092915050565b5f8381525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f48339815191529284929091829060ff166003811115611fb157611fb1614b23565b6003811115611fc257611fc2614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614b23565b14612070578251604051633b0d540d60e21b815261063c91906004016152d3565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361143a565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153e9565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614b23565b0361224f5760028401546080840151612143916001600160401b0316906153e9565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd9190615409565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614b23565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614cb5565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f9190810190615429565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124779190810190615429565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614e09565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614df7565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd91906154b9565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157f4833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157f483398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361143a565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153e9565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614e09565b905080846008015f8a81526020019081526020015f205f8282546128c591906150b2565b90915550501515979650505050505050565b5f8051602061585483398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614df7565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a89190615322565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614b23565b6005811115612a1157612a11614b23565b8152602001600182018054612a2590614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c83565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614b23565b14158015612b285750600181516005811115612b2557612b25614b23565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614cb5565b600381516005811115612b5e57612b5e614b23565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f8e565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614b23565b021790555060208201516001820190612be49082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614b23565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b6116d66001600160a01b03831682613aa5565b60015f8051602061585483398151915255565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff166003811115612d9257612d92614b23565b6003811115612da357612da3614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153e9565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150e7565b612efa91906152b4565b915081866008015f8681526020019081526020015f205f828254612f1e91906150b2565b90915550612f2e905082846154dc565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157f483398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157f48339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614b23565b146131fe57805160405163170cc93360e21b815261063c9190600401614cb5565b5f82826080015161320f91906153e9565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154ef565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614b23565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f80516020615874833981519152602052604081206002015481905f8051602061581483398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614dc6565b6040518263ffffffff1660e01b815260040161358b9190614df7565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614e09565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157f483398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614b23565b148061367a575060048251600581111561367857613678614b23565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614b23565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614cb5565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614e09565b95945050505050565b6137c96148f4565b5f8281525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561381657613816614b23565b600581111561382757613827614b23565b815260200160018201805461383b90614c83565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c83565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614b23565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614b23565b0217905550602082015160018201906139b09082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061581483398151915242613b9b6060860160408701614a7f565b6001600160401b0316111580613bd55750613bb96202a300426150b2565b613bc96060860160408701614a7f565b6001600160401b031610155b15613c0f57613bea6060850160408601614a7f565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f606086018661551a565b614477565b613c34613c1f608086018661551a565b6030613c43602086018661552e565b905014613c7557613c57602085018561552e565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f848061552e565b90505f03613cac57613c91848061552e565b604051633e08a12560e11b815260040161063c929190615570565b5f60088201613cbb868061552e565b604051613cc99291906153da565b90815260200160405180910390205414613d0257613ce7848061552e565b60405163a41f772f60e01b815260040161063c929190615570565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a8061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b61552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a7f565b6001600160401b03168152602001613df560608b018b61551a565b613dfe90615583565b8152602001613e1060808b018b61551a565b613e1990615583565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e4791906156a5565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e88919081019061575c565b5f82815260068601602052604090209193509150613ea68282614fe3565b508160088401613eb6888061552e565b604051613ec49291906153da565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614df7565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614e09565b6040805160e081019091529091508060018152602001613f60898061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614b23565b0217905550602082015160018201906140089082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a6888061552e565b6040516140b49291906153da565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a7f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a7f565b6141b160e0860160c0870161579f565b6141c2610100870160e088016157b8565b6101008701356141da61014089016101208a01614e34565b614609565b5f805160206158148339815191525f6001600160401b0380841690851611156142135761420c8385615409565b9050614220565b61421d8484615409565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b0316906150b2565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153e9565b6001600160401b03169052505b60608101516142d79060646154ef565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150e7565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d91906150b2565b9052506040810180516001600160401b038716919061436d9083906154dc565b9052506001840154604082015160649161439291600160401b90910460ff16906150e7565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206158748339815191526020526040812060020180545f80516020615814833981519152919060089061444c90600160401b90046001600160401b03166157d8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e4f565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e4f565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e4f565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e4f565b90508110156116d6576145466020830183614e4f565b6145516001846154dc565b81811061456057614560614e94565b90506020020160208101906145759190614e34565b6001600160a01b031661458b6020840184614e4f565b8381811061459b5761459b614e94565b90506020020160208101906145b09190614e34565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157f483398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f8051602061581483398151915290815560146147fa60608401604085016157b8565b60ff161180614819575061481460608301604084016157b8565b60ff16155b1561484d5761482e60608301604084016157b8565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d60608301604084016157b8565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a7f565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c83565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b5f8060408385031215614a54575f80fd5b614a5d83614956565b946020939093013593505050565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a8f575f80fd5b81356118fc81614a6b565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614abd575f80fd5b83356001600160401b03811115614ad2575f80fd5b840160a08187031215614ae3575f80fd5b9250614af160208501614a9a565b91506040840135614b0181614a6b565b809150509250925092565b5f6101408284031215614b1d575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b4757614b47614b23565b9052565b5f5b83811015614b65578181015183820152602001614b4d565b50505f910152565b5f8151808452614b84816020860160208601614b4b565b601f01601f19169290920160200192915050565b60208152614baa602082018351614b37565b5f602083015160e06040840152614bc5610100840182614b6d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c29575f80fd5b82356001600160401b0380821115614c3f575f80fd5b818501915085601f830112614c52575f80fd5b813581811115614c60575f80fd5b866020828501011115614c71575f80fd5b60209290920196919550909350505050565b600181811c90821680614c9757607f821691505b602082108103614b1d57634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b37565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cf957614cf9614cc3565b60405290565b604080519081016001600160401b0381118282101715614cf957614cf9614cc3565b604051601f8201601f191681016001600160401b0381118282101715614d4957614d49614cc3565b604052919050565b5f6001600160401b03821115614d6957614d69614cc3565b50601f01601f191660200190565b5f82601f830112614d86575f80fd5b8151614d99614d9482614d51565b614d21565b818152846020838601011115614dad575f80fd5b614dbe826020830160208701614b4b565b949350505050565b5f60208284031215614dd6575f80fd5b81516001600160401b03811115614deb575f80fd5b614dbe84828501614d77565b602081525f6118fc6020830184614b6d565b5f60208284031215614e19575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e44575f80fd5b81356118fc81614e20565b5f808335601e19843603018112614e64575f80fd5b8301803591506001600160401b03821115614e7d575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614ebc575f80fd5b9190910192915050565b5f82601f830112614ed5575f80fd5b8135614ee3614d9482614d51565b818152846020838601011115614ef7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f23575f80fd5b614f2b614cd7565b82356001600160401b0380821115614f41575f80fd5b614f4d36838701614ec6565b83526020850135915080821115614f62575f80fd5b50614f6f36828601614ec6565b6020830152506040830135614f8381614a6b565b604082015292915050565b5f8251614ebc818460208701614b4b565b601f82111561064557805f5260205f20601f840160051c81016020851015614fc45750805b601f840160051c820191505b81811015611b67575f8155600101614fd0565b81516001600160401b03811115614ffc57614ffc614cc3565b6150108161500a8454614c83565b84614f9f565b602080601f831160018114615043575f841561502c5750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b8281101561507157888601518255948401946001909101908401615052565b508582101561508e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa61509e565b5f63ffffffff8083168181036150dd576150dd61509e565b6001019392505050565b8082028115828204841417610faa57610faa61509e565b5f808335601e19843603018112615113575f80fd5b83016020810192503590506001600160401b03811115615131575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561521c57848303601f19018952813536889003605e190181126151a3575f80fd5b870160606151b182806150fe565b8287526151c1838801828461513f565b925050506151d1868301836150fe565b868303888801526151e383828461513f565b9250505060408083013592506151f883614a6b565b6001600160401b03929092169490910193909352978301979083019060010161517e565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561524d81614e20565b6001600160a01b031660608381019190915283013536849003601e19018112615274575f80fd5b83016020810190356001600160401b0381111561528f575f80fd5b8060051b36038213156152a0575f80fd5b6080808501526137b860a085018284615167565b5f826152ce57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152e7576152e7614b23565b91905290565b5f805f606084860312156152ff575f80fd5b83519250602084015161531181614a6b565b6040850151909250614b0181614a6b565b5f8060408385031215615333575f80fd5b82519150602083015161534581614949565b809150509250929050565b5f60208083525f845461536281614c83565b806020870152604060018084165f8114615383576001811461539f576153cc565b60ff19851660408a0152604084151560051b8a010195506153cc565b895f5260205f205f5b858110156153c35781548b82018601529083019088016153a8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c361509e565b6001600160401b038281168282160390808211156123c3576123c361509e565b5f806040838503121561543a575f80fd5b82516001600160401b0380821115615450575f80fd5b9084019060608287031215615463575f80fd5b61546b614cd7565b82518152602083015161547d81614e20565b6020820152604083015182811115615493575f80fd5b61549f88828601614d77565b604083015250809450505050602083015161534581614949565b5f80604083850312156154ca575f80fd5b82519150602083015161534581614a6b565b81810381811115610faa57610faa61509e565b6001600160401b038181168382160280821691908281146155125761551261509e565b505092915050565b5f8235603e19833603018112614ebc575f80fd5b5f808335601e19843603018112615543575f80fd5b8301803591506001600160401b0382111561555c575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614dbe60208301848661513f565b5f60408236031215615593575f80fd5b61559b614cff565b6155a483614956565b81526020808401356001600160401b03808211156155c0575f80fd5b9085019036601f8301126155d2575f80fd5b8135818111156155e4576155e4614cc3565b8060051b91506155f5848301614d21565b818152918301840191848101903684111561560e575f80fd5b938501935b83851015615638578435925061562883614e20565b8282529385019390850190615613565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b0316825293830193600192909201919083019061567c565b60208152815160208201525f602083015160e060408401526156cb610100840182614b6d565b90506040840151601f19808584030160608601526156e98383614b6d565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615719838361564a565b925060a08601519150808584030160c086015250615737828261564a565b91505060c084015161575460e08501826001600160401b03169052565b509392505050565b5f806040838503121561576d575f80fd5b8251915060208301516001600160401b03811115615789575f80fd5b61579585828601614d77565b9150509250929050565b5f602082840312156157af575f80fd5b6118fc82614a9a565b5f602082840312156157c8575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150dd576150dd61509e56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a264697066735822122000dc11d0ff59903cf09d18ad2de1ed503693ff3d1a2c42c47ae695f27ecb47f264736f6c63430008190033", -} - -// NativeTokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use NativeTokenStakingManagerMetaData.ABI instead. -var NativeTokenStakingManagerABI = NativeTokenStakingManagerMetaData.ABI - -// NativeTokenStakingManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use NativeTokenStakingManagerMetaData.Bin instead. -var NativeTokenStakingManagerBin = NativeTokenStakingManagerMetaData.Bin - -// DeployNativeTokenStakingManager deploys a new Ethereum contract, binding an instance of NativeTokenStakingManager to it. -func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *NativeTokenStakingManager, error) { - parsed, err := NativeTokenStakingManagerMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) - NativeTokenStakingManagerBin = strings.ReplaceAll(NativeTokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NativeTokenStakingManagerBin), backend, init) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil -} - -// NativeTokenStakingManager is an auto generated Go binding around an Ethereum contract. -type NativeTokenStakingManager struct { - NativeTokenStakingManagerCaller // Read-only binding to the contract - NativeTokenStakingManagerTransactor // Write-only binding to the contract - NativeTokenStakingManagerFilterer // Log filterer for contract events -} - -// NativeTokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// NativeTokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// NativeTokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type NativeTokenStakingManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// NativeTokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type NativeTokenStakingManagerSession struct { - Contract *NativeTokenStakingManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// NativeTokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type NativeTokenStakingManagerCallerSession struct { - Contract *NativeTokenStakingManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// NativeTokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type NativeTokenStakingManagerTransactorSession struct { - Contract *NativeTokenStakingManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// NativeTokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type NativeTokenStakingManagerRaw struct { - Contract *NativeTokenStakingManager // Generic contract binding to access the raw methods on -} - -// NativeTokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerCallerRaw struct { - Contract *NativeTokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// NativeTokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerTransactorRaw struct { - Contract *NativeTokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewNativeTokenStakingManager creates a new instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManager(address common.Address, backend bind.ContractBackend) (*NativeTokenStakingManager, error) { - contract, err := bindNativeTokenStakingManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil -} - -// NewNativeTokenStakingManagerCaller creates a new read-only instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*NativeTokenStakingManagerCaller, error) { - contract, err := bindNativeTokenStakingManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerCaller{contract: contract}, nil -} - -// NewNativeTokenStakingManagerTransactor creates a new write-only instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*NativeTokenStakingManagerTransactor, error) { - contract, err := bindNativeTokenStakingManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerTransactor{contract: contract}, nil -} - -// NewNativeTokenStakingManagerFilterer creates a new log filterer instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*NativeTokenStakingManagerFilterer, error) { - contract, err := bindNativeTokenStakingManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerFilterer{contract: contract}, nil -} - -// bindNativeTokenStakingManager binds a generic wrapper to an already deployed contract. -func bindNativeTokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := NativeTokenStakingManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _NativeTokenStakingManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { - return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) -} - -// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. -// -// Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) NATIVEMINTER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "NATIVE_MINTER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. -// -// Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) NATIVEMINTER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) -} - -// NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. -// -// Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) NATIVEMINTER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. -// -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initialize", settings) -} - -// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. -// -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) -} - -// Initialize is a paid mutator transaction binding the contract method 0xc257a0f5. -// -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. -// -// Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) -} - -// NativeTokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegationEndedIterator struct { - Event *NativeTokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegationEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*NativeTokenStakingManagerDelegationEnded, error) { - event := new(NativeTokenStakingManagerDelegationEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorAddedIterator struct { - Event *NativeTokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenStakingManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegatorAddedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorAdded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenStakingManagerDelegatorAdded, error) { - event := new(NativeTokenStakingManagerDelegatorAdded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRegisteredIterator struct { - Event *NativeTokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegatorRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*NativeTokenStakingManagerDelegatorRegistered, error) { - event := new(NativeTokenStakingManagerDelegatorRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *NativeTokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialValidatorCreatedIterator struct { - Event *NativeTokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*NativeTokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*NativeTokenStakingManagerInitialValidatorCreated, error) { - event := new(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitializedIterator struct { - Event *NativeTokenStakingManagerInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialized(log types.Log) (*NativeTokenStakingManagerInitialized, error) { - event := new(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdatedIterator struct { - Event *NativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerUptimeUpdatedIterator{contract: _NativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerUptimeUpdated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*NativeTokenStakingManagerUptimeUpdated, error) { - event := new(NativeTokenStakingManagerUptimeUpdated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodCreatedIterator struct { - Event *NativeTokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*NativeTokenStakingManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*NativeTokenStakingManagerValidationPeriodCreated, error) { - event := new(NativeTokenStakingManagerValidationPeriodCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodEndedIterator struct { - Event *NativeTokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*NativeTokenStakingManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidationPeriodEndedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*NativeTokenStakingManagerValidationPeriodEnded, error) { - event := new(NativeTokenStakingManagerValidationPeriodEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *NativeTokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*NativeTokenStakingManagerValidationPeriodRegistered, error) { - event := new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *NativeTokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*NativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerValidatorRemovalInitialized, error) { - event := new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorWeightUpdateIterator struct { - Event *NativeTokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*NativeTokenStakingManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*NativeTokenStakingManagerValidatorWeightUpdate, error) { - event := new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerMetaData contains all meta data concerning the PoSValidatorManager contract. -var PoSValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// PoSValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use PoSValidatorManagerMetaData.ABI instead. -var PoSValidatorManagerABI = PoSValidatorManagerMetaData.ABI - -// PoSValidatorManager is an auto generated Go binding around an Ethereum contract. -type PoSValidatorManager struct { - PoSValidatorManagerCaller // Read-only binding to the contract - PoSValidatorManagerTransactor // Write-only binding to the contract - PoSValidatorManagerFilterer // Log filterer for contract events -} - -// PoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type PoSValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type PoSValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type PoSValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type PoSValidatorManagerSession struct { - Contract *PoSValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type PoSValidatorManagerCallerSession struct { - Contract *PoSValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// PoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type PoSValidatorManagerTransactorSession struct { - Contract *PoSValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type PoSValidatorManagerRaw struct { - Contract *PoSValidatorManager // Generic contract binding to access the raw methods on -} - -// PoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type PoSValidatorManagerCallerRaw struct { - Contract *PoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// PoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type PoSValidatorManagerTransactorRaw struct { - Contract *PoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewPoSValidatorManager creates a new instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*PoSValidatorManager, error) { - contract, err := bindPoSValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &PoSValidatorManager{PoSValidatorManagerCaller: PoSValidatorManagerCaller{contract: contract}, PoSValidatorManagerTransactor: PoSValidatorManagerTransactor{contract: contract}, PoSValidatorManagerFilterer: PoSValidatorManagerFilterer{contract: contract}}, nil -} - -// NewPoSValidatorManagerCaller creates a new read-only instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoSValidatorManagerCaller, error) { - contract, err := bindPoSValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &PoSValidatorManagerCaller{contract: contract}, nil -} - -// NewPoSValidatorManagerTransactor creates a new write-only instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoSValidatorManagerTransactor, error) { - contract, err := bindPoSValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &PoSValidatorManagerTransactor{contract: contract}, nil -} - -// NewPoSValidatorManagerFilterer creates a new log filterer instance of PoSValidatorManager, bound to a specific deployed contract. -func NewPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoSValidatorManagerFilterer, error) { - contract, err := bindPoSValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &PoSValidatorManagerFilterer{contract: contract}, nil -} - -// bindPoSValidatorManager binds a generic wrapper to an already deployed contract. -func bindPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := PoSValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_PoSValidatorManager *PoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoSValidatorManager.Contract.PoSValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_PoSValidatorManager *PoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_PoSValidatorManager *PoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.PoSValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_PoSValidatorManager *PoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoSValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_PoSValidatorManager *PoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoSValidatorManager *PoSValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _PoSValidatorManager.Contract.ADDRESSLENGTH(&_PoSValidatorManager.CallOpts) -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) -} - -// BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. -// -// Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _PoSValidatorManager.Contract.BIPSCONVERSIONFACTOR(&_PoSValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoSValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. -// -// Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _PoSValidatorManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoSValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) -} - -// MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. -// -// Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _PoSValidatorManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_PoSValidatorManager.CallOpts) -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. -// -// Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoSValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoSValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoSValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoSValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoSValidatorManager *PoSValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoSValidatorManager *PoSValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _PoSValidatorManager.Contract.WARPMESSENGER(&_PoSValidatorManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoSValidatorManager *PoSValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoSValidatorManager *PoSValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoSValidatorManager.Contract.GetValidator(&_PoSValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoSValidatorManager.Contract.GetWeight(&_PoSValidatorManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoSValidatorManager.Contract.RegisteredValidators(&_PoSValidatorManager.CallOpts, nodeID) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "valueToWeight", value) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) -} - -// ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. -// -// Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _PoSValidatorManager.Contract.ValueToWeight(&_PoSValidatorManager.CallOpts, value) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_PoSValidatorManager *PoSValidatorManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { - var out []interface{} - err := _PoSValidatorManager.contract.Call(opts, &out, "weightToValue", weight) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_PoSValidatorManager *PoSValidatorManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) -} - -// WeightToValue is a free data retrieval call binding the contract method 0x62065856. -// -// Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_PoSValidatorManager *PoSValidatorManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _PoSValidatorManager.Contract.WeightToValue(&_PoSValidatorManager.CallOpts, weight) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. -// -// Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ClaimDelegationFees(&_PoSValidatorManager.TransactOpts, validationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. -// -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteDelegatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. -// -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndDelegation(&_PoSValidatorManager.TransactOpts, messageIndex, delegationID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteEndValidation(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.CompleteValidatorRegistration(&_PoSValidatorManager.TransactOpts, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. -// -// Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. -// -// Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ForceInitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. -// -// Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndDelegation(&_PoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x76f78621. -// -// Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeEndValidation(&_PoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.InitializeValidatorSet(&_PoSValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendEndValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoSValidatorManager.TransactOpts, validationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) -} - -// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. -// -// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.ResendUpdateDelegation(&_PoSValidatorManager.TransactOpts, delegationID) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. -// -// Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_PoSValidatorManager *PoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _PoSValidatorManager.Contract.SubmitUptimeProof(&_PoSValidatorManager.TransactOpts, validationID, messageIndex) -} - -// PoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegationEndedIterator struct { - Event *PoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegationEndedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegationEndedIterator{contract: _PoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil -} - -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegationEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. -// -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*PoSValidatorManagerDelegationEnded, error) { - event := new(PoSValidatorManagerDelegationEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorAddedIterator struct { - Event *PoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*PoSValidatorManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegatorAddedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegatorAdded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*PoSValidatorManagerDelegatorAdded, error) { - event := new(PoSValidatorManagerDelegatorAdded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRegisteredIterator struct { - Event *PoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRegisteredIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegatorRegisteredIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegatorRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. -// -// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*PoSValidatorManagerDelegatorRegistered, error) { - event := new(PoSValidatorManagerDelegatorRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRemovalInitializedIterator struct { - Event *PoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the PoSValidatorManager contract. -type PoSValidatorManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*PoSValidatorManagerDelegatorRemovalInitializedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. -// -// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*PoSValidatorManagerDelegatorRemovalInitialized, error) { - event := new(PoSValidatorManagerDelegatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitialValidatorCreatedIterator struct { - Event *PoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoSValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerInitialValidatorCreatedIterator{contract: _PoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerInitialValidatorCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoSValidatorManagerInitialValidatorCreated, error) { - event := new(PoSValidatorManagerInitialValidatorCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitializedIterator struct { - Event *PoSValidatorManagerInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerInitialized represents a Initialized event raised by the PoSValidatorManager contract. -type PoSValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoSValidatorManagerInitializedIterator, error) { - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &PoSValidatorManagerInitializedIterator{contract: _PoSValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoSValidatorManagerInitialized, error) { - event := new(PoSValidatorManagerInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the PoSValidatorManager contract. -type PoSValidatorManagerUptimeUpdatedIterator struct { - Event *PoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the PoSValidatorManager contract. -type PoSValidatorManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerUptimeUpdatedIterator{contract: _PoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil -} - -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerUptimeUpdated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*PoSValidatorManagerUptimeUpdated, error) { - event := new(PoSValidatorManagerUptimeUpdated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodCreatedIterator struct { - Event *PoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoSValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidationPeriodCreatedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidationPeriodCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoSValidatorManagerValidationPeriodCreated, error) { - event := new(PoSValidatorManagerValidationPeriodCreated) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodEndedIterator struct { - Event *PoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoSValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidationPeriodEndedIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidationPeriodEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoSValidatorManagerValidationPeriodEnded, error) { - event := new(PoSValidatorManagerValidationPeriodEnded) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodRegisteredIterator struct { - Event *PoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoSValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidationPeriodRegisteredIterator{contract: _PoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidationPeriodRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoSValidatorManagerValidationPeriodRegistered, error) { - event := new(PoSValidatorManagerValidationPeriodRegistered) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorRemovalInitializedIterator struct { - Event *PoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoSValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidatorRemovalInitializedIterator{contract: _PoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoSValidatorManagerValidatorRemovalInitialized, error) { - event := new(PoSValidatorManagerValidatorRemovalInitialized) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorWeightUpdateIterator struct { - Event *PoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoSValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoSValidatorManager contract. -type PoSValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoSValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &PoSValidatorManagerValidatorWeightUpdateIterator{contract: _PoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoSValidatorManagerValidatorWeightUpdate) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoSValidatorManager *PoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoSValidatorManagerValidatorWeightUpdate, error) { - event := new(PoSValidatorManagerValidatorWeightUpdate) - if err := _PoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. -var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. -var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI - -// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeable struct { - ReentrancyGuardUpgradeableCaller // Read-only binding to the contract - ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract - ReentrancyGuardUpgradeableFilterer // Log filterer for contract events -} - -// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReentrancyGuardUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReentrancyGuardUpgradeableSession struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReentrancyGuardUpgradeableCallerSession struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReentrancyGuardUpgradeableTransactorSession struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableRaw struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCallerRaw struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactorRaw struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { - contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil -} - -// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { - contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil -} - -// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. -func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitializedIterator struct { - Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. -var ValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use ValidatorManagerMetaData.ABI instead. -var ValidatorManagerABI = ValidatorManagerMetaData.ABI - -// ValidatorManager is an auto generated Go binding around an Ethereum contract. -type ValidatorManager struct { - ValidatorManagerCaller // Read-only binding to the contract - ValidatorManagerTransactor // Write-only binding to the contract - ValidatorManagerFilterer // Log filterer for contract events -} - -// ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ValidatorManagerSession struct { - Contract *ValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ValidatorManagerCallerSession struct { - Contract *ValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ValidatorManagerTransactorSession struct { - Contract *ValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ValidatorManagerRaw struct { - Contract *ValidatorManager // Generic contract binding to access the raw methods on -} - -// ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ValidatorManagerCallerRaw struct { - Contract *ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ValidatorManagerTransactorRaw struct { - Contract *ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewValidatorManager creates a new instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManager(address common.Address, backend bind.ContractBackend) (*ValidatorManager, error) { - contract, err := bindValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil -} - -// NewValidatorManagerCaller creates a new read-only instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ValidatorManagerCaller, error) { - contract, err := bindValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ValidatorManagerCaller{contract: contract}, nil -} - -// NewValidatorManagerTransactor creates a new write-only instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorManagerTransactor, error) { - contract, err := bindValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ValidatorManagerTransactor{contract: contract}, nil -} - -// NewValidatorManagerFilterer creates a new log filterer instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorManagerFilterer, error) { - contract, err := bindValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ValidatorManagerFilterer{contract: contract}, nil -} - -// bindValidatorManager binds a generic wrapper to an already deployed contract. -func bindValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorManager *ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorManager.Contract.ValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorManager *ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorManager *ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorManager *ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorManager *ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorManager *ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerDelegatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { + return it.fail } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +// NativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte + ValidationID [32]byte + StartTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRegisteredIterator, error) { -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerDelegatorRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) -} +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) -} + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerDelegatorRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return err + } + event.Raw = log -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +// Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*NativeTokenStakingManagerDelegatorRegistered, error) { + event := new(NativeTokenStakingManagerDelegatorRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ValidatorManager contract. -type ValidatorManagerInitialValidatorCreatedIterator struct { - Event *ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// NativeTokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { + Event *NativeTokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14569,7 +1637,7 @@ type ValidatorManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14578,7 +1646,7 @@ func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialValidatorCreated) + it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14593,7 +1661,7 @@ func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialValidatorCreated) + it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14609,61 +1677,60 @@ func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Error() error { +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Close() error { +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ValidatorManager contract. -type ValidatorManagerInitialValidatorCreated struct { +// NativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte ValidationID [32]byte - NodeID common.Hash - Weight *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ValidatorManagerInitialValidatorCreatedIterator, error) { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ValidatorManagerInitialValidatorCreatedIterator{contract: _ValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -14673,8 +1740,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerInitialValidatorCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -14695,21 +1762,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated( }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ValidatorManagerInitialValidatorCreated, error) { - event := new(ValidatorManagerInitialValidatorCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerDelegatorRemovalInitialized, error) { + event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ValidatorManager contract. -type ValidatorManagerInitializedIterator struct { - Event *ValidatorManagerInitialized // Event containing the contract specifics and raw log +// NativeTokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialValidatorCreatedIterator struct { + Event *NativeTokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14723,7 +1790,7 @@ type ValidatorManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerInitializedIterator) Next() bool { +func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14732,7 +1799,7 @@ func (it *ValidatorManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialized) + it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14747,7 +1814,7 @@ func (it *ValidatorManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerInitialized) + it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14763,41 +1830,61 @@ func (it *ValidatorManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerInitializedIterator) Error() error { +func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerInitializedIterator) Close() error { +func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerInitialized represents a Initialized event raised by the ValidatorManager contract. -type ValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatorManagerInitializedIterator, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*NativeTokenStakingManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } - return &ValidatorManagerInitializedIterator{contract: _ValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialized) (event.Subscription, error) { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } @@ -14807,8 +1894,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.W select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(NativeTokenStakingManagerInitialValidatorCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return err } event.Raw = log @@ -14829,21 +1916,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.W }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ValidatorManagerInitialized, error) { - event := new(ValidatorManagerInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*NativeTokenStakingManagerInitialValidatorCreated, error) { + event := new(NativeTokenStakingManagerInitialValidatorCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodCreatedIterator struct { - Event *ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log +// NativeTokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitializedIterator struct { + Event *NativeTokenStakingManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14857,7 +1944,7 @@ type ValidatorManagerValidationPeriodCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { +func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14866,7 +1953,7 @@ func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodCreated) + it.Event = new(NativeTokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14881,7 +1968,7 @@ func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodCreated) + it.Event = new(NativeTokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14897,71 +1984,41 @@ func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Error() error { +func (it *NativeTokenStakingManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Close() error { +func (it *NativeTokenStakingManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &ValidatorManagerValidationPeriodCreatedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialized) (event.Subscription, error) { - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -14971,8 +2028,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + event := new(NativeTokenStakingManagerInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -14993,21 +2050,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated( }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ValidatorManagerValidationPeriodCreated, error) { - event := new(ValidatorManagerValidationPeriodCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialized(log types.Log) (*NativeTokenStakingManagerInitialized, error) { + event := new(NativeTokenStakingManagerInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodEndedIterator struct { - Event *ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log +// NativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerUptimeUpdatedIterator struct { + Event *NativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15021,7 +2078,7 @@ type ValidatorManagerValidationPeriodEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15030,7 +2087,7 @@ func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodEnded) + it.Event = new(NativeTokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15045,7 +2102,7 @@ func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodEnded) + it.Event = new(NativeTokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15061,60 +2118,52 @@ func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodEndedIterator) Error() error { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidationPeriodEndedIterator) Close() error { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodEnded struct { +// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerUptimeUpdated struct { ValidationID [32]byte - Status uint8 + Uptime uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ValidatorManagerValidationPeriodEndedIterator, error) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &ValidatorManagerValidationPeriodEndedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerUptimeUpdatedIterator{contract: _NativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -15124,8 +2173,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodEnded) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + event := new(NativeTokenStakingManagerUptimeUpdated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -15146,21 +2195,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(op }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ValidatorManagerValidationPeriodEnded, error) { - event := new(ValidatorManagerValidationPeriodEnded) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*NativeTokenStakingManagerUptimeUpdated, error) { + event := new(NativeTokenStakingManagerUptimeUpdated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodRegisteredIterator struct { - Event *ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log +// NativeTokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodCreatedIterator struct { + Event *NativeTokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15174,7 +2223,7 @@ type ValidatorManagerValidationPeriodRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15183,7 +2232,7 @@ func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodRegistered) + it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15198,7 +2247,7 @@ func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodRegistered) + it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15214,53 +2263,71 @@ func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Error() error { +func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Close() error { +func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ValidatorManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*NativeTokenStakingManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } - return &ValidatorManagerValidationPeriodRegisteredIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } @@ -15270,8 +2337,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegister select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodRegistered) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + event := new(NativeTokenStakingManagerValidationPeriodCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return err } event.Raw = log @@ -15292,21 +2359,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegister }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ValidatorManagerValidationPeriodRegistered, error) { - event := new(ValidatorManagerValidationPeriodRegistered) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*NativeTokenStakingManagerValidationPeriodCreated, error) { + event := new(NativeTokenStakingManagerValidationPeriodCreated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ValidatorManager contract. -type ValidatorManagerValidatorRemovalInitializedIterator struct { - Event *ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log +// NativeTokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodEndedIterator struct { + Event *NativeTokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15320,7 +2387,7 @@ type ValidatorManagerValidatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { +func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15329,7 +2396,7 @@ func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorRemovalInitialized) + it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15344,7 +2411,7 @@ func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorRemovalInitialized) + it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15360,62 +2427,60 @@ func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Error() error { +func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Close() error { +func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ValidatorManager contract. -type ValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ValidatorManagerValidatorRemovalInitializedIterator, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*NativeTokenStakingManagerValidationPeriodEndedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } - return &ValidatorManagerValidatorRemovalInitializedIterator{contract: _ValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerValidationPeriodEndedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } @@ -15425,8 +2490,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitiali select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidatorRemovalInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + event := new(NativeTokenStakingManagerValidationPeriodEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return err } event.Raw = log @@ -15447,21 +2512,21 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitiali }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ValidatorManagerValidatorRemovalInitialized, error) { - event := new(ValidatorManagerValidatorRemovalInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*NativeTokenStakingManagerValidationPeriodEnded, error) { + event := new(NativeTokenStakingManagerValidationPeriodEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ValidatorManager contract. -type ValidatorManagerValidatorWeightUpdateIterator struct { - Event *ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log +// NativeTokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodRegisteredIterator struct { + Event *NativeTokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15475,7 +2540,7 @@ type ValidatorManagerValidatorWeightUpdateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { +func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15484,7 +2549,7 @@ func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorWeightUpdate) + it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15499,7 +2564,7 @@ func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorWeightUpdate) + it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15515,62 +2580,53 @@ func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Error() error { +func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Close() error { +func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ValidatorManager contract. -type ValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ValidatorManagerValidatorWeightUpdateIterator, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } - return &ValidatorManagerValidatorWeightUpdateIterator{contract: _ValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } @@ -15580,8 +2636,8 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidatorWeightUpdate) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + event := new(NativeTokenStakingManagerValidationPeriodRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return err } event.Raw = log @@ -15602,533 +2658,324 @@ func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(op }), nil } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ValidatorManagerValidatorWeightUpdate, error) { - event := new(ValidatorManagerValidatorWeightUpdate) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*NativeTokenStakingManagerValidationPeriodRegistered, error) { + event := new(NativeTokenStakingManagerValidationPeriodRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. -var ValidatorMessagesMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", -} - -// ValidatorMessagesABI is the input ABI used to generate the binding from. -// Deprecated: Use ValidatorMessagesMetaData.ABI instead. -var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI - -// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ValidatorMessagesMetaData.Bin instead. -var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin - -// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. -func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { - parsed, err := ValidatorMessagesMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil -} - -// ValidatorMessages is an auto generated Go binding around an Ethereum contract. -type ValidatorMessages struct { - ValidatorMessagesCaller // Read-only binding to the contract - ValidatorMessagesTransactor // Write-only binding to the contract - ValidatorMessagesFilterer // Log filterer for contract events -} - -// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. -type ValidatorMessagesCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ValidatorMessagesTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ValidatorMessagesFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ValidatorMessagesSession struct { - Contract *ValidatorMessages // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ValidatorMessagesCallerSession struct { - Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ValidatorMessagesTransactorSession struct { - Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. -type ValidatorMessagesRaw struct { - Contract *ValidatorMessages // Generic contract binding to access the raw methods on -} - -// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ValidatorMessagesCallerRaw struct { - Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on -} - -// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ValidatorMessagesTransactorRaw struct { - Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { - contract, err := bindValidatorMessages(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil -} - -// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { - contract, err := bindValidatorMessages(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ValidatorMessagesCaller{contract: contract}, nil -} - -// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { - contract, err := bindValidatorMessages(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ValidatorMessagesTransactor{contract: contract}, nil -} - -// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { - contract, err := bindValidatorMessages(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ValidatorMessagesFilterer{contract: contract}, nil -} - -// bindValidatorMessages binds a generic wrapper to an already deployed contract. -func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ValidatorMessagesMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorMessages.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) - - if err != nil { - return *new([32]byte), *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) - - return out0, out1, err - -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) -} - -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} +// NativeTokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorRemovalInitializedIterator struct { + Event *NativeTokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) - - if err != nil { - return *new([]byte), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) -} - -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) - - if err != nil { - return *new([]byte), err + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) -} - -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) - - if err != nil { - return *new([]byte), err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() } +} - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail } -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +// NativeTokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*NativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { - if err != nil { - return *new(ValidatorMessagesValidationPeriod), err + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) - - return out0, err - -} - -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. -// -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { - return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { - return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) -} +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. -// -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { - return *new([32]byte), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { - return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerValidatorRemovalInitialized, error) { + event := new(NativeTokenStakingManagerValidatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. -// -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { - return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) -} +// NativeTokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorWeightUpdateIterator struct { + Event *NativeTokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data - if err != nil { - return *new([32]byte), *new(bool), err + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(bool)).(*bool) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, out1, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { + return it.fail } -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +// NativeTokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos } -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*NativeTokenStakingManagerValidatorWeightUpdateIterator, error) { - if err != nil { - return *new([32]byte), *new(uint64), *new(uint64), err + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) - out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) - - return out0, out1, out2, err - -} - -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. -// -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &NativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil } -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) -} +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. -// -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { - return *new([32]byte), *new(uint64), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) - - return out0, out1, err - -} - -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. -// -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { - return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { - return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*NativeTokenStakingManagerValidatorWeightUpdate, error) { + event := new(NativeTokenStakingManagerValidatorWeightUpdate) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index bf9a2db99..d60664367 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -68,17 +68,6 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } -// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. -type ValidatorMessagesValidationPeriod struct { - SubnetID [32]byte - NodeID []byte - BlsPublicKey []byte - RegistrationExpiry uint64 - RemainingBalanceOwner PChainOwner - DisableOwner PChainOwner - Weight uint64 -} - // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -88,126 +77,135 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// WarpBlockHash is an auto generated low-level Go binding around an user-defined struct. -type WarpBlockHash struct { - SourceChainID [32]byte - BlockHash [32]byte +// PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. +var PoAValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516137da3803806137da83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61368d8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461287e565b610312565b005b6101496101593660046128ad565b6105a2565b61014961016c3660046128fb565b610ba8565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461287e565b610bb6565b6040516001600160401b03909116815260200161018a565b610149610bca565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461287e565b610bdd565b6101cd61025a36600461292a565b610bf2565b61014961026d3660046128fb565b610c0e565b6102216005600160991b0181565b6101cd5f8051602061361883398151915281565b6101496102a236600461287e565b610e03565b6101e3601481565b6101496102bd366004612983565b610f40565b6102d56102d036600461287e565b61104e565b60405161018a9190612a40565b6101a66202a30081565b6101496102fa366004612ac0565b61119d565b6101cd61030d366004612ae2565b6111da565b5f8181525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561035f5761035f6129bf565b6005811115610370576103706129bf565b815260200160018201805461038490612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612b4d565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610466576104666129bf565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60405180910390fd5b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c96565b6040518263ffffffff1660e01b815260040161055c9190612cc7565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612cd9565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206136188339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612cd9565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612ac0565b6001600160a01b0316146106d8576106b36060840160408501612ac0565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612cf0565b905090505f805b828163ffffffff1610156109ce575f6107096060880188612cf0565b8363ffffffff1681811061071f5761071f612d35565b90506020028101906107319190612d49565b61073a90612db4565b80516040519192505f91600888019161075291612e2d565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612cc7565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612e2d565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612cd9565b90508086600801835f01516040516108219190612e2d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156108a3576108a36129bf565b0217905550602082015160018201906108bc9082612e89565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610961911685612f5c565b825160405191955061097291612e2d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109c790612f6f565b90506106ed565b506004830181905560018301546064906109f290600160401b900460ff1683612f91565b1015610a1457604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610a3887611235565b604001516040518263ffffffff1660e01b8152600401610a589190612cc7565b602060405180830381865af4158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190612cd9565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ad191906130cb565b5f60405180830381865af4158015610aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b129190810190612c96565b90505f600282604051610b259190612e2d565b602060405180830381855afa158015610b40573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b639190612cd9565b9050828114610b8f57604051631872fc8d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610bb18161134b565b505050565b5f610bc08261104e565b6080015192915050565b610bd26116fe565b610bdb5f611759565b565b610be56116fe565b610bee816117c9565b5050565b5f610bfb6116fe565b610c058383611aad565b90505b92915050565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb5610c4186611235565b604001516040518263ffffffff1660e01b8152600401610c619190612cc7565b6040805180830381865af4158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f919061316e565b9150915080610cc557604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610cdf90612b4d565b90505f03610d035760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610d2957610d296129bf565b14610d5c575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f8281526006840160205260408120610d74916127f2565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206136188339815191529190610e4a90612b4d565b90505f03610e6e5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e9457610e946129bf565b14610ec7575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f00919060040161318f565b6020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190612cd9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f845750825b90505f826001600160401b03166001148015610f9f5750303b155b905081158015610fad575080155b15610fcb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ff557845460ff60401b1916600160401b1785555b610fff8787612095565b831561104557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611056612829565b5f8281525f80516020613638833981519152602052604090819020815160e0810190925280545f80516020613618833981519152929190829060ff1660058111156110a3576110a36129bf565b60058111156110b4576110b46129bf565b81526020016001820180546110c890612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546110f490612b4d565b801561113f5780601f106111165761010080835404028352916020019161113f565b820191905f5260205f20905b81548152906001019060200180831161112257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6111a56116fe565b6001600160a01b0381166111ce57604051631e4fbdf760e01b81525f6004820152602401610499565b6111d781611759565b50565b6040515f905f80516020613618833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061121d9086908690613219565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112c09190810190613228565b91509150806112e257604051636b2f19e960e01b815260040160405180910390fd5b815115611308578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b031615611344576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f611354612829565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561138788611235565b604001516040518263ffffffff1660e01b81526004016113a79190612cc7565b6040805180830381865af41580156113c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e5919061316e565b91509150801561140c57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561143d5761143d6129bf565b600581111561144e5761144e6129bf565b815260200160018201805461146290612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461148e90612b4d565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115611544576115446129bf565b141580156115655750600181516005811115611562576115626129bf565b14155b1561158657805160405163170cc93360e21b81526104999190600401612b85565b60038151600581111561159b5761159b6129bf565b036115a957600481526115ae565b600581525b8360080181602001516040516115c49190612e2d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115611608576116086129bf565b0217905550602082015160018201906116219082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116c7576116c76129bf565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bdb5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117d1612829565b5f8281525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561181e5761181e6129bf565b600581111561182f5761182f6129bf565b815260200160018201805461184390612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461186f90612b4d565b80156118ba5780601f10611891576101008083540402835291602001916118ba565b820191905f5260205f20905b81548152906001019060200180831161189d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611928576119286129bf565b1461195b575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561199f5761199f6129bf565b0217905550602082015160018201906119b89082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a5685826120af565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611af157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061361883398151915242611b1060608601604087016132b5565b6001600160401b0316111580611b4a5750611b2e6202a30042612f5c565b611b3e60608601604087016132b5565b6001600160401b031610155b15611b8457611b5f60608501604086016132b5565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b99611b9460608601866132ce565b612286565b611ba9611b9460808601866132ce565b6030611bb860208601866132e2565b905014611bea57611bcc60208501856132e2565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bf484806132e2565b90505f03611c2157611c0684806132e2565b604051633e08a12560e11b8152600401610499929190613324565b5f60088201611c3086806132e2565b604051611c3e929190613219565b90815260200160405180910390205414611c7757611c5c84806132e2565b60405163a41f772f60e01b8152600401610499929190613324565b611c81835f6123ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101611cbe8a806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d06908b018b6132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d4f60608b0160408c016132b5565b6001600160401b03168152602001611d6a60608b018b6132ce565b611d7390613337565b8152602001611d8560808b018b6132ce565b611d8e90613337565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dbc9190613464565b5f60405180830381865af4158015611dd6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dfd919081019061351b565b5f82815260068601602052604090209193509150611e1b8282612e89565b508160088401611e2b88806132e2565b604051611e39929190613219565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e75908590600401612cc7565b6020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190612cd9565b6040805160e081019091529091508060018152602001611ed589806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611f6457611f646129bf565b021790555060208201516001820190611f7d9082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558061201b88806132e2565b604051612029929190613219565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061206791906132b5565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61209d612612565b6120a68261265b565b610bee81612674565b5f8281525f80516020613638833981519152602052604081206002015481905f8051602061361883398151915290600160801b90046001600160401b03166120f785826123ef565b5f61210187612685565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156121aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d19190810190612c96565b6040518263ffffffff1660e01b81526004016121ed9190612cc7565b6020604051808303815f875af1158015612209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222d9190612cd9565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61229360208201826128fb565b63ffffffff161580156122b357506122ae6020820182612cf0565b151590505b156122fa576122c560208201826128fb565b6122d26020830183612cf0565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6123076020820182612cf0565b905061231660208301836128fb565b63ffffffff16111561232f576122c560208201826128fb565b60015b61233f6020830183612cf0565b9050811015610bee576123556020830183612cf0565b61236060018461355e565b81811061236f5761236f612d35565b90506020020160208101906123849190612ac0565b6001600160a01b031661239a6020840184612cf0565b838181106123aa576123aa612d35565b90506020020160208101906123bf9190612ac0565b6001600160a01b031610156123e757604051630dbc8d5f60e31b815260040160405180910390fd5b600101612332565b5f805160206136188339815191525f6001600160401b0380841690851611156124235761241c8385613571565b9050612430565b61242d8484613571565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061249257506001840154815161248e916001600160401b031690612f5c565b8210155b156124b8576001600160401b0383166060820152818152604081015160208201526124d7565b82816060018181516124ca9190613591565b6001600160401b03169052505b60608101516124e79060646135b1565b602082015160018601546001600160401b0392909216916125129190600160401b900460ff16612f91565b101561254257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b03168160400181815161255d9190612f5c565b9052506040810180516001600160401b038716919061257d90839061355e565b905250600184015460408201516064916125a291600160401b90910460ff1690612f91565b10156125c9578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610bdb57604051631afcd79f60e31b815260040160405180910390fd5b612663612612565b61266b6126fa565b6111d781612702565b61267c612612565b6111d7816127ea565b5f8181525f805160206136388339815191526020526040812060020180545f8051602061361883398151915291906008906126cf90600160401b90046001600160401b03166135dc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610bdb612612565b61270a612612565b80355f80516020613618833981519152908155601461272f60608401604085016135f7565b60ff16118061274e575061274960608301604084016135f7565b60ff16155b156127825761276360608301604084016135f7565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61279260608301604084016135f7565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556127c360408301602084016132b5565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111a5612612565b5080546127fe90612b4d565b5f825580601f1061280d575050565b601f0160209004905f5260205f20908101906111d79190612866565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561287a575f8155600101612867565b5090565b5f6020828403121561288e575f80fd5b5035919050565b803563ffffffff811681146128a8575f80fd5b919050565b5f80604083850312156128be575f80fd5b82356001600160401b038111156128d3575f80fd5b8301608081860312156128e4575f80fd5b91506128f260208401612895565b90509250929050565b5f6020828403121561290b575f80fd5b610c0582612895565b80356001600160401b03811681146128a8575f80fd5b5f806040838503121561293b575f80fd5b82356001600160401b03811115612950575f80fd5b830160a08186031215612961575f80fd5b91506128f260208401612914565b6001600160a01b03811681146111d7575f80fd5b5f808284036080811215612995575f80fd5b60608112156129a2575f80fd5b5082915060608301356129b48161296f565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106129ef57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612a0d5781810151838201526020016129f5565b50505f910152565b5f8151808452612a2c8160208601602086016129f3565b601f01601f19169290920160200192915050565b60208152612a526020820183516129d3565b5f602083015160e06040840152612a6d610100840182612a15565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612ad0575f80fd5b8135612adb8161296f565b9392505050565b5f8060208385031215612af3575f80fd5b82356001600160401b0380821115612b09575f80fd5b818501915085601f830112612b1c575f80fd5b813581811115612b2a575f80fd5b866020828501011115612b3b575f80fd5b60209290920196919550909350505050565b600181811c90821680612b6157607f821691505b602082108103612b7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c0882846129d3565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612bc957612bc9612b93565b60405290565b604080519081016001600160401b0381118282101715612bc957612bc9612b93565b604051601f8201601f191681016001600160401b0381118282101715612c1957612c19612b93565b604052919050565b5f6001600160401b03821115612c3957612c39612b93565b50601f01601f191660200190565b5f82601f830112612c56575f80fd5b8151612c69612c6482612c21565b612bf1565b818152846020838601011115612c7d575f80fd5b612c8e8260208301602087016129f3565b949350505050565b5f60208284031215612ca6575f80fd5b81516001600160401b03811115612cbb575f80fd5b612c8e84828501612c47565b602081525f610c056020830184612a15565b5f60208284031215612ce9575f80fd5b5051919050565b5f808335601e19843603018112612d05575f80fd5b8301803591506001600160401b03821115612d1e575f80fd5b6020019150600581901b360382131561227f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d5d575f80fd5b9190910192915050565b5f82601f830112612d76575f80fd5b8135612d84612c6482612c21565b818152846020838601011115612d98575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612dc4575f80fd5b612dcc612ba7565b82356001600160401b0380821115612de2575f80fd5b612dee36838701612d67565b83526020850135915080821115612e03575f80fd5b50612e1036828601612d67565b602083015250612e2260408401612914565b604082015292915050565b5f8251612d5d8184602087016129f3565b601f821115610bb157805f5260205f20601f840160051c81016020851015612e635750805b601f840160051c820191505b81811015612e82575f8155600101612e6f565b5050505050565b81516001600160401b03811115612ea257612ea2612b93565b612eb681612eb08454612b4d565b84612e3e565b602080601f831160018114612ee9575f8415612ed25750858301515b5f19600386901b1c1916600185901b178555612f40565b5f85815260208120601f198616915b82811015612f1757888601518255948401946001909101908401612ef8565b5085821015612f3457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0857610c08612f48565b5f63ffffffff808316818103612f8757612f87612f48565b6001019392505050565b8082028115828204841417610c0857610c08612f48565b5f808335601e19843603018112612fbd575f80fd5b83016020810192503590506001600160401b03811115612fdb575f80fd5b80360382131561227f575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156130be57848303601f19018952813536889003605e1901811261304d575f80fd5b8701606061305b8280612fa8565b82875261306b8388018284612fe9565b9250505061307b86830183612fa8565b8683038888015261308d838284612fe9565b9250505060406001600160401b036130a6828501612914565b16950194909452509783019790830190600101613028565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356130ef8161296f565b6001600160a01b031660608381019190915283013536849003601e19018112613116575f80fd5b83016020810190356001600160401b03811115613131575f80fd5b8060051b3603821315613142575f80fd5b60808085015261315660a085018284613011565b95945050505050565b805180151581146128a8575f80fd5b5f806040838503121561317f575f80fd5b825191506128f26020840161315f565b5f60208083525f84546131a181612b4d565b806020870152604060018084165f81146131c257600181146131de5761320b565b60ff19851660408a0152604084151560051b8a0101955061320b565b895f5260205f205f5b858110156132025781548b82018601529083019088016131e7565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f8060408385031215613239575f80fd5b82516001600160401b038082111561324f575f80fd5b9084019060608287031215613262575f80fd5b61326a612ba7565b82518152602083015161327c8161296f565b6020820152604083015182811115613292575f80fd5b61329e88828601612c47565b60408301525093506128f29150506020840161315f565b5f602082840312156132c5575f80fd5b610c0582612914565b5f8235603e19833603018112612d5d575f80fd5b5f808335601e198436030181126132f7575f80fd5b8301803591506001600160401b03821115613310575f80fd5b60200191503681900382131561227f575f80fd5b602081525f612c8e602083018486612fe9565b5f60408236031215613347575f80fd5b61334f612bcf565b61335883612895565b81526020808401356001600160401b0380821115613374575f80fd5b9085019036601f830112613386575f80fd5b81358181111561339857613398612b93565b8060051b91506133a9848301612bf1565b81815291830184019184810190368411156133c2575f80fd5b938501935b838510156133ec57843592506133dc8361296f565b82825293850193908501906133c7565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156134595784516001600160a01b03168252938301936001929092019190830190613430565b509695505050505050565b60208152815160208201525f602083015160e0604084015261348a610100840182612a15565b90506040840151601f19808584030160608601526134a88383612a15565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134d883836133fe565b925060a08601519150808584030160c0860152506134f682826133fe565b91505060c084015161351360e08501826001600160401b03169052565b509392505050565b5f806040838503121561352c575f80fd5b8251915060208301516001600160401b03811115613548575f80fd5b61355485828601612c47565b9150509250929050565b81810381811115610c0857610c08612f48565b6001600160401b0382811682821603908082111561134457611344612f48565b6001600160401b0381811683821601908082111561134457611344612f48565b6001600160401b038181168382160280821691908281146135d4576135d4612f48565b505092915050565b5f6001600160401b03808316818103612f8757612f87612f48565b5f60208284031215613607575f80fd5b813560ff81168114612adb575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212200dc58b43f7c5b3d7e1e4a5efa2639d967fff9e57b3fdf2e81a11f4dc03b6197864736f6c63430008190033", } -// WarpMessage is an auto generated low-level Go binding around an user-defined struct. -type WarpMessage struct { - SourceChainID [32]byte - OriginSenderAddress common.Address - Payload []byte -} +// PoAValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use PoAValidatorManagerMetaData.ABI instead. +var PoAValidatorManagerABI = PoAValidatorManagerMetaData.ABI -// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. -var ContextUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} +// PoAValidatorManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PoAValidatorManagerMetaData.Bin instead. +var PoAValidatorManagerBin = PoAValidatorManagerMetaData.Bin + +// DeployPoAValidatorManager deploys a new Ethereum contract, binding an instance of PoAValidatorManager to it. +func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *PoAValidatorManager, error) { + parsed, err := PoAValidatorManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } -// ContextUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextUpgradeableMetaData.ABI instead. -var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoAValidatorManagerBin), backend, init) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil +} -// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. -type ContextUpgradeable struct { - ContextUpgradeableCaller // Read-only binding to the contract - ContextUpgradeableTransactor // Write-only binding to the contract - ContextUpgradeableFilterer // Log filterer for contract events +// PoAValidatorManager is an auto generated Go binding around an Ethereum contract. +type PoAValidatorManager struct { + PoAValidatorManagerCaller // Read-only binding to the contract + PoAValidatorManagerTransactor // Write-only binding to the contract + PoAValidatorManagerFilterer // Log filterer for contract events } -// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextUpgradeableCaller struct { +// PoAValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type PoAValidatorManagerCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactor struct { +// PoAValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PoAValidatorManagerTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextUpgradeableFilterer struct { +// PoAValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PoAValidatorManagerFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// PoAValidatorManagerSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ContextUpgradeableSession struct { - Contract *ContextUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type PoAValidatorManagerSession struct { + Contract *PoAValidatorManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// PoAValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ContextUpgradeableCallerSession struct { - Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type PoAValidatorManagerCallerSession struct { + Contract *PoAValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// PoAValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ContextUpgradeableTransactorSession struct { - Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type PoAValidatorManagerTransactorSession struct { + Contract *PoAValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextUpgradeableRaw struct { - Contract *ContextUpgradeable // Generic contract binding to access the raw methods on +// PoAValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type PoAValidatorManagerRaw struct { + Contract *PoAValidatorManager // Generic contract binding to access the raw methods on } -// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextUpgradeableCallerRaw struct { - Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on +// PoAValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PoAValidatorManagerCallerRaw struct { + Contract *PoAValidatorManagerCaller // Generic read-only contract binding to access the raw methods on } -// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactorRaw struct { - Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +// PoAValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PoAValidatorManagerTransactorRaw struct { + Contract *PoAValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on } -// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { - contract, err := bindContextUpgradeable(address, backend, backend, backend) +// NewPoAValidatorManager creates a new instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManager(address common.Address, backend bind.ContractBackend) (*PoAValidatorManager, error) { + contract, err := bindPoAValidatorManager(address, backend, backend, backend) if err != nil { return nil, err } - return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil + return &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil } -// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { - contract, err := bindContextUpgradeable(address, caller, nil, nil) +// NewPoAValidatorManagerCaller creates a new read-only instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoAValidatorManagerCaller, error) { + contract, err := bindPoAValidatorManager(address, caller, nil, nil) if err != nil { return nil, err } - return &ContextUpgradeableCaller{contract: contract}, nil + return &PoAValidatorManagerCaller{contract: contract}, nil } -// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { - contract, err := bindContextUpgradeable(address, nil, transactor, nil) +// NewPoAValidatorManagerTransactor creates a new write-only instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoAValidatorManagerTransactor, error) { + contract, err := bindPoAValidatorManager(address, nil, transactor, nil) if err != nil { return nil, err } - return &ContextUpgradeableTransactor{contract: contract}, nil + return &PoAValidatorManagerTransactor{contract: contract}, nil } -// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { - contract, err := bindContextUpgradeable(address, nil, nil, filterer) +// NewPoAValidatorManagerFilterer creates a new log filterer instance of PoAValidatorManager, bound to a specific deployed contract. +func NewPoAValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoAValidatorManagerFilterer, error) { + contract, err := bindPoAValidatorManager(address, nil, nil, filterer) if err != nil { return nil, err } - return &ContextUpgradeableFilterer{contract: contract}, nil + return &PoAValidatorManagerFilterer{contract: contract}, nil } -// bindContextUpgradeable binds a generic wrapper to an already deployed contract. -func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextUpgradeableMetaData.GetAbi() +// bindPoAValidatorManager binds a generic wrapper to an already deployed contract. +func bindPoAValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PoAValidatorManagerMetaData.GetAbi() if err != nil { return nil, err } @@ -218,475 +216,594 @@ func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) +func (_PoAValidatorManager *PoAValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoAValidatorManager.Contract.PoAValidatorManagerCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) +func (_PoAValidatorManager *PoAValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) +func (_PoAValidatorManager *PoAValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) +func (_PoAValidatorManager *PoAValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoAValidatorManager.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transfer(opts) +func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) +func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.contract.Transact(opts, method, params...) } -// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. -type ContextUpgradeableInitializedIterator struct { - Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ContextUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false + if err != nil { + return *new(uint32), err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ContextUpgradeableInitializedIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContextUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoAValidatorManager *PoAValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) } -// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. -type ContextUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. // -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { - return nil, err + return *new(uint8), err } - return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log + return out0, err - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil } -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. // -// Solidity: event Initialized(uint64 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) } -// IPoAValidatorManagerMetaData contains all meta data concerning the IPoAValidatorManager contract. -var IPoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) } -// IPoAValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IPoAValidatorManagerMetaData.ABI instead. -var IPoAValidatorManagerABI = IPoAValidatorManagerMetaData.ABI +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") -// IPoAValidatorManager is an auto generated Go binding around an Ethereum contract. -type IPoAValidatorManager struct { - IPoAValidatorManagerCaller // Read-only binding to the contract - IPoAValidatorManagerTransactor // Write-only binding to the contract - IPoAValidatorManagerFilterer // Log filterer for contract events -} + if err != nil { + return *new(uint8), err + } -// IPoAValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IPoAValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) -// IPoAValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IPoAValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + return out0, err -// IPoAValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IPoAValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IPoAValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IPoAValidatorManagerSession struct { - Contract *IPoAValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) } -// IPoAValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IPoAValidatorManagerCallerSession struct { - Contract *IPoAValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) } -// IPoAValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IPoAValidatorManagerTransactorSession struct { - Contract *IPoAValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") -// IPoAValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IPoAValidatorManagerRaw struct { - Contract *IPoAValidatorManager // Generic contract binding to access the raw methods on -} + if err != nil { + return *new(uint64), err + } -// IPoAValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IPoAValidatorManagerCallerRaw struct { - Contract *IPoAValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) -// IPoAValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IPoAValidatorManagerTransactorRaw struct { - Contract *IPoAValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} + return out0, err -// NewIPoAValidatorManager creates a new instance of IPoAValidatorManager, bound to a specific deployed contract. -func NewIPoAValidatorManager(address common.Address, backend bind.ContractBackend) (*IPoAValidatorManager, error) { - contract, err := bindIPoAValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IPoAValidatorManager{IPoAValidatorManagerCaller: IPoAValidatorManagerCaller{contract: contract}, IPoAValidatorManagerTransactor: IPoAValidatorManagerTransactor{contract: contract}, IPoAValidatorManagerFilterer: IPoAValidatorManagerFilterer{contract: contract}}, nil } -// NewIPoAValidatorManagerCaller creates a new read-only instance of IPoAValidatorManager, bound to a specific deployed contract. -func NewIPoAValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IPoAValidatorManagerCaller, error) { - contract, err := bindIPoAValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IPoAValidatorManagerCaller{contract: contract}, nil +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) } -// NewIPoAValidatorManagerTransactor creates a new write-only instance of IPoAValidatorManager, bound to a specific deployed contract. -func NewIPoAValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoAValidatorManagerTransactor, error) { - contract, err := bindIPoAValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IPoAValidatorManagerTransactor{contract: contract}, nil +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) } -// NewIPoAValidatorManagerFilterer creates a new log filterer instance of IPoAValidatorManager, bound to a specific deployed contract. -func NewIPoAValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoAValidatorManagerFilterer, error) { - contract, err := bindIPoAValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IPoAValidatorManagerFilterer{contract: contract}, nil -} +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") -// bindIPoAValidatorManager binds a generic wrapper to an already deployed contract. -func bindIPoAValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IPoAValidatorManagerMetaData.GetAbi() if err != nil { - return nil, err + return *new([32]byte), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoAValidatorManager *IPoAValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoAValidatorManager.Contract.IPoAValidatorManagerCaller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoAValidatorManager *IPoAValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.IPoAValidatorManagerTransactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) -// Transact invokes the (paid) contract method with params as input values. -func (_IPoAValidatorManager *IPoAValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.IPoAValidatorManagerTransactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoAValidatorManager *IPoAValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoAValidatorManager.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.contract.Transfer(opts) +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.contract.Transact(opts, method, params...) +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.CompleteEndValidation(&_IPoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.CompleteEndValidation(&_IPoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.CompleteValidatorRegistration(&_IPoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.CompleteValidatorRegistration(&_IPoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function WARP_MESSENGER() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.InitializeEndValidation(&_IPoAValidatorManager.TransactOpts, validationID) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.InitializeEndValidation(&_IPoAValidatorManager.TransactOpts, validationID) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _IPoAValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_IPoAValidatorManager *IPoAValidatorManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.InitializeValidatorRegistration(&_IPoAValidatorManager.TransactOpts, registrationInput, weight) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. // -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.InitializeValidatorRegistration(&_IPoAValidatorManager.TransactOpts, registrationInput, weight) +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) +// Solidity: function owner() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.InitializeValidatorSet(&_IPoAValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +// Solidity: function owner() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerSession) Owner() (common.Address, error) { + return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.InitializeValidatorSet(&_IPoAValidatorManager.TransactOpts, subnetConversionData, messsageIndex) +// Solidity: function owner() view returns(address) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) Owner() (common.Address, error) { + return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.ResendEndValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.ResendEndValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) } -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initialize", settings, initialOwner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) } // ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. // // Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoAValidatorManager *IPoAValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoAValidatorManager.TransactOpts, validationID) +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) } -// IPoAValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerInitialValidatorCreatedIterator struct { - Event *IPoAValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) +} + +// PoAValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitialValidatorCreatedIterator struct { + Event *PoAValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -700,7 +817,7 @@ type IPoAValidatorManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { +func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -709,7 +826,7 @@ func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerInitialValidatorCreated) + it.Event = new(PoAValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -724,7 +841,7 @@ func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerInitialValidatorCreated) + it.Event = new(PoAValidatorManagerInitialValidatorCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -740,19 +857,19 @@ func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Error() error { +func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoAValidatorManagerInitialValidatorCreatedIterator) Close() error { +func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoAValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerInitialValidatorCreated struct { +// PoAValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitialValidatorCreated struct { ValidationID [32]byte NodeID common.Hash Weight *big.Int @@ -762,7 +879,7 @@ type IPoAValidatorManagerInitialValidatorCreated struct { // FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // // Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoAValidatorManagerInitialValidatorCreatedIterator, error) { +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoAValidatorManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { @@ -773,17 +890,17 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterInitialValidato nodeIDRule = append(nodeIDRule, nodeIDItem) } - logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } - return &IPoAValidatorManagerInitialValidatorCreatedIterator{contract: _IPoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &PoAValidatorManagerInitialValidatorCreatedIterator{contract: _PoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } // WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // // Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { @@ -794,7 +911,7 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchInitialValidator nodeIDRule = append(nodeIDRule, nodeIDItem) } - logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) if err != nil { return nil, err } @@ -804,8 +921,8 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchInitialValidator select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoAValidatorManagerInitialValidatorCreated) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(PoAValidatorManagerInitialValidatorCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return err } event.Raw = log @@ -829,18 +946,18 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchInitialValidator // ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. // // Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoAValidatorManagerInitialValidatorCreated, error) { - event := new(IPoAValidatorManagerInitialValidatorCreated) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoAValidatorManagerInitialValidatorCreated, error) { + event := new(PoAValidatorManagerInitialValidatorCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoAValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidationPeriodCreatedIterator struct { - Event *IPoAValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log +// PoAValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitializedIterator struct { + Event *PoAValidatorManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -854,7 +971,7 @@ type IPoAValidatorManagerValidationPeriodCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { +func (it *PoAValidatorManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -863,7 +980,7 @@ func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidationPeriodCreated) + it.Event = new(PoAValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -878,7 +995,7 @@ func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidationPeriodCreated) + it.Event = new(PoAValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -894,71 +1011,41 @@ func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Error() error { +func (it *PoAValidatorManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoAValidatorManagerValidationPeriodCreatedIterator) Close() error { +func (it *PoAValidatorManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoAValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerInitialized represents a Initialized event raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoAValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoAValidatorManagerInitializedIterator, error) { - logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &IPoAValidatorManagerValidationPeriodCreatedIterator{contract: _IPoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &PoAValidatorManagerInitializedIterator{contract: _PoAValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialized) (event.Subscription, error) { - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -968,8 +1055,8 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriod select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoAValidatorManagerValidationPeriodCreated) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + event := new(PoAValidatorManagerInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -990,21 +1077,21 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriod }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoAValidatorManagerValidationPeriodCreated, error) { - event := new(IPoAValidatorManagerValidationPeriodCreated) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoAValidatorManagerInitialized, error) { + event := new(PoAValidatorManagerInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoAValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidationPeriodEndedIterator struct { - Event *IPoAValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log +// PoAValidatorManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoAValidatorManager contract. +type PoAValidatorManagerOwnershipTransferredIterator struct { + Event *PoAValidatorManagerOwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1018,7 +1105,7 @@ type IPoAValidatorManagerValidationPeriodEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Next() bool { +func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1027,7 +1114,7 @@ func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidationPeriodEnded) + it.Event = new(PoAValidatorManagerOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1042,7 +1129,7 @@ func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidationPeriodEnded) + it.Event = new(PoAValidatorManagerOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1058,60 +1145,60 @@ func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Error() error { +func (it *PoAValidatorManagerOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoAValidatorManagerValidationPeriodEndedIterator) Close() error { +func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoAValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerOwnershipTransferred represents a OwnershipTransferred event raised by the PoAValidatorManager contract. +type PoAValidatorManagerOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IPoAValidatorManagerValidationPeriodEndedIterator, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PoAValidatorManagerOwnershipTransferredIterator, error) { - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &IPoAValidatorManagerValidationPeriodEndedIterator{contract: _IPoAValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &PoAValidatorManagerOwnershipTransferredIterator{contract: _PoAValidatorManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -1121,8 +1208,8 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriod select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoAValidatorManagerValidationPeriodEnded) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + event := new(PoAValidatorManagerOwnershipTransferred) + if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -1143,21 +1230,21 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriod }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IPoAValidatorManagerValidationPeriodEnded, error) { - event := new(IPoAValidatorManagerValidationPeriodEnded) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseOwnershipTransferred(log types.Log) (*PoAValidatorManagerOwnershipTransferred, error) { + event := new(PoAValidatorManagerOwnershipTransferred) + if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoAValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidationPeriodRegisteredIterator struct { - Event *IPoAValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log +// PoAValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodCreatedIterator struct { + Event *PoAValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1171,7 +1258,7 @@ type IPoAValidatorManagerValidationPeriodRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1180,7 +1267,7 @@ func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidationPeriodRegistered) + it.Event = new(PoAValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1195,7 +1282,7 @@ func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidationPeriodRegistered) + it.Event = new(PoAValidatorManagerValidationPeriodCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1211,53 +1298,71 @@ func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Error() error { +func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { +func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight *big.Int + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoAValidatorManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoAValidatorManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } - logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } - return &IPoAValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &PoAValidatorManagerValidationPeriodCreatedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } - logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) if err != nil { return nil, err } @@ -1267,8 +1372,8 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriod select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoAValidatorManagerValidationPeriodRegistered) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + event := new(PoAValidatorManagerValidationPeriodCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return err } event.Raw = log @@ -1289,21 +1394,21 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidationPeriod }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoAValidatorManagerValidationPeriodRegistered, error) { - event := new(IPoAValidatorManagerValidationPeriodRegistered) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoAValidatorManagerValidationPeriodCreated, error) { + event := new(PoAValidatorManagerValidationPeriodCreated) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoAValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidatorRemovalInitializedIterator struct { - Event *IPoAValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log +// PoAValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodEndedIterator struct { + Event *PoAValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1317,7 +1422,7 @@ type IPoAValidatorManagerValidatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { +func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1326,7 +1431,7 @@ func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidatorRemovalInitialized) + it.Event = new(PoAValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1341,7 +1446,7 @@ func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidatorRemovalInitialized) + it.Event = new(PoAValidatorManagerValidationPeriodEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1357,62 +1462,60 @@ func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Error() error { +func (it *PoAValidatorManagerValidationPeriodEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoAValidatorManagerValidatorRemovalInitializedIterator) Close() error { +func (it *PoAValidatorManagerValidationPeriodEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoAValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoAValidatorManagerValidatorRemovalInitializedIterator, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoAValidatorManagerValidationPeriodEndedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } - return &IPoAValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + return &PoAValidatorManagerValidationPeriodEndedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) } - logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) if err != nil { return nil, err } @@ -1422,8 +1525,8 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorRemoval select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoAValidatorManagerValidatorRemovalInitialized) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + event := new(PoAValidatorManagerValidationPeriodEnded) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return err } event.Raw = log @@ -1444,21 +1547,21 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorRemoval }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoAValidatorManagerValidatorRemovalInitialized, error) { - event := new(IPoAValidatorManagerValidatorRemovalInitialized) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoAValidatorManagerValidationPeriodEnded, error) { + event := new(PoAValidatorManagerValidationPeriodEnded) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoAValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidatorWeightUpdateIterator struct { - Event *IPoAValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log +// PoAValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodRegisteredIterator struct { + Event *PoAValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1472,7 +1575,7 @@ type IPoAValidatorManagerValidatorWeightUpdateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { +func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1481,7 +1584,7 @@ func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidatorWeightUpdate) + it.Event = new(PoAValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1496,7 +1599,7 @@ func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoAValidatorManagerValidatorWeightUpdate) + it.Event = new(PoAValidatorManagerValidationPeriodRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1512,62 +1615,53 @@ func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Error() error { +func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoAValidatorManagerValidatorWeightUpdateIterator) Close() error { +func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoAValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IPoAValidatorManager contract. -type IPoAValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight *big.Int + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoAValidatorManagerValidatorWeightUpdateIterator, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoAValidatorManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - logs, sub, err := _IPoAValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } - return &IPoAValidatorManagerValidatorWeightUpdateIterator{contract: _IPoAValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + return &PoAValidatorManagerValidationPeriodRegisteredIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - logs, sub, err := _IPoAValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) if err != nil { return nil, err } @@ -1577,8 +1671,8 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorWeightU select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoAValidatorManagerValidatorWeightUpdate) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + event := new(PoAValidatorManagerValidationPeriodRegistered) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return err } event.Raw = log @@ -1599,291 +1693,35 @@ func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) WatchValidatorWeightU }), nil } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IPoAValidatorManager *IPoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoAValidatorManagerValidatorWeightUpdate, error) { - event := new(IPoAValidatorManagerValidatorWeightUpdate) - if err := _IPoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoAValidatorManagerValidationPeriodRegistered, error) { + event := new(PoAValidatorManagerValidationPeriodRegistered) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. -var IValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IValidatorManagerMetaData.ABI instead. -var IValidatorManagerABI = IValidatorManagerMetaData.ABI +// PoAValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorRemovalInitializedIterator struct { + Event *PoAValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log -// IValidatorManager is an auto generated Go binding around an Ethereum contract. -type IValidatorManager struct { - IValidatorManagerCaller // Read-only binding to the contract - IValidatorManagerTransactor // Write-only binding to the contract - IValidatorManagerFilterer // Log filterer for contract events -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// IValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IValidatorManagerSession struct { - Contract *IValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IValidatorManagerCallerSession struct { - Contract *IValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IValidatorManagerTransactorSession struct { - Contract *IValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IValidatorManagerRaw struct { - Contract *IValidatorManager // Generic contract binding to access the raw methods on -} - -// IValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IValidatorManagerCallerRaw struct { - Contract *IValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// IValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IValidatorManagerTransactorRaw struct { - Contract *IValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIValidatorManager creates a new instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManager(address common.Address, backend bind.ContractBackend) (*IValidatorManager, error) { - contract, err := bindIValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IValidatorManager{IValidatorManagerCaller: IValidatorManagerCaller{contract: contract}, IValidatorManagerTransactor: IValidatorManagerTransactor{contract: contract}, IValidatorManagerFilterer: IValidatorManagerFilterer{contract: contract}}, nil -} - -// NewIValidatorManagerCaller creates a new read-only instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IValidatorManagerCaller, error) { - contract, err := bindIValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IValidatorManagerCaller{contract: contract}, nil -} - -// NewIValidatorManagerTransactor creates a new write-only instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IValidatorManagerTransactor, error) { - contract, err := bindIValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IValidatorManagerTransactor{contract: contract}, nil -} - -// NewIValidatorManagerFilterer creates a new log filterer instance of IValidatorManager, bound to a specific deployed contract. -func NewIValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IValidatorManagerFilterer, error) { - contract, err := bindIValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IValidatorManagerFilterer{contract: contract}, nil -} - -// bindIValidatorManager binds a generic wrapper to an already deployed contract. -func bindIValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IValidatorManager *IValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IValidatorManager.Contract.IValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IValidatorManager *IValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IValidatorManager *IValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IValidatorManager.Contract.IValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IValidatorManager *IValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IValidatorManager *IValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IValidatorManager *IValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, subnetConversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendEndValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IValidatorManager.Contract.ResendRegisterValidatorMessage(&_IValidatorManager.TransactOpts, validationID) -} - -// IValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IValidatorManager contract. -type IValidatorManagerInitialValidatorCreatedIterator struct { - Event *IValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { +func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1892,7 +1730,7 @@ func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IValidatorManagerInitialValidatorCreated) + it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1907,7 +1745,7 @@ func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IValidatorManagerInitialValidatorCreated) + it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1923,61 +1761,62 @@ func (it *IValidatorManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Error() error { +func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IValidatorManagerInitialValidatorCreatedIterator) Close() error { +func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IValidatorManager contract. -type IValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight *big.Int + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IValidatorManagerInitialValidatorCreatedIterator, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoAValidatorManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } - return &IValidatorManagerInitialValidatorCreatedIterator{contract: _IValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &PoAValidatorManagerValidatorRemovalInitializedIterator{contract: _PoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) } - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) if err != nil { return nil, err } @@ -1987,8 +1826,8 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreate select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerInitialValidatorCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(PoAValidatorManagerValidatorRemovalInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -2009,21 +1848,21 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreate }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_IValidatorManager *IValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IValidatorManagerInitialValidatorCreated, error) { - event := new(IValidatorManagerInitialValidatorCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoAValidatorManagerValidatorRemovalInitialized, error) { + event := new(PoAValidatorManagerValidatorRemovalInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodCreatedIterator struct { - Event *IValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log +// PoAValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorWeightUpdateIterator struct { + Event *PoAValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2037,7 +1876,7 @@ type IValidatorManagerValidationPeriodCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { +func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2046,7 +1885,7 @@ func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodCreated) + it.Event = new(PoAValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2061,7 +1900,7 @@ func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodCreated) + it.Event = new(PoAValidatorManagerValidatorWeightUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2077,224 +1916,62 @@ func (it *IValidatorManagerValidationPeriodCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Error() error { +func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IValidatorManagerValidationPeriodCreatedIterator) Close() error { +func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Close() error { it.sub.Unsubscribe() return nil } -// IValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoAValidatorManager contract. +type PoAValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + ValidatorWeight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IValidatorManagerValidationPeriodCreatedIterator, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoAValidatorManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) } - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } - return &IValidatorManagerValidationPeriodCreatedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &PoAValidatorManagerValidatorWeightUpdateIterator{contract: _PoAValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IValidatorManagerValidationPeriodCreated, error) { - event := new(IValidatorManagerValidationPeriodCreated) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodEndedIterator struct { - Event *IValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodEndedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) } - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) if err != nil { return nil, err } @@ -2304,8 +1981,8 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodEnded) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + event := new(PoAValidatorManagerValidatorWeightUpdate) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return err } event.Raw = log @@ -2326,5800 +2003,14 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodEnded( }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IValidatorManagerValidationPeriodEnded, error) { - event := new(IValidatorManagerValidationPeriodEnded) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoAValidatorManagerValidatorWeightUpdate, error) { + event := new(PoAValidatorManagerValidatorWeightUpdate) + if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { return nil, err } event.Raw = log return event, nil } - -// IValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodRegisteredIterator struct { - Event *IValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IValidatorManager contract. -type IValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidationPeriodRegisteredIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidationPeriodRegistered) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IValidatorManagerValidationPeriodRegistered, error) { - event := new(IValidatorManagerValidationPeriodRegistered) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IValidatorManager contract. -type IValidatorManagerValidatorRemovalInitializedIterator struct { - Event *IValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IValidatorManager contract. -type IValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidatorRemovalInitializedIterator{contract: _IValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidatorRemovalInitialized) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IValidatorManagerValidatorRemovalInitialized, error) { - event := new(IValidatorManagerValidatorRemovalInitialized) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IValidatorManager contract. -type IValidatorManagerValidatorWeightUpdateIterator struct { - Event *IValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IValidatorManager contract. -type IValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &IValidatorManagerValidatorWeightUpdateIterator{contract: _IValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IValidatorManagerValidatorWeightUpdate) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IValidatorManagerValidatorWeightUpdate, error) { - event := new(IValidatorManagerValidatorWeightUpdate) - if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IWarpMessengerMetaData contains all meta data concerning the IWarpMessenger contract. -var IWarpMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SendWarpMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWarpMessengerABI is the input ABI used to generate the binding from. -// Deprecated: Use IWarpMessengerMetaData.ABI instead. -var IWarpMessengerABI = IWarpMessengerMetaData.ABI - -// IWarpMessenger is an auto generated Go binding around an Ethereum contract. -type IWarpMessenger struct { - IWarpMessengerCaller // Read-only binding to the contract - IWarpMessengerTransactor // Write-only binding to the contract - IWarpMessengerFilterer // Log filterer for contract events -} - -// IWarpMessengerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWarpMessengerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWarpMessengerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWarpMessengerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWarpMessengerSession struct { - Contract *IWarpMessenger // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWarpMessengerCallerSession struct { - Contract *IWarpMessengerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWarpMessengerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWarpMessengerTransactorSession struct { - Contract *IWarpMessengerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWarpMessengerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWarpMessengerRaw struct { - Contract *IWarpMessenger // Generic contract binding to access the raw methods on -} - -// IWarpMessengerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWarpMessengerCallerRaw struct { - Contract *IWarpMessengerCaller // Generic read-only contract binding to access the raw methods on -} - -// IWarpMessengerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWarpMessengerTransactorRaw struct { - Contract *IWarpMessengerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWarpMessenger creates a new instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessenger(address common.Address, backend bind.ContractBackend) (*IWarpMessenger, error) { - contract, err := bindIWarpMessenger(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWarpMessenger{IWarpMessengerCaller: IWarpMessengerCaller{contract: contract}, IWarpMessengerTransactor: IWarpMessengerTransactor{contract: contract}, IWarpMessengerFilterer: IWarpMessengerFilterer{contract: contract}}, nil -} - -// NewIWarpMessengerCaller creates a new read-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerCaller(address common.Address, caller bind.ContractCaller) (*IWarpMessengerCaller, error) { - contract, err := bindIWarpMessenger(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerCaller{contract: contract}, nil -} - -// NewIWarpMessengerTransactor creates a new write-only instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerTransactor(address common.Address, transactor bind.ContractTransactor) (*IWarpMessengerTransactor, error) { - contract, err := bindIWarpMessenger(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWarpMessengerTransactor{contract: contract}, nil -} - -// NewIWarpMessengerFilterer creates a new log filterer instance of IWarpMessenger, bound to a specific deployed contract. -func NewIWarpMessengerFilterer(address common.Address, filterer bind.ContractFilterer) (*IWarpMessengerFilterer, error) { - contract, err := bindIWarpMessenger(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWarpMessengerFilterer{contract: contract}, nil -} - -// bindIWarpMessenger binds a generic wrapper to an already deployed contract. -func bindIWarpMessenger(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWarpMessengerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.IWarpMessengerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.IWarpMessengerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWarpMessenger *IWarpMessengerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWarpMessenger.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWarpMessenger *IWarpMessengerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWarpMessenger.Contract.contract.Transact(opts, method, params...) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCaller) GetBlockchainID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getBlockchainID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetBlockchainID is a free data retrieval call binding the contract method 0x4213cf78. -// -// Solidity: function getBlockchainID() view returns(bytes32 blockchainID) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetBlockchainID() ([32]byte, error) { - return _IWarpMessenger.Contract.GetBlockchainID(&_IWarpMessenger.CallOpts) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpBlockHash(opts *bind.CallOpts, index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpBlockHash", index) - - outstruct := new(struct { - WarpBlockHash WarpBlockHash - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.WarpBlockHash = *abi.ConvertType(out[0], new(WarpBlockHash)).(*WarpBlockHash) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpBlockHash is a free data retrieval call binding the contract method 0xce7f5929. -// -// Solidity: function getVerifiedWarpBlockHash(uint32 index) view returns((bytes32,bytes32) warpBlockHash, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpBlockHash(index uint32) (struct { - WarpBlockHash WarpBlockHash - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpBlockHash(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCaller) GetVerifiedWarpMessage(opts *bind.CallOpts, index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - var out []interface{} - err := _IWarpMessenger.contract.Call(opts, &out, "getVerifiedWarpMessage", index) - - outstruct := new(struct { - Message WarpMessage - Valid bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.Message = *abi.ConvertType(out[0], new(WarpMessage)).(*WarpMessage) - outstruct.Valid = *abi.ConvertType(out[1], new(bool)).(*bool) - - return *outstruct, err - -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// GetVerifiedWarpMessage is a free data retrieval call binding the contract method 0x6f825350. -// -// Solidity: function getVerifiedWarpMessage(uint32 index) view returns((bytes32,address,bytes) message, bool valid) -func (_IWarpMessenger *IWarpMessengerCallerSession) GetVerifiedWarpMessage(index uint32) (struct { - Message WarpMessage - Valid bool -}, error) { - return _IWarpMessenger.Contract.GetVerifiedWarpMessage(&_IWarpMessenger.CallOpts, index) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactor) SendWarpMessage(opts *bind.TransactOpts, payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.contract.Transact(opts, "sendWarpMessage", payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// SendWarpMessage is a paid mutator transaction binding the contract method 0xee5b48eb. -// -// Solidity: function sendWarpMessage(bytes payload) returns(bytes32 messageID) -func (_IWarpMessenger *IWarpMessengerTransactorSession) SendWarpMessage(payload []byte) (*types.Transaction, error) { - return _IWarpMessenger.Contract.SendWarpMessage(&_IWarpMessenger.TransactOpts, payload) -} - -// IWarpMessengerSendWarpMessageIterator is returned from FilterSendWarpMessage and is used to iterate over the raw logs and unpacked data for SendWarpMessage events raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessageIterator struct { - Event *IWarpMessengerSendWarpMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWarpMessengerSendWarpMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWarpMessengerSendWarpMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWarpMessengerSendWarpMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWarpMessengerSendWarpMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWarpMessengerSendWarpMessage represents a SendWarpMessage event raised by the IWarpMessenger contract. -type IWarpMessengerSendWarpMessage struct { - Sender common.Address - MessageID [32]byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSendWarpMessage is a free log retrieval operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) FilterSendWarpMessage(opts *bind.FilterOpts, sender []common.Address, messageID [][32]byte) (*IWarpMessengerSendWarpMessageIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.FilterLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return &IWarpMessengerSendWarpMessageIterator{contract: _IWarpMessenger.contract, event: "SendWarpMessage", logs: logs, sub: sub}, nil -} - -// WatchSendWarpMessage is a free log subscription operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) WatchSendWarpMessage(opts *bind.WatchOpts, sink chan<- *IWarpMessengerSendWarpMessage, sender []common.Address, messageID [][32]byte) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var messageIDRule []interface{} - for _, messageIDItem := range messageID { - messageIDRule = append(messageIDRule, messageIDItem) - } - - logs, sub, err := _IWarpMessenger.contract.WatchLogs(opts, "SendWarpMessage", senderRule, messageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSendWarpMessage is a log parse operation binding the contract event 0x56600c567728a800c0aa927500f831cb451df66a7af570eb4df4dfbf4674887d. -// -// Solidity: event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message) -func (_IWarpMessenger *IWarpMessengerFilterer) ParseSendWarpMessage(log types.Log) (*IWarpMessengerSendWarpMessage, error) { - event := new(IWarpMessengerSendWarpMessage) - if err := _IWarpMessenger.contract.UnpackLog(event, "SendWarpMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// InitializableMetaData contains all meta data concerning the Initializable contract. -var InitializableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// InitializableABI is the input ABI used to generate the binding from. -// Deprecated: Use InitializableMetaData.ABI instead. -var InitializableABI = InitializableMetaData.ABI - -// Initializable is an auto generated Go binding around an Ethereum contract. -type Initializable struct { - InitializableCaller // Read-only binding to the contract - InitializableTransactor // Write-only binding to the contract - InitializableFilterer // Log filterer for contract events -} - -// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. -type InitializableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type InitializableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type InitializableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type InitializableSession struct { - Contract *Initializable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type InitializableCallerSession struct { - Contract *InitializableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type InitializableTransactorSession struct { - Contract *InitializableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. -type InitializableRaw struct { - Contract *Initializable // Generic contract binding to access the raw methods on -} - -// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type InitializableCallerRaw struct { - Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on -} - -// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type InitializableTransactorRaw struct { - Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. -func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { - contract, err := bindInitializable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil -} - -// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { - contract, err := bindInitializable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &InitializableCaller{contract: contract}, nil -} - -// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { - contract, err := bindInitializable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &InitializableTransactor{contract: contract}, nil -} - -// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. -func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { - contract, err := bindInitializable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &InitializableFilterer{contract: contract}, nil -} - -// bindInitializable binds a generic wrapper to an already deployed contract. -func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := InitializableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transact(opts, method, params...) -} - -// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. -type InitializableInitializedIterator struct { - Event *InitializableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *InitializableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *InitializableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *InitializableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// InitializableInitialized represents a Initialized event raised by the Initializable contract. -type InitializableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { - - logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { - - logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableUpgradeableMetaData contains all meta data concerning the OwnableUpgradeable contract. -var OwnableUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// OwnableUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableUpgradeableMetaData.ABI instead. -var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI - -// OwnableUpgradeable is an auto generated Go binding around an Ethereum contract. -type OwnableUpgradeable struct { - OwnableUpgradeableCaller // Read-only binding to the contract - OwnableUpgradeableTransactor // Write-only binding to the contract - OwnableUpgradeableFilterer // Log filterer for contract events -} - -// OwnableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableUpgradeableSession struct { - Contract *OwnableUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableUpgradeableCallerSession struct { - Contract *OwnableUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableUpgradeableTransactorSession struct { - Contract *OwnableUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableUpgradeableRaw struct { - Contract *OwnableUpgradeable // Generic contract binding to access the raw methods on -} - -// OwnableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCallerRaw struct { - Contract *OwnableUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactorRaw struct { - Contract *OwnableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnableUpgradeable creates a new instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeable(address common.Address, backend bind.ContractBackend) (*OwnableUpgradeable, error) { - contract, err := bindOwnableUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &OwnableUpgradeable{OwnableUpgradeableCaller: OwnableUpgradeableCaller{contract: contract}, OwnableUpgradeableTransactor: OwnableUpgradeableTransactor{contract: contract}, OwnableUpgradeableFilterer: OwnableUpgradeableFilterer{contract: contract}}, nil -} - -// NewOwnableUpgradeableCaller creates a new read-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*OwnableUpgradeableCaller, error) { - contract, err := bindOwnableUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableCaller{contract: contract}, nil -} - -// NewOwnableUpgradeableTransactor creates a new write-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableUpgradeableTransactor, error) { - contract, err := bindOwnableUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableTransactor{contract: contract}, nil -} - -// NewOwnableUpgradeableFilterer creates a new log filterer instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableUpgradeableFilterer, error) { - contract, err := bindOwnableUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableUpgradeableFilterer{contract: contract}, nil -} - -// bindOwnableUpgradeable binds a generic wrapper to an already deployed contract. -func bindOwnableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.OwnableUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCallerSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// OwnableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitializedIterator struct { - Event *OwnableUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableInitialized represents a Initialized event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &OwnableUpgradeableInitializedIterator{contract: _OwnableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log types.Log) (*OwnableUpgradeableInitialized, error) { - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferredIterator struct { - Event *OwnableUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &OwnableUpgradeableOwnershipTransferredIterator{contract: _OwnableUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableUpgradeableOwnershipTransferred, error) { - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. -var PoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516137da3803806137da83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61368d8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461287e565b610312565b005b6101496101593660046128ad565b6105a2565b61014961016c3660046128fb565b610ba8565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461287e565b610bb6565b6040516001600160401b03909116815260200161018a565b610149610bca565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461287e565b610bdd565b6101cd61025a36600461292a565b610bf2565b61014961026d3660046128fb565b610c0e565b6102216005600160991b0181565b6101cd5f8051602061361883398151915281565b6101496102a236600461287e565b610e03565b6101e3601481565b6101496102bd366004612983565b610f40565b6102d56102d036600461287e565b61104e565b60405161018a9190612a40565b6101a66202a30081565b6101496102fa366004612ac0565b61119d565b6101cd61030d366004612ae2565b6111da565b5f8181525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561035f5761035f6129bf565b6005811115610370576103706129bf565b815260200160018201805461038490612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612b4d565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610466576104666129bf565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60405180910390fd5b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c96565b6040518263ffffffff1660e01b815260040161055c9190612cc7565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612cd9565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206136188339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612cd9565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612ac0565b6001600160a01b0316146106d8576106b36060840160408501612ac0565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612cf0565b905090505f805b828163ffffffff1610156109ce575f6107096060880188612cf0565b8363ffffffff1681811061071f5761071f612d35565b90506020028101906107319190612d49565b61073a90612db4565b80516040519192505f91600888019161075291612e2d565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612cc7565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612e2d565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612cd9565b90508086600801835f01516040516108219190612e2d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156108a3576108a36129bf565b0217905550602082015160018201906108bc9082612e89565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610961911685612f5c565b825160405191955061097291612e2d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109c790612f6f565b90506106ed565b506004830181905560018301546064906109f290600160401b900460ff1683612f91565b1015610a1457604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610a3887611235565b604001516040518263ffffffff1660e01b8152600401610a589190612cc7565b602060405180830381865af4158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190612cd9565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ad191906130cb565b5f60405180830381865af4158015610aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b129190810190612c96565b90505f600282604051610b259190612e2d565b602060405180830381855afa158015610b40573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b639190612cd9565b9050828114610b8f57604051631872fc8d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610bb18161134b565b505050565b5f610bc08261104e565b6080015192915050565b610bd26116fe565b610bdb5f611759565b565b610be56116fe565b610bee816117c9565b5050565b5f610bfb6116fe565b610c058383611aad565b90505b92915050565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb5610c4186611235565b604001516040518263ffffffff1660e01b8152600401610c619190612cc7565b6040805180830381865af4158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f919061316e565b9150915080610cc557604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610cdf90612b4d565b90505f03610d035760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610d2957610d296129bf565b14610d5c575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f8281526006840160205260408120610d74916127f2565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206136188339815191529190610e4a90612b4d565b90505f03610e6e5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e9457610e946129bf565b14610ec7575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f00919060040161318f565b6020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190612cd9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f845750825b90505f826001600160401b03166001148015610f9f5750303b155b905081158015610fad575080155b15610fcb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ff557845460ff60401b1916600160401b1785555b610fff8787612095565b831561104557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611056612829565b5f8281525f80516020613638833981519152602052604090819020815160e0810190925280545f80516020613618833981519152929190829060ff1660058111156110a3576110a36129bf565b60058111156110b4576110b46129bf565b81526020016001820180546110c890612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546110f490612b4d565b801561113f5780601f106111165761010080835404028352916020019161113f565b820191905f5260205f20905b81548152906001019060200180831161112257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6111a56116fe565b6001600160a01b0381166111ce57604051631e4fbdf760e01b81525f6004820152602401610499565b6111d781611759565b50565b6040515f905f80516020613618833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061121d9086908690613219565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112c09190810190613228565b91509150806112e257604051636b2f19e960e01b815260040160405180910390fd5b815115611308578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b031615611344576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f611354612829565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561138788611235565b604001516040518263ffffffff1660e01b81526004016113a79190612cc7565b6040805180830381865af41580156113c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e5919061316e565b91509150801561140c57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561143d5761143d6129bf565b600581111561144e5761144e6129bf565b815260200160018201805461146290612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461148e90612b4d565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115611544576115446129bf565b141580156115655750600181516005811115611562576115626129bf565b14155b1561158657805160405163170cc93360e21b81526104999190600401612b85565b60038151600581111561159b5761159b6129bf565b036115a957600481526115ae565b600581525b8360080181602001516040516115c49190612e2d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115611608576116086129bf565b0217905550602082015160018201906116219082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116c7576116c76129bf565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bdb5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117d1612829565b5f8281525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561181e5761181e6129bf565b600581111561182f5761182f6129bf565b815260200160018201805461184390612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461186f90612b4d565b80156118ba5780601f10611891576101008083540402835291602001916118ba565b820191905f5260205f20905b81548152906001019060200180831161189d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611928576119286129bf565b1461195b575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561199f5761199f6129bf565b0217905550602082015160018201906119b89082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a5685826120af565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611af157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061361883398151915242611b1060608601604087016132b5565b6001600160401b0316111580611b4a5750611b2e6202a30042612f5c565b611b3e60608601604087016132b5565b6001600160401b031610155b15611b8457611b5f60608501604086016132b5565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b99611b9460608601866132ce565b612286565b611ba9611b9460808601866132ce565b6030611bb860208601866132e2565b905014611bea57611bcc60208501856132e2565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bf484806132e2565b90505f03611c2157611c0684806132e2565b604051633e08a12560e11b8152600401610499929190613324565b5f60088201611c3086806132e2565b604051611c3e929190613219565b90815260200160405180910390205414611c7757611c5c84806132e2565b60405163a41f772f60e01b8152600401610499929190613324565b611c81835f6123ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101611cbe8a806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d06908b018b6132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d4f60608b0160408c016132b5565b6001600160401b03168152602001611d6a60608b018b6132ce565b611d7390613337565b8152602001611d8560808b018b6132ce565b611d8e90613337565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dbc9190613464565b5f60405180830381865af4158015611dd6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dfd919081019061351b565b5f82815260068601602052604090209193509150611e1b8282612e89565b508160088401611e2b88806132e2565b604051611e39929190613219565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e75908590600401612cc7565b6020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190612cd9565b6040805160e081019091529091508060018152602001611ed589806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611f6457611f646129bf565b021790555060208201516001820190611f7d9082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558061201b88806132e2565b604051612029929190613219565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061206791906132b5565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61209d612612565b6120a68261265b565b610bee81612674565b5f8281525f80516020613638833981519152602052604081206002015481905f8051602061361883398151915290600160801b90046001600160401b03166120f785826123ef565b5f61210187612685565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156121aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d19190810190612c96565b6040518263ffffffff1660e01b81526004016121ed9190612cc7565b6020604051808303815f875af1158015612209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222d9190612cd9565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61229360208201826128fb565b63ffffffff161580156122b357506122ae6020820182612cf0565b151590505b156122fa576122c560208201826128fb565b6122d26020830183612cf0565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6123076020820182612cf0565b905061231660208301836128fb565b63ffffffff16111561232f576122c560208201826128fb565b60015b61233f6020830183612cf0565b9050811015610bee576123556020830183612cf0565b61236060018461355e565b81811061236f5761236f612d35565b90506020020160208101906123849190612ac0565b6001600160a01b031661239a6020840184612cf0565b838181106123aa576123aa612d35565b90506020020160208101906123bf9190612ac0565b6001600160a01b031610156123e757604051630dbc8d5f60e31b815260040160405180910390fd5b600101612332565b5f805160206136188339815191525f6001600160401b0380841690851611156124235761241c8385613571565b9050612430565b61242d8484613571565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061249257506001840154815161248e916001600160401b031690612f5c565b8210155b156124b8576001600160401b0383166060820152818152604081015160208201526124d7565b82816060018181516124ca9190613591565b6001600160401b03169052505b60608101516124e79060646135b1565b602082015160018601546001600160401b0392909216916125129190600160401b900460ff16612f91565b101561254257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b03168160400181815161255d9190612f5c565b9052506040810180516001600160401b038716919061257d90839061355e565b905250600184015460408201516064916125a291600160401b90910460ff1690612f91565b10156125c9578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610bdb57604051631afcd79f60e31b815260040160405180910390fd5b612663612612565b61266b6126fa565b6111d781612702565b61267c612612565b6111d7816127ea565b5f8181525f805160206136388339815191526020526040812060020180545f8051602061361883398151915291906008906126cf90600160401b90046001600160401b03166135dc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610bdb612612565b61270a612612565b80355f80516020613618833981519152908155601461272f60608401604085016135f7565b60ff16118061274e575061274960608301604084016135f7565b60ff16155b156127825761276360608301604084016135f7565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61279260608301604084016135f7565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556127c360408301602084016132b5565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111a5612612565b5080546127fe90612b4d565b5f825580601f1061280d575050565b601f0160209004905f5260205f20908101906111d79190612866565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561287a575f8155600101612867565b5090565b5f6020828403121561288e575f80fd5b5035919050565b803563ffffffff811681146128a8575f80fd5b919050565b5f80604083850312156128be575f80fd5b82356001600160401b038111156128d3575f80fd5b8301608081860312156128e4575f80fd5b91506128f260208401612895565b90509250929050565b5f6020828403121561290b575f80fd5b610c0582612895565b80356001600160401b03811681146128a8575f80fd5b5f806040838503121561293b575f80fd5b82356001600160401b03811115612950575f80fd5b830160a08186031215612961575f80fd5b91506128f260208401612914565b6001600160a01b03811681146111d7575f80fd5b5f808284036080811215612995575f80fd5b60608112156129a2575f80fd5b5082915060608301356129b48161296f565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106129ef57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612a0d5781810151838201526020016129f5565b50505f910152565b5f8151808452612a2c8160208601602086016129f3565b601f01601f19169290920160200192915050565b60208152612a526020820183516129d3565b5f602083015160e06040840152612a6d610100840182612a15565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612ad0575f80fd5b8135612adb8161296f565b9392505050565b5f8060208385031215612af3575f80fd5b82356001600160401b0380821115612b09575f80fd5b818501915085601f830112612b1c575f80fd5b813581811115612b2a575f80fd5b866020828501011115612b3b575f80fd5b60209290920196919550909350505050565b600181811c90821680612b6157607f821691505b602082108103612b7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c0882846129d3565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612bc957612bc9612b93565b60405290565b604080519081016001600160401b0381118282101715612bc957612bc9612b93565b604051601f8201601f191681016001600160401b0381118282101715612c1957612c19612b93565b604052919050565b5f6001600160401b03821115612c3957612c39612b93565b50601f01601f191660200190565b5f82601f830112612c56575f80fd5b8151612c69612c6482612c21565b612bf1565b818152846020838601011115612c7d575f80fd5b612c8e8260208301602087016129f3565b949350505050565b5f60208284031215612ca6575f80fd5b81516001600160401b03811115612cbb575f80fd5b612c8e84828501612c47565b602081525f610c056020830184612a15565b5f60208284031215612ce9575f80fd5b5051919050565b5f808335601e19843603018112612d05575f80fd5b8301803591506001600160401b03821115612d1e575f80fd5b6020019150600581901b360382131561227f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d5d575f80fd5b9190910192915050565b5f82601f830112612d76575f80fd5b8135612d84612c6482612c21565b818152846020838601011115612d98575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612dc4575f80fd5b612dcc612ba7565b82356001600160401b0380821115612de2575f80fd5b612dee36838701612d67565b83526020850135915080821115612e03575f80fd5b50612e1036828601612d67565b602083015250612e2260408401612914565b604082015292915050565b5f8251612d5d8184602087016129f3565b601f821115610bb157805f5260205f20601f840160051c81016020851015612e635750805b601f840160051c820191505b81811015612e82575f8155600101612e6f565b5050505050565b81516001600160401b03811115612ea257612ea2612b93565b612eb681612eb08454612b4d565b84612e3e565b602080601f831160018114612ee9575f8415612ed25750858301515b5f19600386901b1c1916600185901b178555612f40565b5f85815260208120601f198616915b82811015612f1757888601518255948401946001909101908401612ef8565b5085821015612f3457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0857610c08612f48565b5f63ffffffff808316818103612f8757612f87612f48565b6001019392505050565b8082028115828204841417610c0857610c08612f48565b5f808335601e19843603018112612fbd575f80fd5b83016020810192503590506001600160401b03811115612fdb575f80fd5b80360382131561227f575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156130be57848303601f19018952813536889003605e1901811261304d575f80fd5b8701606061305b8280612fa8565b82875261306b8388018284612fe9565b9250505061307b86830183612fa8565b8683038888015261308d838284612fe9565b9250505060406001600160401b036130a6828501612914565b16950194909452509783019790830190600101613028565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356130ef8161296f565b6001600160a01b031660608381019190915283013536849003601e19018112613116575f80fd5b83016020810190356001600160401b03811115613131575f80fd5b8060051b3603821315613142575f80fd5b60808085015261315660a085018284613011565b95945050505050565b805180151581146128a8575f80fd5b5f806040838503121561317f575f80fd5b825191506128f26020840161315f565b5f60208083525f84546131a181612b4d565b806020870152604060018084165f81146131c257600181146131de5761320b565b60ff19851660408a0152604084151560051b8a0101955061320b565b895f5260205f205f5b858110156132025781548b82018601529083019088016131e7565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f8060408385031215613239575f80fd5b82516001600160401b038082111561324f575f80fd5b9084019060608287031215613262575f80fd5b61326a612ba7565b82518152602083015161327c8161296f565b6020820152604083015182811115613292575f80fd5b61329e88828601612c47565b60408301525093506128f29150506020840161315f565b5f602082840312156132c5575f80fd5b610c0582612914565b5f8235603e19833603018112612d5d575f80fd5b5f808335601e198436030181126132f7575f80fd5b8301803591506001600160401b03821115613310575f80fd5b60200191503681900382131561227f575f80fd5b602081525f612c8e602083018486612fe9565b5f60408236031215613347575f80fd5b61334f612bcf565b61335883612895565b81526020808401356001600160401b0380821115613374575f80fd5b9085019036601f830112613386575f80fd5b81358181111561339857613398612b93565b8060051b91506133a9848301612bf1565b81815291830184019184810190368411156133c2575f80fd5b938501935b838510156133ec57843592506133dc8361296f565b82825293850193908501906133c7565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156134595784516001600160a01b03168252938301936001929092019190830190613430565b509695505050505050565b60208152815160208201525f602083015160e0604084015261348a610100840182612a15565b90506040840151601f19808584030160608601526134a88383612a15565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134d883836133fe565b925060a08601519150808584030160c0860152506134f682826133fe565b91505060c084015161351360e08501826001600160401b03169052565b509392505050565b5f806040838503121561352c575f80fd5b8251915060208301516001600160401b03811115613548575f80fd5b61355485828601612c47565b9150509250929050565b81810381811115610c0857610c08612f48565b6001600160401b0382811682821603908082111561134457611344612f48565b6001600160401b0381811683821601908082111561134457611344612f48565b6001600160401b038181168382160280821691908281146135d4576135d4612f48565b505092915050565b5f6001600160401b03808316818103612f8757612f87612f48565b5f60208284031215613607575f80fd5b813560ff81168114612adb575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212200dc58b43f7c5b3d7e1e4a5efa2639d967fff9e57b3fdf2e81a11f4dc03b6197864736f6c63430008190033", -} - -// PoAValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use PoAValidatorManagerMetaData.ABI instead. -var PoAValidatorManagerABI = PoAValidatorManagerMetaData.ABI - -// PoAValidatorManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use PoAValidatorManagerMetaData.Bin instead. -var PoAValidatorManagerBin = PoAValidatorManagerMetaData.Bin - -// DeployPoAValidatorManager deploys a new Ethereum contract, binding an instance of PoAValidatorManager to it. -func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *PoAValidatorManager, error) { - parsed, err := PoAValidatorManagerMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) - PoAValidatorManagerBin = strings.ReplaceAll(PoAValidatorManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoAValidatorManagerBin), backend, init) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil -} - -// PoAValidatorManager is an auto generated Go binding around an Ethereum contract. -type PoAValidatorManager struct { - PoAValidatorManagerCaller // Read-only binding to the contract - PoAValidatorManagerTransactor // Write-only binding to the contract - PoAValidatorManagerFilterer // Log filterer for contract events -} - -// PoAValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type PoAValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoAValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type PoAValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoAValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type PoAValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PoAValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type PoAValidatorManagerSession struct { - Contract *PoAValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PoAValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type PoAValidatorManagerCallerSession struct { - Contract *PoAValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// PoAValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type PoAValidatorManagerTransactorSession struct { - Contract *PoAValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PoAValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type PoAValidatorManagerRaw struct { - Contract *PoAValidatorManager // Generic contract binding to access the raw methods on -} - -// PoAValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type PoAValidatorManagerCallerRaw struct { - Contract *PoAValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// PoAValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type PoAValidatorManagerTransactorRaw struct { - Contract *PoAValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewPoAValidatorManager creates a new instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManager(address common.Address, backend bind.ContractBackend) (*PoAValidatorManager, error) { - contract, err := bindPoAValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil -} - -// NewPoAValidatorManagerCaller creates a new read-only instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoAValidatorManagerCaller, error) { - contract, err := bindPoAValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &PoAValidatorManagerCaller{contract: contract}, nil -} - -// NewPoAValidatorManagerTransactor creates a new write-only instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoAValidatorManagerTransactor, error) { - contract, err := bindPoAValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &PoAValidatorManagerTransactor{contract: contract}, nil -} - -// NewPoAValidatorManagerFilterer creates a new log filterer instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoAValidatorManagerFilterer, error) { - contract, err := bindPoAValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &PoAValidatorManagerFilterer{contract: contract}, nil -} - -// bindPoAValidatorManager binds a generic wrapper to an already deployed contract. -func bindPoAValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := PoAValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_PoAValidatorManager *PoAValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoAValidatorManager.Contract.PoAValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_PoAValidatorManager *PoAValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_PoAValidatorManager *PoAValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_PoAValidatorManager *PoAValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoAValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerSession) Owner() (common.Address, error) { - return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) Owner() (common.Address, error) { - return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. -// -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initialize", settings, initialOwner) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. -// -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. -// -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. -// -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. -// -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) -} - -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. -// -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) -} - -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. -// -// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) RenounceOwnership() (*types.Transaction, error) { - return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) -} - -// PoAValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialValidatorCreatedIterator struct { - Event *PoAValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoAValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerInitialValidatorCreatedIterator{contract: _PoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerInitialValidatorCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoAValidatorManagerInitialValidatorCreated, error) { - event := new(PoAValidatorManagerInitialValidatorCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitializedIterator struct { - Event *PoAValidatorManagerInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerInitialized represents a Initialized event raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoAValidatorManagerInitializedIterator, error) { - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &PoAValidatorManagerInitializedIterator{contract: _PoAValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoAValidatorManagerInitialized, error) { - event := new(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferredIterator struct { - Event *PoAValidatorManagerOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerOwnershipTransferred represents a OwnershipTransferred event raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PoAValidatorManagerOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerOwnershipTransferredIterator{contract: _PoAValidatorManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerOwnershipTransferred) - if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseOwnershipTransferred(log types.Log) (*PoAValidatorManagerOwnershipTransferred, error) { - event := new(PoAValidatorManagerOwnershipTransferred) - if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodCreatedIterator struct { - Event *PoAValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoAValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidationPeriodCreatedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoAValidatorManagerValidationPeriodCreated, error) { - event := new(PoAValidatorManagerValidationPeriodCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodEndedIterator struct { - Event *PoAValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoAValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidationPeriodEndedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodEnded) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoAValidatorManagerValidationPeriodEnded, error) { - event := new(PoAValidatorManagerValidationPeriodEnded) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodRegisteredIterator struct { - Event *PoAValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoAValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidationPeriodRegisteredIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodRegistered) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoAValidatorManagerValidationPeriodRegistered, error) { - event := new(PoAValidatorManagerValidationPeriodRegistered) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorRemovalInitializedIterator struct { - Event *PoAValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoAValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidatorRemovalInitializedIterator{contract: _PoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidatorRemovalInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoAValidatorManagerValidatorRemovalInitialized, error) { - event := new(PoAValidatorManagerValidatorRemovalInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorWeightUpdateIterator struct { - Event *PoAValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoAValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidatorWeightUpdateIterator{contract: _PoAValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidatorWeightUpdate) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoAValidatorManagerValidatorWeightUpdate, error) { - event := new(PoAValidatorManagerValidatorWeightUpdate) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. -var ValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use ValidatorManagerMetaData.ABI instead. -var ValidatorManagerABI = ValidatorManagerMetaData.ABI - -// ValidatorManager is an auto generated Go binding around an Ethereum contract. -type ValidatorManager struct { - ValidatorManagerCaller // Read-only binding to the contract - ValidatorManagerTransactor // Write-only binding to the contract - ValidatorManagerFilterer // Log filterer for contract events -} - -// ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ValidatorManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ValidatorManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ValidatorManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ValidatorManagerSession struct { - Contract *ValidatorManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ValidatorManagerCallerSession struct { - Contract *ValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ValidatorManagerTransactorSession struct { - Contract *ValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ValidatorManagerRaw struct { - Contract *ValidatorManager // Generic contract binding to access the raw methods on -} - -// ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ValidatorManagerCallerRaw struct { - Contract *ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ValidatorManagerTransactorRaw struct { - Contract *ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewValidatorManager creates a new instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManager(address common.Address, backend bind.ContractBackend) (*ValidatorManager, error) { - contract, err := bindValidatorManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil -} - -// NewValidatorManagerCaller creates a new read-only instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ValidatorManagerCaller, error) { - contract, err := bindValidatorManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ValidatorManagerCaller{contract: contract}, nil -} - -// NewValidatorManagerTransactor creates a new write-only instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorManagerTransactor, error) { - contract, err := bindValidatorManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ValidatorManagerTransactor{contract: contract}, nil -} - -// NewValidatorManagerFilterer creates a new log filterer instance of ValidatorManager, bound to a specific deployed contract. -func NewValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorManagerFilterer, error) { - contract, err := bindValidatorManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ValidatorManagerFilterer{contract: contract}, nil -} - -// bindValidatorManager binds a generic wrapper to an already deployed contract. -func bindValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ValidatorManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorManager *ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorManager.Contract.ValidatorManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorManager *ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorManager *ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorManager *ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorManager *ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorManager *ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorManager.Contract.contract.Transact(opts, method, params...) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ValidatorManager *ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_ValidatorManager *ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ValidatorManager *ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _ValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ValidatorManager *ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, subnetConversionData, messageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ValidatorManager *ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) -} - -// ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ValidatorManager contract. -type ValidatorManagerInitialValidatorCreatedIterator struct { - Event *ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ValidatorManager contract. -type ValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &ValidatorManagerInitialValidatorCreatedIterator{contract: _ValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerInitialValidatorCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) -func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ValidatorManagerInitialValidatorCreated, error) { - event := new(ValidatorManagerInitialValidatorCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ValidatorManager contract. -type ValidatorManagerInitializedIterator struct { - Event *ValidatorManagerInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ValidatorManagerInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ValidatorManagerInitialized represents a Initialized event raised by the ValidatorManager contract. -type ValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatorManagerInitializedIterator, error) { - - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ValidatorManagerInitializedIterator{contract: _ValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ValidatorManagerInitialized, error) { - event := new(ValidatorManagerInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodCreatedIterator struct { - Event *ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight *big.Int - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &ValidatorManagerValidationPeriodCreatedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ValidatorManagerValidationPeriodCreated, error) { - event := new(ValidatorManagerValidationPeriodCreated) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodEndedIterator struct { - Event *ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &ValidatorManagerValidationPeriodEndedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodEnded) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ValidatorManagerValidationPeriodEnded, error) { - event := new(ValidatorManagerValidationPeriodEnded) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodRegisteredIterator struct { - Event *ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ValidatorManager contract. -type ValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight *big.Int - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &ValidatorManagerValidationPeriodRegisteredIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidationPeriodRegistered) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ValidatorManagerValidationPeriodRegistered, error) { - event := new(ValidatorManagerValidationPeriodRegistered) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ValidatorManager contract. -type ValidatorManagerValidatorRemovalInitializedIterator struct { - Event *ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ValidatorManager contract. -type ValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight *big.Int - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &ValidatorManagerValidatorRemovalInitializedIterator{contract: _ValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidatorRemovalInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ValidatorManagerValidatorRemovalInitialized, error) { - event := new(ValidatorManagerValidatorRemovalInitialized) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ValidatorManager contract. -type ValidatorManagerValidatorWeightUpdateIterator struct { - Event *ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ValidatorManager contract. -type ValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - ValidatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &ValidatorManagerValidatorWeightUpdateIterator{contract: _ValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ValidatorManagerValidatorWeightUpdate) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) -func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ValidatorManagerValidatorWeightUpdate, error) { - event := new(ValidatorManagerValidatorWeightUpdate) - if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. -var ValidatorMessagesMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", -} - -// ValidatorMessagesABI is the input ABI used to generate the binding from. -// Deprecated: Use ValidatorMessagesMetaData.ABI instead. -var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI - -// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ValidatorMessagesMetaData.Bin instead. -var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin - -// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. -func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { - parsed, err := ValidatorMessagesMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil -} - -// ValidatorMessages is an auto generated Go binding around an Ethereum contract. -type ValidatorMessages struct { - ValidatorMessagesCaller // Read-only binding to the contract - ValidatorMessagesTransactor // Write-only binding to the contract - ValidatorMessagesFilterer // Log filterer for contract events -} - -// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. -type ValidatorMessagesCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ValidatorMessagesTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ValidatorMessagesFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ValidatorMessagesSession struct { - Contract *ValidatorMessages // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ValidatorMessagesCallerSession struct { - Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ValidatorMessagesTransactorSession struct { - Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. -type ValidatorMessagesRaw struct { - Contract *ValidatorMessages // Generic contract binding to access the raw methods on -} - -// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ValidatorMessagesCallerRaw struct { - Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on -} - -// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ValidatorMessagesTransactorRaw struct { - Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { - contract, err := bindValidatorMessages(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil -} - -// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { - contract, err := bindValidatorMessages(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ValidatorMessagesCaller{contract: contract}, nil -} - -// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { - contract, err := bindValidatorMessages(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ValidatorMessagesTransactor{contract: contract}, nil -} - -// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. -func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { - contract, err := bindValidatorMessages(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ValidatorMessagesFilterer{contract: contract}, nil -} - -// bindValidatorMessages binds a generic wrapper to an already deployed contract. -func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ValidatorMessagesMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ValidatorMessages.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) - - if err != nil { - return *new([32]byte), *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) - - return out0, out1, err - -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) -} - -// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. -// -// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { - return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) -} - -// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. -// -// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) -} - -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) -} - -// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. -// -// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) -} - -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) -} - -// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. -// -// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) -} - -// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. -// -// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) -} - -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) -} - -// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. -// -// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) -func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { - return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) -} - -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. -// -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) - - if err != nil { - return *new(ValidatorMessagesValidationPeriod), err - } - - out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) - - return out0, err - -} - -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. -// -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { - return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. -// -// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { - return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. -// -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. -// -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { - return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. -// -// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { - return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) - - if err != nil { - return *new([32]byte), *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(bool)).(*bool) - - return out0, out1, err - -} - -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. -// -// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. -// -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) - - if err != nil { - return *new([32]byte), *new(uint64), *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) - out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) - - return out0, out1, out2, err - -} - -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. -// -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. -// -// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { - return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. -// -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { - var out []interface{} - err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) - - if err != nil { - return *new([32]byte), *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) - - return out0, out1, err - -} - -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. -// -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { - return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) -} - -// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. -// -// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) -func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { - return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) -} diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 682a59d61..efe4788e3 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -62,6 +62,28 @@ function convertToLower() { fi } +remove_matching_string() { + input_list="$1" + match="$2" + # Split the input list by commas + IFS=',' read -ra elements <<< "$input_list" + + # Initialize an empty result array + result=() + + # Iterate over each element + for element in "${elements[@]}"; do + # Check if the part after the colon matches the given string + if [[ "${element#*:}" != "$match" ]]; then + # If it doesn't match, add the element to the result array + result+=("$element") + fi + done + + # Join the result array with commas and print + (IFS=','; echo "${result[*]}") +} + function generate_bindings() { local contract_names=("$@") for contract_name in "${contract_names[@]}" @@ -73,20 +95,26 @@ function generate_bindings() { echo "Building $contract_name..." mkdir -p $TELEPORTER_PATH/out/$contract_name.sol + combined_json=$TELEPORTER_PATH/out/$contract_name.sol/combined-output.json + cwd=$(pwd) cd $TELEPORTER_PATH - solc --optimize --evm-version shanghai --combined-json abi,bin,metadata,ast,devdoc,userdoc --pretty-json $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json + solc --optimize --evm-version shanghai --combined-json abi,bin,metadata,ast,devdoc,userdoc --pretty-json $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $combined_json cd $cwd + # construct the exclude list + contracts=$(jq -r '.contracts | keys | join(",")' $combined_json) + filtered_contracts=$(remove_matching_string $contracts $contract_name) + echo "Generating Go bindings for $contract_name..." gen_path=$TELEPORTER_PATH/abi-bindings/go/$dir/$contract_name mkdir -p $gen_path $GOPATH/bin/abigen --pkg $(convertToLower $contract_name) \ - --combined-json $TELEPORTER_PATH/out/$contract_name.sol/combined-output.json \ + --combined-json $combined_json \ --type $contract_name \ --out $gen_path/$contract_name.go \ - --exc lib/subnet-evm/contracts/contracts/interfaces/IWarpMessenger.sol:IWarpMessenger + --exc $filtered_contracts echo "Done generating Go bindings for $contract_name." done } From 6f02138a244f9a87de78064a499e469fe147b42d Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 22 Oct 2024 11:05:30 -0500 Subject: [PATCH 17/43] bind external libs --- .../ERC20TokenStakingManager.go | 533 ++++++++++++++++++ .../NativeTokenStakingManager.go | 533 ++++++++++++++++++ .../PoAValidatorManager.go | 533 ++++++++++++++++++ scripts/abi_bindings.sh | 9 + 4 files changed, 1608 insertions(+) diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index d565b306c..6306921c9 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -80,6 +80,17 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } +// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorMessagesValidationPeriod struct { + SubnetID [32]byte + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner + Weight uint64 +} + // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -113,6 +124,9 @@ func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.Contra return common.Address{}, nil, nil, errors.New("GetABI returned nil") } + validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) + ERC20TokenStakingManagerBin = strings.ReplaceAll(ERC20TokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20TokenStakingManagerBin), backend, init) if err != nil { return common.Address{}, nil, nil, err @@ -2979,3 +2993,522 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidato event.Raw = log return event, nil } + +// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. +var ValidatorMessagesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c6870ddd810b3f0c78fe8c26d4cde70582b0e1033651ad0d4b083666233a715064736f6c63430008190033", +} + +// ValidatorMessagesABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorMessagesMetaData.ABI instead. +var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI + +// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorMessagesMetaData.Bin instead. +var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin + +// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. +func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// ValidatorMessages is an auto generated Go binding around an Ethereum contract. +type ValidatorMessages struct { + ValidatorMessagesCaller // Read-only binding to the contract + ValidatorMessagesTransactor // Write-only binding to the contract + ValidatorMessagesFilterer // Log filterer for contract events +} + +// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorMessagesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorMessagesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorMessagesSession struct { + Contract *ValidatorMessages // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorMessagesCallerSession struct { + Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorMessagesTransactorSession struct { + Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorMessagesRaw struct { + Contract *ValidatorMessages // Generic contract binding to access the raw methods on +} + +// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorMessagesCallerRaw struct { + Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactorRaw struct { + Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { + contract, err := bindValidatorMessages(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { + contract, err := bindValidatorMessages(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesCaller{contract: contract}, nil +} + +// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { + contract, err := bindValidatorMessages(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesTransactor{contract: contract}, nil +} + +// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { + contract, err := bindValidatorMessages(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorMessagesFilterer{contract: contract}, nil +} + +// bindValidatorMessages binds a generic wrapper to an already deployed contract. +func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) + + if err != nil { + return *new([32]byte), *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) + + return out0, out1, err + +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) + + if err != nil { + return *new(ValidatorMessagesValidationPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) + + return out0, err + +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) + + if err != nil { + return *new([32]byte), *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(bool)).(*bool) + + return out0, out1, err + +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return out0, out1, out2, err + +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return out0, out1, err + +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 968761e21..d815b9174 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -80,6 +80,17 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } +// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorMessagesValidationPeriod struct { + SubnetID [32]byte + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner + Weight uint64 +} + // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -113,6 +124,9 @@ func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.Contr return common.Address{}, nil, nil, errors.New("GetABI returned nil") } + validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) + NativeTokenStakingManagerBin = strings.ReplaceAll(NativeTokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NativeTokenStakingManagerBin), backend, init) if err != nil { return common.Address{}, nil, nil, err @@ -2979,3 +2993,522 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValida event.Raw = log return event, nil } + +// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. +var ValidatorMessagesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c6870ddd810b3f0c78fe8c26d4cde70582b0e1033651ad0d4b083666233a715064736f6c63430008190033", +} + +// ValidatorMessagesABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorMessagesMetaData.ABI instead. +var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI + +// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorMessagesMetaData.Bin instead. +var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin + +// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. +func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// ValidatorMessages is an auto generated Go binding around an Ethereum contract. +type ValidatorMessages struct { + ValidatorMessagesCaller // Read-only binding to the contract + ValidatorMessagesTransactor // Write-only binding to the contract + ValidatorMessagesFilterer // Log filterer for contract events +} + +// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorMessagesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorMessagesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorMessagesSession struct { + Contract *ValidatorMessages // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorMessagesCallerSession struct { + Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorMessagesTransactorSession struct { + Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorMessagesRaw struct { + Contract *ValidatorMessages // Generic contract binding to access the raw methods on +} + +// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorMessagesCallerRaw struct { + Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactorRaw struct { + Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { + contract, err := bindValidatorMessages(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { + contract, err := bindValidatorMessages(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesCaller{contract: contract}, nil +} + +// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { + contract, err := bindValidatorMessages(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesTransactor{contract: contract}, nil +} + +// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { + contract, err := bindValidatorMessages(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorMessagesFilterer{contract: contract}, nil +} + +// bindValidatorMessages binds a generic wrapper to an already deployed contract. +func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) + + if err != nil { + return *new([32]byte), *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) + + return out0, out1, err + +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) + + if err != nil { + return *new(ValidatorMessagesValidationPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) + + return out0, err + +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) + + if err != nil { + return *new([32]byte), *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(bool)).(*bool) + + return out0, out1, err + +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return out0, out1, out2, err + +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return out0, out1, err + +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index d60664367..681eea208 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -68,6 +68,17 @@ type ValidatorManagerSettings struct { MaximumChurnPercentage uint8 } +// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorMessagesValidationPeriod struct { + SubnetID [32]byte + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner + Weight uint64 +} + // ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. type ValidatorRegistrationInput struct { NodeID []byte @@ -101,6 +112,9 @@ func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } + validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) + PoAValidatorManagerBin = strings.ReplaceAll(PoAValidatorManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoAValidatorManagerBin), backend, init) if err != nil { return common.Address{}, nil, nil, err @@ -2014,3 +2028,522 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpd event.Raw = log return event, nil } + +// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. +var ValidatorMessagesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c6870ddd810b3f0c78fe8c26d4cde70582b0e1033651ad0d4b083666233a715064736f6c63430008190033", +} + +// ValidatorMessagesABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorMessagesMetaData.ABI instead. +var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI + +// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorMessagesMetaData.Bin instead. +var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin + +// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. +func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorMessagesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// ValidatorMessages is an auto generated Go binding around an Ethereum contract. +type ValidatorMessages struct { + ValidatorMessagesCaller // Read-only binding to the contract + ValidatorMessagesTransactor // Write-only binding to the contract + ValidatorMessagesFilterer // Log filterer for contract events +} + +// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorMessagesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorMessagesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorMessagesSession struct { + Contract *ValidatorMessages // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorMessagesCallerSession struct { + Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorMessagesTransactorSession struct { + Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorMessagesRaw struct { + Contract *ValidatorMessages // Generic contract binding to access the raw methods on +} + +// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorMessagesCallerRaw struct { + Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactorRaw struct { + Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { + contract, err := bindValidatorMessages(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { + contract, err := bindValidatorMessages(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesCaller{contract: contract}, nil +} + +// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { + contract, err := bindValidatorMessages(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesTransactor{contract: contract}, nil +} + +// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { + contract, err := bindValidatorMessages(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorMessagesFilterer{contract: contract}, nil +} + +// bindValidatorMessages binds a generic wrapper to an already deployed contract. +func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorMessagesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.ValidatorMessagesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterSubnetValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterSubnetValidatorMessage", validationPeriod) + + if err != nil { + return *new([32]byte), *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) + + return out0, out1, err + +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0x01bbec74. +// +// Solidity: function packRegisterSubnetValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterSubnetValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionData(opts *bind.CallOpts, subnetConversionData SubnetConversionData) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionData", subnetConversionData) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionData is a free data retrieval call binding the contract method 0xf65e4b33. +// +// Solidity: function packSubnetConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionData(subnetConversionData SubnetConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionData(&_ValidatorMessages.CallOpts, subnetConversionData) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetConversionMessage(opts *bind.CallOpts, subnetConversionID [32]byte) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetConversionMessage", subnetConversionID) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1fd979c7. +// +// Solidity: function packSubnetConversionMessage(bytes32 subnetConversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetConversionMessage(subnetConversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetConversionMessage(&_ValidatorMessages.CallOpts, subnetConversionID) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorRegistrationMessage", validationID, valid) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xfa1f8dfb. +// +// Solidity: function packSubnetValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetValidatorWeightMessage", validationID, nonce, weight) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x8545c16a. +// +// Solidity: function packSubnetValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterSubnetValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterSubnetValidatorMessage", input) + + if err != nil { + return *new(ValidatorMessagesValidationPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) + + return out0, err + +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackRegisterSubnetValidatorMessage is a free data retrieval call binding the contract method 0xa5233770. +// +// Solidity: function unpackRegisterSubnetValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterSubnetValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterSubnetValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetConversionMessage", input) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetConversionMessage is a free data retrieval call binding the contract method 0x1e6d9789. +// +// Solidity: function unpackSubnetConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorRegistrationMessage", input) + + if err != nil { + return *new([32]byte), *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(bool)).(*bool) + + return out0, out1, err + +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x2e43ceb5. +// +// Solidity: function unpackSubnetValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetValidatorWeightMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return out0, out1, out2, err + +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetValidatorWeightMessage is a free data retrieval call binding the contract method 0x9de23d40. +// +// Solidity: function unpackSubnetValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackSubnetValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return out0, out1, err + +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index efe4788e3..e9ad7e6ac 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -22,6 +22,8 @@ PROXY_LIST="TransparentUpgradeableProxy ProxyAdmin" SUBNET_EVM_LIST="INativeMinter" +EXTERNAL_LIBS="ValidatorMessages" + CONTRACT_LIST= HELP= while [ $# -gt 0 ]; do @@ -104,8 +106,15 @@ function generate_bindings() { # construct the exclude list contracts=$(jq -r '.contracts | keys | join(",")' $combined_json) + + # Filter out the contract we are generating bindings for filtered_contracts=$(remove_matching_string $contracts $contract_name) + # Filter out external libraries + for lib in $EXTERNAL_LIBS; do + filtered_contracts=$(remove_matching_string $filtered_contracts $lib) + done + echo "Generating Go bindings for $contract_name..." gen_path=$TELEPORTER_PATH/abi-bindings/go/$dir/$contract_name mkdir -p $gen_path From 2f9e0c3a6047dc3b059eda79092374e16bc16024 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 24 Oct 2024 17:04:21 -0500 Subject: [PATCH 18/43] resolve merge conflicts --- .../ERC20TokenStakingManager.go | 54 ++-- .../NativeTokenStakingManager.go | 54 ++-- .../PoAValidatorManager.go | 2 +- .../validator-manager/PoSValidatorManager.sol | 6 +- .../interfaces/IPoSValidatorManager.sol | 8 +- .../tests/PoSValidatorManagerTests.t.sol | 288 +----------------- .../tests/ValidatorManagerTests.t.sol | 1 + 7 files changed, 69 insertions(+), 344 deletions(-) diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 6306921c9..9cba8444d 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -102,8 +102,8 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615cf8380380615cf883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615bab8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c80638280a25a11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b80638280a25a1461037f57806393e245981461038757806398f3e2b41461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360305d621161016557806360305d6214610322578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee5780635297fae61461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b61021461031d366004614d2b565b610f4f565b61032a601481565b60405163ffffffff909116815260200161023f565b61030161034d366004614d53565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b610231603081565b610214610395366004614c00565b61129d565b6102146103a8366004614d2b565b611368565b6103016103bb366004614d6e565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615ad683398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615af683398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614e03565b6102946202a30081565b6103015f80516020615ab683398151915281565b61021461049b366004614e97565b611cc5565b6103016104ae366004614ed5565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff16600581111561053557610535614d8e565b600581111561054657610546614d8e565b815260200160018201805461055a90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f40565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d8e565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190615081565b6040518263ffffffff1660e01b815260040161072991906150b2565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076991906150c4565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615af68339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083391906150c4565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150db565b6001600160a01b0316146108b05761088b60608401604085016150db565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150f6565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150f6565b8363ffffffff168181106108f7576108f761513b565b9050602002810190610909919061514f565b610912906151ba565b80516040519192505f91600888019161092a91615235565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da91906004016150b2565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391615235565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e191906150c4565b90508086600801835f01516040516109f99190615235565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d8e565b021790555060208201516001820190610a94908261528a565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b39911685615359565b8251604051919550610b4a91615235565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f9061536c565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff168361538e565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c3091906150b2565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f91906150c4565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154d0565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea9190810190615081565b90505f600282604051610cfd9190615235565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b91906150c4565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d8e565b14610dea578060405163170cc93360e21b81526004016104da9190614f78565b61076983836122a8565b5f805f80516020615ad683398151915260030154610e12908461555b565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615ad68339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d8e565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b3683398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b3683398151915255565b949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115610f9c57610f9c614d8e565b6003811115610fad57610fad614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d8e565b1461105b578251604051633b0d540d60e21b81526104da919060040161557a565b60048151600581111561107057611070614d8e565b036110865761107e85612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab8a612157565b604001516040518263ffffffff1660e01b81526004016110cb91906150b2565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a9190615594565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b03841661538e565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b5f80516020615ad68339815191525f6112b583611b76565b51905060048160058111156112cc576112cc614d8e565b146112ec578060405163170cc93360e21b81526004016104da9190614f78565b5f8381526005830160205260409020546001600160a01b0316331461133257335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b61137061277a565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff1660038111156113bd576113bd614d8e565b60038111156113ce576113ce614d8e565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561144757611447614d8e565b14611468578051604051633b0d540d60e21b81526104da919060040161557a565b60046114778260400151611b76565b51600581111561148957611489614d8e565b14611588575f61149885612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016114d791906150b2565b606060405180830381865af41580156114f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115169190615594565b5091509150818460400151146115425760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561158457604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61159183612de9565b50506115a960015f80516020615b3683398151915255565b5050565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b3683398151915255565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c91906150b2565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155d4565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f40565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d8e565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff16600381111561181b5761181b614d8e565b600381111561182c5761182c614d8e565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d8e565b141580156118c657506003815160038111156118c3576118c3614d8e565b14155b156118e7578051604051633b0d540d60e21b81526104da919060040161557a565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d69190810190615081565b6040518263ffffffff1660e01b81526004016119f291906150b2565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3291906150c4565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615af68339815191529190611a8090614f40565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d8e565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155f7565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906150c4565b611b7e614b4b565b5f8281525f80516020615b56833981519152602052604090819020815160e0810190925280545f80516020615af6833981519152929190829060ff166005811115611bcb57611bcb614d8e565b6005811115611bdc57611bdc614d8e565b8152602001600182018054611bf090614f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f40565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615af6833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615681565b90815260200160405180910390205491505092915050565b5f8381525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad68339815191529284929091829060ff166003811115611e4d57611e4d614d8e565b6003811115611e5e57611e5e614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d8e565b14611f0c578251604051633b0d540d60e21b81526104da919060040161557a565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f45573361130d565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615690565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d8e565b036120eb5760028401546080840151611fdf916001600160401b031690615690565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e91849161205991906156b0565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d8e565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f78565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156d0565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156d0565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a391906150c4565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161244291906150b2565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615760565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615ad6833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615ad6833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e6573361130d565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615690565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274491906150c4565b905080846008015f8a81526020019081526020015f205f8282546127689190615359565b90915550501515979650505050505050565b5f80516020615b368339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615af68339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d91906150b2565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155d4565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d8e565b60058111156128b4576128b4614d8e565b81526020016001820180546128c890614f40565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f40565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d8e565b141580156129cb57506001815160058111156129c8576129c8614d8e565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f78565b600381516005811115612a0157612a01614d8e565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a9190615235565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d8e565b021790555060208201516001820190612a87908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d8e565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615ab683398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615ab6833981519152546115a9906001600160a01b03168383613987565b60015f80516020615b3683398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615ad683398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615b168339815191526020526040808220815160e0810190925280545f80516020615ad683398151915293929190829060ff166003811115612e3657612e36614d8e565b6003811115612e4757612e47614d8e565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615690565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff168561538e565b612f9e919061555b565b915081866008015f8681526020019081526020015f205f828254612fc29190615359565b90915550612fd290508284615783565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615ad68339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d8e565b146130c657805160405163170cc93360e21b81526104da9190600401614f78565b5f8282608001516130d79190615690565b905083600201600a9054906101000a90046001600160401b031682604001516131009190615796565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d8e565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6115a9816140b0565b5f8281525f80516020615b56833981519152602052604081206002015481905f80516020615af683398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134519190810190615081565b6040518263ffffffff1660e01b815260040161346d91906150b2565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad91906150c4565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615ad683398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d8e565b148061355c575060048251600581111561355a5761355a614d8e565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d8e565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f78565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a91906150c4565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b568339815191526020526040808220815160e0810190925280545f80516020615af683398151915293929190829060ff1660058111156136f8576136f8614d8e565b600581111561370957613709614d8e565b815260200160018201805461371d90614f40565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f40565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d8e565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f78565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d8e565b021790555060208201516001820190613892908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615ab6833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615af683398151915242613a6c6060860160408701614d53565b6001600160401b0316111580613aa65750613a8a6202a30042615359565b613a9a6060860160408701614d53565b6001600160401b031610155b15613ae057613abb6060850160408601614d53565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af060608601866157c1565b61456a565b613b05613af060808601866157c1565b6030613b1460208601866157d5565b905014613b4657613b2860208501856157d5565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157d5565b90505f03613b7d57613b6284806157d5565b604051633e08a12560e11b81526004016104da929190615817565b5f60088201613b8c86806157d5565b604051613b9a929190615681565b90815260200160405180910390205414613bd357613bb884806157d5565b60405163a41f772f60e01b81526004016104da929190615817565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d53565b6001600160401b03168152602001613cc660608b018b6157c1565b613ccf9061582a565b8152602001613ce160808b018b6157c1565b613cea9061582a565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d18919061594c565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d599190810190615a03565b5f82815260068601602052604090209193509150613d77828261528a565b508160088401613d8788806157d5565b604051613d95929190615681565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd19085906004016150b2565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1191906150c4565b6040805160e081019091529091508060018152602001613e3189806157d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d8e565b021790555060208201516001820190613ed9908261528a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157d5565b604051613f85929190615681565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d53565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d53565b61408260e0860160c08701615a46565b614093610100870160e08801615a5f565b6101008701356140ab61014089016101208a016150db565b6146fc565b6140b8613ff1565b5f80516020615ab68339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615af68339815191525f6001600160401b03808416908516111561414c5761414583856156b0565b9050614159565b61415684846156b0565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b031690615359565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615690565b6001600160401b03169052505b6060810151614210906064615796565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff1661538e565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b0316816040018181516142869190615359565b9052506040810180516001600160401b03871691906142a6908390615783565b905250600184015460408201516064916142cb91600160401b90910460ff169061538e565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b568339815191526020526040812060020180545f80516020615af6833981519152919060089061438590600160401b90046001600160401b0316615a7f565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a9a565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b91906150c4565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa91906150c4565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a8282615783565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150f6565b151590505b156145de576145a96020820182614c86565b6145b660208301836150f6565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150f6565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150f6565b90508110156115a95761463960208301836150f6565b614644600184615783565b8181106146535761465361513b565b905060200201602081019061466891906150db565b6001600160a01b031661467e60208401846150f6565b8381811061468e5761468e61513b565b90506020020160208101906146a391906150db565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615ad683398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615af683398151915290815560146149336060840160408501615a5f565b60ff161180614952575061494d6060830160408401615a5f565b60ff16155b15614986576149676060830160408401615a5f565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a5f565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d53565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a369190615235565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f40565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f8060408385031215614d3c575f80fd5b614d4583614bad565b946020939093013593505050565b5f60208284031215614d63575f80fd5b813561215081614cb0565b5f8060408385031215614d7f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614db257614db2614d8e565b9052565b5f5b83811015614dd0578181015183820152602001614db8565b50505f910152565b5f8151808452614def816020860160208601614db6565b601f01601f19169290920160200192915050565b60208152614e15602082018351614da2565b5f602083015160e06040840152614e30610100840182614dd8565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614eaa575f80fd5b61014080821215614eb9575f80fd5b8493508301359050614eca81614e83565b809150509250929050565b5f8060208385031215614ee6575f80fd5b82356001600160401b0380821115614efc575f80fd5b818501915085601f830112614f0f575f80fd5b813581811115614f1d575f80fd5b866020828501011115614f2e575f80fd5b60209290920196919550909350505050565b600181811c90821680614f5457607f821691505b602082108103614f7257634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614da2565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614fbc57614fbc614f86565b60405290565b604080519081016001600160401b0381118282101715614fbc57614fbc614f86565b604051601f8201601f191681016001600160401b038111828210171561500c5761500c614f86565b604052919050565b5f6001600160401b0382111561502c5761502c614f86565b50601f01601f191660200190565b5f82601f830112615049575f80fd5b815161505c61505782615014565b614fe4565b818152846020838601011115615070575f80fd5b610f47826020830160208701614db6565b5f60208284031215615091575f80fd5b81516001600160401b038111156150a6575f80fd5b610f478482850161503a565b602081525f6121506020830184614dd8565b5f602082840312156150d4575f80fd5b5051919050565b5f602082840312156150eb575f80fd5b813561215081614e83565b5f808335601e1984360301811261510b575f80fd5b8301803591506001600160401b03821115615124575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615163575f80fd5b9190910192915050565b5f82601f83011261517c575f80fd5b813561518a61505782615014565b81815284602083860101111561519e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151ca575f80fd5b6151d2614f9a565b82356001600160401b03808211156151e8575f80fd5b6151f43683870161516d565b83526020850135915080821115615209575f80fd5b506152163682860161516d565b602083015250604083013561522a81614cb0565b604082015292915050565b5f8251615163818460208701614db6565b601f8211156104e357805f5260205f20601f840160051c8101602085101561526b5750805b601f840160051c820191505b81811015611a32575f8155600101615277565b81516001600160401b038111156152a3576152a3614f86565b6152b7816152b18454614f40565b84615246565b602080601f8311600181146152ea575f84156152d35750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b82811015615318578886015182559484019460019091019084016152f9565b508582101561533557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e48615345565b5f63ffffffff80831681810361538457615384615345565b6001019392505050565b8082028115828204841417610e4857610e48615345565b5f808335601e198436030181126153ba575f80fd5b83016020810192503590506001600160401b038111156153d8575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154c357848303601f19018952813536889003605e1901811261544a575f80fd5b8701606061545882806153a5565b82875261546883880182846153e6565b92505050615478868301836153a5565b8683038888015261548a8382846153e6565b92505050604080830135925061549f83614cb0565b6001600160401b039290921694909101939093529783019790830190600101615425565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154f481614e83565b6001600160a01b031660608381019190915283013536849003601e1901811261551b575f80fd5b83016020810190356001600160401b03811115615536575f80fd5b8060051b3603821315615547575f80fd5b60808085015261369a60a08501828461540e565b5f8261557557634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061558e5761558e614d8e565b91905290565b5f805f606084860312156155a6575f80fd5b8351925060208401516155b881614cb0565b60408501519092506155c981614cb0565b809150509250925092565b5f80604083850312156155e5575f80fd5b825191506020830151614eca81614ba0565b5f60208083525f845461560981614f40565b806020870152604060018084165f811461562a576001811461564657615673565b60ff19851660408a0152604084151560051b8a01019550615673565b895f5260205f205f5b8581101561566a5781548b820186015290830190880161564f565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561226657612266615345565b6001600160401b0382811682821603908082111561226657612266615345565b5f80604083850312156156e1575f80fd5b82516001600160401b03808211156156f7575f80fd5b908401906060828703121561570a575f80fd5b615712614f9a565b82518152602083015161572481614e83565b602082015260408301518281111561573a575f80fd5b6157468882860161503a565b6040830152508094505050506020830151614eca81614ba0565b5f8060408385031215615771575f80fd5b825191506020830151614eca81614cb0565b81810381811115610e4857610e48615345565b6001600160401b038181168382160280821691908281146157b9576157b9615345565b505092915050565b5f8235603e19833603018112615163575f80fd5b5f808335601e198436030181126157ea575f80fd5b8301803591506001600160401b03821115615803575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153e6565b5f6040823603121561583a575f80fd5b615842614fc2565b61584b83614bad565b81526020808401356001600160401b0380821115615867575f80fd5b9085019036601f830112615879575f80fd5b81358181111561588b5761588b614f86565b8060051b915061589c848301614fe4565b81815291830184019184810190368411156158b5575f80fd5b938501935b838510156158df57843592506158cf83614e83565b82825293850193908501906158ba565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b03168252938301936001929092019190830190615923565b60208152815160208201525f602083015160e06040840152615972610100840182614dd8565b90506040840151601f19808584030160608601526159908383614dd8565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159c083836158f1565b925060a08601519150808584030160c0860152506159de82826158f1565b91505060c08401516159fb60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a14575f80fd5b8251915060208301516001600160401b03811115615a30575f80fd5b615a3c8582860161503a565b9150509250929050565b5f60208284031215615a56575f80fd5b61215082614c9f565b5f60208284031215615a6f575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361538457615384615345565b5f60208284031215615aaa575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212204ca9a50194199189e26dc263d6e7a3864a5bf7568967035b043b2c1b9f3f56a064736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615cd0380380615cd083398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615b838061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c806380dd672f11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b806380dd672f1461037f5780638280a25a1461039257806393e245981461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360ad77841161016557806360ad77841461032c578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee57806360305d621461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b610317601481565b60405163ffffffff909116815260200161023f565b61021461033a366004614c65565b610f4f565b61030161034d366004614d2b565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b61021461038d366004614c65565b61129d565b610231603081565b6102146103a8366004614c00565b6114e2565b6103016103bb366004614d46565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615aae83398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615ace83398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614ddb565b6102946202a30081565b6103015f80516020615a8e83398151915281565b61021461049b366004614e6f565b611cc5565b6103016104ae366004614ead565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b2e8339815191526020526040808220815160e0810190925280545f80516020615ace83398151915293929190829060ff16600581111561053557610535614d66565b600581111561054657610546614d66565b815260200160018201805461055a90614f18565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f18565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d66565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190615059565b6040518263ffffffff1660e01b8152600401610729919061508a565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610769919061509c565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615ace8339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610833919061509c565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150b3565b6001600160a01b0316146108b05761088b60608401604085016150b3565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150ce565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150ce565b8363ffffffff168181106108f7576108f7615113565b90506020028101906109099190615127565b61091290615192565b80516040519192505f91600888019161092a9161520d565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da919060040161508a565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a39161520d565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e1919061509c565b90508086600801835f01516040516109f9919061520d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d66565b021790555060208201516001820190610a949082615262565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b39911685615331565b8251604051919550610b4a9161520d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f90615344565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff1683615366565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c30919061508a565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f919061509c565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154a8565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea9190810190615059565b90505f600282604051610cfd919061520d565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b919061509c565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d66565b14610dea578060405163170cc93360e21b81526004016104da9190614f50565b61076983836122a8565b5f805f80516020615aae83398151915260030154610e129084615533565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615aae8339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d66565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b0e83398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b0e83398151915255565b949350505050565b5f8281525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff166003811115610f9c57610f9c614d66565b6003811115610fad57610fad614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d66565b1461105b578251604051633b0d540d60e21b81526104da9190600401615552565b60048151600581111561107057611070614d66565b036110865761107e86612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab89612157565b604001516040518263ffffffff1660e01b81526004016110cb919061508a565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a919061556c565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b038416615366565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b6112a561277a565b5f8281525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff1660038111156112f2576112f2614d66565b600381111561130357611303614d66565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561137c5761137c614d66565b1461139d578051604051633b0d540d60e21b81526104da9190600401615552565b60046113ac8260400151611b76565b5160058111156113be576113be614d66565b146114bd575f6113cd84612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b815260040161140c919061508a565b606060405180830381865af4158015611427573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144b919061556c565b5091509150818460400151146114775760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b031611156114b957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b6114c684612de9565b50506114de60015f80516020615b0e83398151915255565b5050565b5f80516020615aae8339815191525f6114fa83611b76565b519050600481600581111561151157611511614d66565b14611531578060405163170cc93360e21b81526004016104da9190614f50565b5f8381526005830160205260409020546001600160a01b0316331461157757335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b0e83398151915255565b5f80516020615ace8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c919061508a565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155ac565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f18565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d66565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff16600381111561181b5761181b614d66565b600381111561182c5761182c614d66565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d66565b141580156118c657506003815160038111156118c3576118c3614d66565b14155b156118e7578051604051633b0d540d60e21b81526104da9190600401615552565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d69190810190615059565b6040518263ffffffff1660e01b81526004016119f2919061508a565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a32919061509c565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615ace8339815191529190611a8090614f18565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d66565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155cf565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e3919061509c565b611b7e614b4b565b5f8281525f80516020615b2e833981519152602052604090819020815160e0810190925280545f80516020615ace833981519152929190829060ff166005811115611bcb57611bcb614d66565b6005811115611bdc57611bdc614d66565b8152602001600182018054611bf090614f18565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f18565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615ace833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615659565b90815260200160405180910390205491505092915050565b5f8381525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae8339815191529284929091829060ff166003811115611e4d57611e4d614d66565b6003811115611e5e57611e5e614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d66565b14611f0c578251604051633b0d540d60e21b81526104da9190600401615552565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f455733611552565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615668565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d66565b036120eb5760028401546080840151611fdf916001600160401b031690615668565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e9184916120599190615688565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d66565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f50565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156a8565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156a8565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a3919061509c565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b8152600401612442919061508a565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615738565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615aae833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615aae833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e65733611552565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615668565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612744919061509c565b905080846008015f8a81526020019081526020015f205f8282546127689190615331565b90915550501515979650505050505050565b5f80516020615b0e8339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615ace8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d919061508a565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155ac565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d66565b60058111156128b4576128b4614d66565b81526020016001820180546128c890614f18565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f18565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d66565b141580156129cb57506001815160058111156129c8576129c8614d66565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f50565b600381516005811115612a0157612a01614d66565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a919061520d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d66565b021790555060208201516001820190612a879082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d66565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615a8e83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615a8e833981519152546114de906001600160a01b03168383613987565b60015f80516020615b0e83398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615aae83398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff166003811115612e3657612e36614d66565b6003811115612e4757612e47614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615668565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff1685615366565b612f9e9190615533565b915081866008015f8681526020019081526020015f205f828254612fc29190615331565b90915550612fd29050828461575b565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615aae8339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d66565b146130c657805160405163170cc93360e21b81526104da9190600401614f50565b5f8282608001516130d79190615668565b905083600201600a9054906101000a90046001600160401b03168260400151613100919061576e565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d66565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6114de816140b0565b5f8281525f80516020615b2e833981519152602052604081206002015481905f80516020615ace83398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134519190810190615059565b6040518263ffffffff1660e01b815260040161346d919061508a565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad919061509c565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615aae83398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d66565b148061355c575060048251600581111561355a5761355a614d66565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d66565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f50565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a919061509c565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b2e8339815191526020526040808220815160e0810190925280545f80516020615ace83398151915293929190829060ff1660058111156136f8576136f8614d66565b600581111561370957613709614d66565b815260200160018201805461371d90614f18565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f18565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d66565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d66565b0217905550602082015160018201906138929082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615a8e833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615ace83398151915242613a6c6060860160408701614d2b565b6001600160401b0316111580613aa65750613a8a6202a30042615331565b613a9a6060860160408701614d2b565b6001600160401b031610155b15613ae057613abb6060850160408601614d2b565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af06060860186615799565b61456a565b613b05613af06080860186615799565b6030613b1460208601866157ad565b905014613b4657613b2860208501856157ad565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157ad565b90505f03613b7d57613b6284806157ad565b604051633e08a12560e11b81526004016104da9291906157ef565b5f60088201613b8c86806157ad565b604051613b9a929190615659565b90815260200160405180910390205414613bd357613bb884806157ad565b60405163a41f772f60e01b81526004016104da9291906157ef565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d2b565b6001600160401b03168152602001613cc660608b018b615799565b613ccf90615802565b8152602001613ce160808b018b615799565b613cea90615802565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d189190615924565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d5991908101906159db565b5f82815260068601602052604090209193509150613d778282615262565b508160088401613d8788806157ad565b604051613d95929190615659565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd190859060040161508a565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e11919061509c565b6040805160e081019091529091508060018152602001613e3189806157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d66565b021790555060208201516001820190613ed99082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157ad565b604051613f85929190615659565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d2b565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d2b565b61408260e0860160c08701615a1e565b614093610100870160e08801615a37565b6101008701356140ab61014089016101208a016150b3565b6146fc565b6140b8613ff1565b5f80516020615a8e8339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615ace8339815191525f6001600160401b03808416908516111561414c576141458385615688565b9050614159565b6141568484615688565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b031690615331565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615668565b6001600160401b03169052505b606081015161421090606461576e565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff16615366565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b0316816040018181516142869190615331565b9052506040810180516001600160401b03871691906142a690839061575b565b905250600184015460408201516064916142cb91600160401b90910460ff1690615366565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b2e8339815191526020526040812060020180545f80516020615ace833981519152919060089061438590600160401b90046001600160401b0316615a57565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a72565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b919061509c565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa919061509c565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a828261575b565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150ce565b151590505b156145de576145a96020820182614c86565b6145b660208301836150ce565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150ce565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150ce565b90508110156114de5761463960208301836150ce565b61464460018461575b565b81811061465357614653615113565b905060200201602081019061466891906150b3565b6001600160a01b031661467e60208401846150ce565b8381811061468e5761468e615113565b90506020020160208101906146a391906150b3565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615aae83398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615ace83398151915290815560146149336060840160408501615a37565b60ff161180614952575061494d6060830160408401615a37565b60ff16155b15614986576149676060830160408401615a37565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a37565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d2b565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a36919061520d565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f18565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f60208284031215614d3b575f80fd5b813561215081614cb0565b5f8060408385031215614d57575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614d8a57614d8a614d66565b9052565b5f5b83811015614da8578181015183820152602001614d90565b50505f910152565b5f8151808452614dc7816020860160208601614d8e565b601f01601f19169290920160200192915050565b60208152614ded602082018351614d7a565b5f602083015160e06040840152614e08610100840182614db0565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614e82575f80fd5b61014080821215614e91575f80fd5b8493508301359050614ea281614e5b565b809150509250929050565b5f8060208385031215614ebe575f80fd5b82356001600160401b0380821115614ed4575f80fd5b818501915085601f830112614ee7575f80fd5b813581811115614ef5575f80fd5b866020828501011115614f06575f80fd5b60209290920196919550909350505050565b600181811c90821680614f2c57607f821691505b602082108103614f4a57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614d7a565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614f9457614f94614f5e565b60405290565b604080519081016001600160401b0381118282101715614f9457614f94614f5e565b604051601f8201601f191681016001600160401b0381118282101715614fe457614fe4614f5e565b604052919050565b5f6001600160401b0382111561500457615004614f5e565b50601f01601f191660200190565b5f82601f830112615021575f80fd5b815161503461502f82614fec565b614fbc565b818152846020838601011115615048575f80fd5b610f47826020830160208701614d8e565b5f60208284031215615069575f80fd5b81516001600160401b0381111561507e575f80fd5b610f4784828501615012565b602081525f6121506020830184614db0565b5f602082840312156150ac575f80fd5b5051919050565b5f602082840312156150c3575f80fd5b813561215081614e5b565b5f808335601e198436030181126150e3575f80fd5b8301803591506001600160401b038211156150fc575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261513b575f80fd5b9190910192915050565b5f82601f830112615154575f80fd5b813561516261502f82614fec565b818152846020838601011115615176575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151a2575f80fd5b6151aa614f72565b82356001600160401b03808211156151c0575f80fd5b6151cc36838701615145565b835260208501359150808211156151e1575f80fd5b506151ee36828601615145565b602083015250604083013561520281614cb0565b604082015292915050565b5f825161513b818460208701614d8e565b601f8211156104e357805f5260205f20601f840160051c810160208510156152435750805b601f840160051c820191505b81811015611a32575f815560010161524f565b81516001600160401b0381111561527b5761527b614f5e565b61528f816152898454614f18565b8461521e565b602080601f8311600181146152c2575f84156152ab5750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b828110156152f0578886015182559484019460019091019084016152d1565b508582101561530d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e4861531d565b5f63ffffffff80831681810361535c5761535c61531d565b6001019392505050565b8082028115828204841417610e4857610e4861531d565b5f808335601e19843603018112615392575f80fd5b83016020810192503590506001600160401b038111156153b0575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561549b57848303601f19018952813536889003605e19018112615422575f80fd5b87016060615430828061537d565b82875261544083880182846153be565b925050506154508683018361537d565b868303888801526154628382846153be565b92505050604080830135925061547783614cb0565b6001600160401b0392909216949091019390935297830197908301906001016153fd565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154cc81614e5b565b6001600160a01b031660608381019190915283013536849003601e190181126154f3575f80fd5b83016020810190356001600160401b0381111561550e575f80fd5b8060051b360382131561551f575f80fd5b60808085015261369a60a0850182846153e6565b5f8261554d57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061556657615566614d66565b91905290565b5f805f6060848603121561557e575f80fd5b83519250602084015161559081614cb0565b60408501519092506155a181614cb0565b809150509250925092565b5f80604083850312156155bd575f80fd5b825191506020830151614ea281614ba0565b5f60208083525f84546155e181614f18565b806020870152604060018084165f8114615602576001811461561e5761564b565b60ff19851660408a0152604084151560051b8a0101955061564b565b895f5260205f205f5b858110156156425781548b8201860152908301908801615627565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156122665761226661531d565b6001600160401b038281168282160390808211156122665761226661531d565b5f80604083850312156156b9575f80fd5b82516001600160401b03808211156156cf575f80fd5b90840190606082870312156156e2575f80fd5b6156ea614f72565b8251815260208301516156fc81614e5b565b6020820152604083015182811115615712575f80fd5b61571e88828601615012565b6040830152508094505050506020830151614ea281614ba0565b5f8060408385031215615749575f80fd5b825191506020830151614ea281614cb0565b81810381811115610e4857610e4861531d565b6001600160401b038181168382160280821691908281146157915761579161531d565b505092915050565b5f8235603e1983360301811261513b575f80fd5b5f808335601e198436030181126157c2575f80fd5b8301803591506001600160401b038211156157db575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153be565b5f60408236031215615812575f80fd5b61581a614f9a565b61582383614bad565b81526020808401356001600160401b038082111561583f575f80fd5b9085019036601f830112615851575f80fd5b81358181111561586357615863614f5e565b8060051b9150615874848301614fbc565b818152918301840191848101903684111561588d575f80fd5b938501935b838510156158b757843592506158a783614e5b565b8282529385019390850190615892565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b031682529383019360019290920191908301906158fb565b60208152815160208201525f602083015160e0604084015261594a610100840182614db0565b90506040840151601f19808584030160608601526159688383614db0565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261599883836158c9565b925060a08601519150808584030160c0860152506159b682826158c9565b91505060c08401516159d360e08501826001600160401b03169052565b509392505050565b5f80604083850312156159ec575f80fd5b8251915060208301516001600160401b03811115615a08575f80fd5b615a1485828601615012565b9150509250929050565b5f60208284031215615a2e575f80fd5b61215082614c9f565b5f60208284031215615a47575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361535c5761535c61531d565b5f60208284031215615a82575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212202b2813f55dd15547343e69c013200575eda9bb3bb541d8ab37c4ea3939789ec164736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -824,46 +824,46 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Clai return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +// Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +// Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. @@ -2997,7 +2997,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidato // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c6870ddd810b3f0c78fe8c26d4cde70582b0e1033651ad0d4b083666233a715064736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index d815b9174..19f29e003 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -102,8 +102,8 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615a16380380615a1683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158c98061014d5f395ff3fe6080604052600436106101f1575f3560e01c80638280a25a11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b80638280a25a1461045257806393e245981461046657806398f3e2b414610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360305d621161015957806360305d62146103ab57806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d5780635297fae61461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506102146103a6366004614a43565b61107c565b3480156103b6575f80fd5b506103bf601481565b60405163ffffffff9091168152602001610257565b3480156103df575f80fd5b506103f36103ee366004614a7f565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b50610249603081565b348015610471575f80fd5b506102146104803660046149a4565b6113ca565b348015610490575f80fd5b5061021461049f366004614a43565b611495565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614aab565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157f483398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f8051602061581483398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614b0c565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b98565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614c18565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561069757610697614b23565b60058111156106a8576106a8614b23565b81526020016001820180546106bc90614c83565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c83565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614b23565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614dc6565b6040518263ffffffff1660e01b815260040161088b9190614df7565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614e09565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206158148339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614e09565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e34565b6001600160a01b031614610a12576109ed6060840160408501614e34565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e4f565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e4f565b8363ffffffff16818110610a5957610a59614e94565b9050602002810190610a6b9190614ea8565b610a7490614f13565b80516040519192505f916008880191610a8c91614f8e565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614df7565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f8e565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614e09565b90508086600801835f0151604051610b5b9190614f8e565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614b23565b021790555060208201516001820190610bf69082614fe3565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b9116856150b2565b8251604051919550610cac91614f8e565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d01906150c5565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150e7565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614df7565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614e09565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b9190615229565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614dc6565b90505f600282604051610e5f9190614f8e565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614e09565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614b23565b14610f4c578060405163170cc93360e21b815260040161063c9190614cb5565b6108cb8383612405565b5f805f805160206157f483398151915260030154610f7490846152b4565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157f48339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614b23565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061585483398151915255565b50565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156110c9576110c9614b23565b60038111156110da576110da614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614b23565b14611188578251604051633b0d540d60e21b815261063c91906004016152d3565b60048151600581111561119d5761119d614b23565b036111b3576111ab85612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d88a6122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614df7565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152ed565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff000000000000000019909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150e7565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b5f805160206157f48339815191525f6113e283611db9565b51905060048160058111156113f9576113f9614b23565b14611419578060405163170cc93360e21b815260040161063c9190614cb5565b5f8381526005830160205260409020546001600160a01b0316331461145f57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b61149d6128d7565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff1660038111156114ea576114ea614b23565b60038111156114fb576114fb614b23565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561157457611574614b23565b14611595578051604051633b0d540d60e21b815261063c91906004016152d3565b60046115a48260400151611db9565b5160058111156115b6576115b6614b23565b146116b5575f6115c5856122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016116049190614df7565b606060405180830381865af415801561161f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164391906152ed565b50915091508184604001511461166f5760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156116b157604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6116be83612d45565b50506116d660015f8051602061585483398151915255565b5050565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614df7565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b9190615322565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c83565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614b23565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061585483398151915255565b9392505050565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff16600381111561195057611950614b23565b600381111561196157611961614b23565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614b23565b141580156119fb57506003815160038111156119f8576119f8614b23565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152d3565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614dc6565b6040518263ffffffff1660e01b8152600401611b279190614df7565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614e09565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206158148339815191529190611bb590614c83565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614b23565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615350565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614e09565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061585483398151915255565b919050565b611dc16148f4565b5f8281525f80516020615874833981519152602052604090819020815160e0810190925280545f80516020615814833981519152929190829060ff166005811115611e0e57611e0e614b23565b6005811115611e1f57611e1f614b23565b8152602001600182018054611e3390614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c83565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020615814833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153da565b90815260200160405180910390205491505092915050565b5f8381525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f48339815191529284929091829060ff166003811115611fb157611fb1614b23565b6003811115611fc257611fc2614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614b23565b14612070578251604051633b0d540d60e21b815261063c91906004016152d3565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361143a565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153e9565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614b23565b0361224f5760028401546080840151612143916001600160401b0316906153e9565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd9190615409565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614b23565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614cb5565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f9190810190615429565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124779190810190615429565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614e09565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614df7565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd91906154b9565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157f4833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157f483398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361143a565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153e9565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614e09565b905080846008015f8a81526020019081526020015f205f8282546128c591906150b2565b90915550501515979650505050505050565b5f8051602061585483398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206158148339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614df7565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a89190615322565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614b23565b6005811115612a1157612a11614b23565b8152602001600182018054612a2590614c83565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c83565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614b23565b14158015612b285750600181516005811115612b2557612b25614b23565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614cb5565b600381516005811115612b5e57612b5e614b23565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f8e565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614b23565b021790555060208201516001820190612be49082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614b23565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b6116d66001600160a01b03831682613aa5565b60015f8051602061585483398151915255565b5f8181525f805160206158348339815191526020526040808220815160e0810190925280545f805160206157f483398151915293929190829060ff166003811115612d9257612d92614b23565b6003811115612da357612da3614b23565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153e9565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150e7565b612efa91906152b4565b915081866008015f8681526020019081526020015f205f828254612f1e91906150b2565b90915550612f2e905082846154dc565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157f483398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157f48339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614b23565b146131fe57805160405163170cc93360e21b815261063c9190600401614cb5565b5f82826080015161320f91906153e9565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154ef565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614b23565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f80516020615874833981519152602052604081206002015481905f8051602061581483398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614dc6565b6040518263ffffffff1660e01b815260040161358b9190614df7565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614e09565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157f483398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614b23565b148061367a575060048251600581111561367857613678614b23565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614b23565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614cb5565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614e09565b95945050505050565b6137c96148f4565b5f8281525f805160206158748339815191526020526040808220815160e0810190925280545f8051602061581483398151915293929190829060ff16600581111561381657613816614b23565b600581111561382757613827614b23565b815260200160018201805461383b90614c83565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c83565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614b23565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614cb5565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614b23565b0217905550602082015160018201906139b09082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061581483398151915242613b9b6060860160408701614a7f565b6001600160401b0316111580613bd55750613bb96202a300426150b2565b613bc96060860160408701614a7f565b6001600160401b031610155b15613c0f57613bea6060850160408601614a7f565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f606086018661551a565b614477565b613c34613c1f608086018661551a565b6030613c43602086018661552e565b905014613c7557613c57602085018561552e565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f848061552e565b90505f03613cac57613c91848061552e565b604051633e08a12560e11b815260040161063c929190615570565b5f60088201613cbb868061552e565b604051613cc99291906153da565b90815260200160405180910390205414613d0257613ce7848061552e565b60405163a41f772f60e01b815260040161063c929190615570565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a8061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b61552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a7f565b6001600160401b03168152602001613df560608b018b61551a565b613dfe90615583565b8152602001613e1060808b018b61551a565b613e1990615583565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e4791906156a5565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e88919081019061575c565b5f82815260068601602052604090209193509150613ea68282614fe3565b508160088401613eb6888061552e565b604051613ec49291906153da565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614df7565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614e09565b6040805160e081019091529091508060018152602001613f60898061552e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614b23565b0217905550602082015160018201906140089082614fe3565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a6888061552e565b6040516140b49291906153da565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a7f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a7f565b6141b160e0860160c0870161579f565b6141c2610100870160e088016157b8565b6101008701356141da61014089016101208a01614e34565b614609565b5f805160206158148339815191525f6001600160401b0380841690851611156142135761420c8385615409565b9050614220565b61421d8484615409565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b0316906150b2565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153e9565b6001600160401b03169052505b60608101516142d79060646154ef565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150e7565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d91906150b2565b9052506040810180516001600160401b038716919061436d9083906154dc565b9052506001840154604082015160649161439291600160401b90910460ff16906150e7565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206158748339815191526020526040812060020180545f80516020615814833981519152919060089061444c90600160401b90046001600160401b03166157d8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e4f565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e4f565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e4f565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e4f565b90508110156116d6576145466020830183614e4f565b6145516001846154dc565b81811061456057614560614e94565b90506020020160208101906145759190614e34565b6001600160a01b031661458b6020840184614e4f565b8381811061459b5761459b614e94565b90506020020160208101906145b09190614e34565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157f483398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f8051602061581483398151915290815560146147fa60608401604085016157b8565b60ff161180614819575061481460608301604084016157b8565b60ff16155b1561484d5761482e60608301604084016157b8565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d60608301604084016157b8565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a7f565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c83565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b5f8060408385031215614a54575f80fd5b614a5d83614956565b946020939093013593505050565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a8f575f80fd5b81356118fc81614a6b565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614abd575f80fd5b83356001600160401b03811115614ad2575f80fd5b840160a08187031215614ae3575f80fd5b9250614af160208501614a9a565b91506040840135614b0181614a6b565b809150509250925092565b5f6101408284031215614b1d575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b4757614b47614b23565b9052565b5f5b83811015614b65578181015183820152602001614b4d565b50505f910152565b5f8151808452614b84816020860160208601614b4b565b601f01601f19169290920160200192915050565b60208152614baa602082018351614b37565b5f602083015160e06040840152614bc5610100840182614b6d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c29575f80fd5b82356001600160401b0380821115614c3f575f80fd5b818501915085601f830112614c52575f80fd5b813581811115614c60575f80fd5b866020828501011115614c71575f80fd5b60209290920196919550909350505050565b600181811c90821680614c9757607f821691505b602082108103614b1d57634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b37565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cf957614cf9614cc3565b60405290565b604080519081016001600160401b0381118282101715614cf957614cf9614cc3565b604051601f8201601f191681016001600160401b0381118282101715614d4957614d49614cc3565b604052919050565b5f6001600160401b03821115614d6957614d69614cc3565b50601f01601f191660200190565b5f82601f830112614d86575f80fd5b8151614d99614d9482614d51565b614d21565b818152846020838601011115614dad575f80fd5b614dbe826020830160208701614b4b565b949350505050565b5f60208284031215614dd6575f80fd5b81516001600160401b03811115614deb575f80fd5b614dbe84828501614d77565b602081525f6118fc6020830184614b6d565b5f60208284031215614e19575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e44575f80fd5b81356118fc81614e20565b5f808335601e19843603018112614e64575f80fd5b8301803591506001600160401b03821115614e7d575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614ebc575f80fd5b9190910192915050565b5f82601f830112614ed5575f80fd5b8135614ee3614d9482614d51565b818152846020838601011115614ef7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f23575f80fd5b614f2b614cd7565b82356001600160401b0380821115614f41575f80fd5b614f4d36838701614ec6565b83526020850135915080821115614f62575f80fd5b50614f6f36828601614ec6565b6020830152506040830135614f8381614a6b565b604082015292915050565b5f8251614ebc818460208701614b4b565b601f82111561064557805f5260205f20601f840160051c81016020851015614fc45750805b601f840160051c820191505b81811015611b67575f8155600101614fd0565b81516001600160401b03811115614ffc57614ffc614cc3565b6150108161500a8454614c83565b84614f9f565b602080601f831160018114615043575f841561502c5750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b8281101561507157888601518255948401946001909101908401615052565b508582101561508e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa61509e565b5f63ffffffff8083168181036150dd576150dd61509e565b6001019392505050565b8082028115828204841417610faa57610faa61509e565b5f808335601e19843603018112615113575f80fd5b83016020810192503590506001600160401b03811115615131575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561521c57848303601f19018952813536889003605e190181126151a3575f80fd5b870160606151b182806150fe565b8287526151c1838801828461513f565b925050506151d1868301836150fe565b868303888801526151e383828461513f565b9250505060408083013592506151f883614a6b565b6001600160401b03929092169490910193909352978301979083019060010161517e565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561524d81614e20565b6001600160a01b031660608381019190915283013536849003601e19018112615274575f80fd5b83016020810190356001600160401b0381111561528f575f80fd5b8060051b36038213156152a0575f80fd5b6080808501526137b860a085018284615167565b5f826152ce57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152e7576152e7614b23565b91905290565b5f805f606084860312156152ff575f80fd5b83519250602084015161531181614a6b565b6040850151909250614b0181614a6b565b5f8060408385031215615333575f80fd5b82519150602083015161534581614949565b809150509250929050565b5f60208083525f845461536281614c83565b806020870152604060018084165f8114615383576001811461539f576153cc565b60ff19851660408a0152604084151560051b8a010195506153cc565b895f5260205f205f5b858110156153c35781548b82018601529083019088016153a8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c361509e565b6001600160401b038281168282160390808211156123c3576123c361509e565b5f806040838503121561543a575f80fd5b82516001600160401b0380821115615450575f80fd5b9084019060608287031215615463575f80fd5b61546b614cd7565b82518152602083015161547d81614e20565b6020820152604083015182811115615493575f80fd5b61549f88828601614d77565b604083015250809450505050602083015161534581614949565b5f80604083850312156154ca575f80fd5b82519150602083015161534581614a6b565b81810381811115610faa57610faa61509e565b6001600160401b038181168382160280821691908281146155125761551261509e565b505092915050565b5f8235603e19833603018112614ebc575f80fd5b5f808335601e19843603018112615543575f80fd5b8301803591506001600160401b0382111561555c575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614dbe60208301848661513f565b5f60408236031215615593575f80fd5b61559b614cff565b6155a483614956565b81526020808401356001600160401b03808211156155c0575f80fd5b9085019036601f8301126155d2575f80fd5b8135818111156155e4576155e4614cc3565b8060051b91506155f5848301614d21565b818152918301840191848101903684111561560e575f80fd5b938501935b83851015615638578435925061562883614e20565b8282529385019390850190615613565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b0316825293830193600192909201919083019061567c565b60208152815160208201525f602083015160e060408401526156cb610100840182614b6d565b90506040840151601f19808584030160608601526156e98383614b6d565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615719838361564a565b925060a08601519150808584030160c086015250615737828261564a565b91505060c084015161575460e08501826001600160401b03169052565b509392505050565b5f806040838503121561576d575f80fd5b8251915060208301516001600160401b03811115615789575f80fd5b61579585828601614d77565b9150509250929050565b5f602082840312156157af575f80fd5b6118fc82614a9a565b5f602082840312156157c8575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150dd576150dd61509e56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a264697066735822122000dc11d0ff59903cf09d18ad2de1ed503693ff3d1a2c42c47ae695f27ecb47f264736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516159ee3803806159ee83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158a18061014d5f395ff3fe6080604052600436106101f1575f3560e01c806380dd672f11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b806380dd672f146104525780638280a25a1461047157806393e2459814610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360ad77841161015957806360ad7784146103b557806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d57806360305d621461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506103a0601481565b60405163ffffffff9091168152602001610257565b3480156103c0575f80fd5b506102146103cf366004614a09565b61107c565b3480156103df575f80fd5b506103f36103ee366004614a57565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b5061021461046c366004614a09565b6113ca565b34801561047c575f80fd5b50610249603081565b348015610490575f80fd5b5061021461049f3660046149a4565b61160f565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614a83565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157cc83398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f805160206157ec83398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614ae4565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b70565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614bf0565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f8051602061584c8339815191526020526040808220815160e0810190925280545f805160206157ec83398151915293929190829060ff16600581111561069757610697614afb565b60058111156106a8576106a8614afb565b81526020016001820180546106bc90614c5b565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c5b565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614afb565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614d9e565b6040518263ffffffff1660e01b815260040161088b9190614dcf565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614de1565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206157ec8339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614de1565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e0c565b6001600160a01b031614610a12576109ed6060840160408501614e0c565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e27565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e27565b8363ffffffff16818110610a5957610a59614e6c565b9050602002810190610a6b9190614e80565b610a7490614eeb565b80516040519192505f916008880191610a8c91614f66565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614dcf565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f66565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614de1565b90508086600801835f0151604051610b5b9190614f66565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614afb565b021790555060208201516001820190610bf69082614fbb565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b91168561508a565b8251604051919550610cac91614f66565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d019061509d565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150bf565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614dcf565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614de1565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b9190615201565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614d9e565b90505f600282604051610e5f9190614f66565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614de1565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614afb565b14610f4c578060405163170cc93360e21b815260040161063c9190614c8d565b6108cb8383612405565b5f805f805160206157cc83398151915260030154610f74908461528c565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157cc8339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614afb565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061582c83398151915255565b50565b5f8281525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff1660038111156110c9576110c9614afb565b60038111156110da576110da614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614afb565b14611188578251604051633b0d540d60e21b815261063c91906004016152ab565b60048151600581111561119d5761119d614afb565b036111b3576111ab86612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d8896122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614dcf565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152c5565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150bf565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b6113d26128d7565b5f8281525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff16600381111561141f5761141f614afb565b600381111561143057611430614afb565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156114a9576114a9614afb565b146114ca578051604051633b0d540d60e21b815261063c91906004016152ab565b60046114d98260400151611db9565b5160058111156114eb576114eb614afb565b146115ea575f6114fa846122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016115399190614dcf565b606060405180830381865af4158015611554573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157891906152c5565b5091509150818460400151146115a45760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156115e657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6115f384612d45565b505061160b60015f8051602061582c83398151915255565b5050565b5f805160206157cc8339815191525f61162783611db9565b519050600481600581111561163e5761163e614afb565b1461165e578060405163170cc93360e21b815260040161063c9190614c8d565b5f8381526005830160205260409020546001600160a01b031633146116a457335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b5f805160206157ec8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614dcf565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b91906152fa565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c5b565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614afb565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061582c83398151915255565b9392505050565b5f8181525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff16600381111561195057611950614afb565b600381111561196157611961614afb565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614afb565b141580156119fb57506003815160038111156119f8576119f8614afb565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152ab565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614d9e565b6040518263ffffffff1660e01b8152600401611b279190614dcf565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614de1565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206157ec8339815191529190611bb590614c5b565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614afb565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615328565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614de1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061582c83398151915255565b919050565b611dc16148f4565b5f8281525f8051602061584c833981519152602052604090819020815160e0810190925280545f805160206157ec833981519152929190829060ff166005811115611e0e57611e0e614afb565b6005811115611e1f57611e1f614afb565b8152602001600182018054611e3390614c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c5b565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f805160206157ec833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153b2565b90815260200160405180910390205491505092915050565b5f8381525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc8339815191529284929091829060ff166003811115611fb157611fb1614afb565b6003811115611fc257611fc2614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614afb565b14612070578251604051633b0d540d60e21b815261063c91906004016152ab565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361167f565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153c1565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614afb565b0361224f5760028401546080840151612143916001600160401b0316906153c1565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd91906153e1565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614afb565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614c8d565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f9190810190615401565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124779190810190615401565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614de1565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614dcf565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd9190615491565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157cc833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157cc83398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361167f565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153c1565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614de1565b905080846008015f8a81526020019081526020015f205f8282546128c5919061508a565b90915550501515979650505050505050565b5f8051602061582c83398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206157ec8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614dcf565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a891906152fa565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614afb565b6005811115612a1157612a11614afb565b8152602001600182018054612a2590614c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c5b565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614afb565b14158015612b285750600181516005811115612b2557612b25614afb565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614c8d565b600381516005811115612b5e57612b5e614afb565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f66565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614afb565b021790555060208201516001820190612be49082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614afb565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b61160b6001600160a01b03831682613aa5565b60015f8051602061582c83398151915255565b5f8181525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff166003811115612d9257612d92614afb565b6003811115612da357612da3614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153c1565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150bf565b612efa919061528c565b915081866008015f8681526020019081526020015f205f828254612f1e919061508a565b90915550612f2e905082846154b4565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157cc83398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157cc8339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614afb565b146131fe57805160405163170cc93360e21b815261063c9190600401614c8d565b5f82826080015161320f91906153c1565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154c7565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614afb565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f8051602061584c833981519152602052604081206002015481905f805160206157ec83398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614d9e565b6040518263ffffffff1660e01b815260040161358b9190614dcf565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614de1565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157cc83398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614afb565b148061367a575060048251600581111561367857613678614afb565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614afb565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614c8d565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614de1565b95945050505050565b6137c96148f4565b5f8281525f8051602061584c8339815191526020526040808220815160e0810190925280545f805160206157ec83398151915293929190829060ff16600581111561381657613816614afb565b600581111561382757613827614afb565b815260200160018201805461383b90614c5b565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c5b565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614afb565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614afb565b0217905550602082015160018201906139b09082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f805160206157ec83398151915242613b9b6060860160408701614a57565b6001600160401b0316111580613bd55750613bb96202a3004261508a565b613bc96060860160408701614a57565b6001600160401b031610155b15613c0f57613bea6060850160408601614a57565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f60608601866154f2565b614477565b613c34613c1f60808601866154f2565b6030613c436020860186615506565b905014613c7557613c576020850185615506565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f8480615506565b90505f03613cac57613c918480615506565b604051633e08a12560e11b815260040161063c929190615548565b5f60088201613cbb8680615506565b604051613cc99291906153b2565b90815260200160405180910390205414613d0257613ce78480615506565b60405163a41f772f60e01b815260040161063c929190615548565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a80615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a57565b6001600160401b03168152602001613df560608b018b6154f2565b613dfe9061555b565b8152602001613e1060808b018b6154f2565b613e199061555b565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e47919061567d565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e889190810190615734565b5f82815260068601602052604090209193509150613ea68282614fbb565b508160088401613eb68880615506565b604051613ec49291906153b2565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614dcf565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614de1565b6040805160e081019091529091508060018152602001613f608980615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614afb565b0217905550602082015160018201906140089082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a68880615506565b6040516140b49291906153b2565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a57565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a57565b6141b160e0860160c08701615777565b6141c2610100870160e08801615790565b6101008701356141da61014089016101208a01614e0c565b614609565b5f805160206157ec8339815191525f6001600160401b0380841690851611156142135761420c83856153e1565b9050614220565b61421d84846153e1565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b03169061508a565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153c1565b6001600160401b03169052505b60608101516142d79060646154c7565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150bf565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d919061508a565b9052506040810180516001600160401b038716919061436d9083906154b4565b9052506001840154604082015160649161439291600160401b90910460ff16906150bf565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f8051602061584c8339815191526020526040812060020180545f805160206157ec833981519152919060089061444c90600160401b90046001600160401b03166157b0565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e27565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e27565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e27565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e27565b905081101561160b576145466020830183614e27565b6145516001846154b4565b81811061456057614560614e6c565b90506020020160208101906145759190614e0c565b6001600160a01b031661458b6020840184614e27565b8381811061459b5761459b614e6c565b90506020020160208101906145b09190614e0c565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157cc83398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f805160206157ec83398151915290815560146147fa6060840160408501615790565b60ff16118061481957506148146060830160408401615790565b60ff16155b1561484d5761482e6060830160408401615790565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d6060830160408401615790565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a57565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c5b565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a67575f80fd5b81356118fc81614a43565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614a95575f80fd5b83356001600160401b03811115614aaa575f80fd5b840160a08187031215614abb575f80fd5b9250614ac960208501614a72565b91506040840135614ad981614a43565b809150509250925092565b5f6101408284031215614af5575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b1f57614b1f614afb565b9052565b5f5b83811015614b3d578181015183820152602001614b25565b50505f910152565b5f8151808452614b5c816020860160208601614b23565b601f01601f19169290920160200192915050565b60208152614b82602082018351614b0f565b5f602083015160e06040840152614b9d610100840182614b45565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c01575f80fd5b82356001600160401b0380821115614c17575f80fd5b818501915085601f830112614c2a575f80fd5b813581811115614c38575f80fd5b866020828501011115614c49575f80fd5b60209290920196919550909350505050565b600181811c90821680614c6f57607f821691505b602082108103614af557634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b0f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cd157614cd1614c9b565b60405290565b604080519081016001600160401b0381118282101715614cd157614cd1614c9b565b604051601f8201601f191681016001600160401b0381118282101715614d2157614d21614c9b565b604052919050565b5f6001600160401b03821115614d4157614d41614c9b565b50601f01601f191660200190565b5f82601f830112614d5e575f80fd5b8151614d71614d6c82614d29565b614cf9565b818152846020838601011115614d85575f80fd5b614d96826020830160208701614b23565b949350505050565b5f60208284031215614dae575f80fd5b81516001600160401b03811115614dc3575f80fd5b614d9684828501614d4f565b602081525f6118fc6020830184614b45565b5f60208284031215614df1575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e1c575f80fd5b81356118fc81614df8565b5f808335601e19843603018112614e3c575f80fd5b8301803591506001600160401b03821115614e55575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614e94575f80fd5b9190910192915050565b5f82601f830112614ead575f80fd5b8135614ebb614d6c82614d29565b818152846020838601011115614ecf575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614efb575f80fd5b614f03614caf565b82356001600160401b0380821115614f19575f80fd5b614f2536838701614e9e565b83526020850135915080821115614f3a575f80fd5b50614f4736828601614e9e565b6020830152506040830135614f5b81614a43565b604082015292915050565b5f8251614e94818460208701614b23565b601f82111561064557805f5260205f20601f840160051c81016020851015614f9c5750805b601f840160051c820191505b81811015611b67575f8155600101614fa8565b81516001600160401b03811115614fd457614fd4614c9b565b614fe881614fe28454614c5b565b84614f77565b602080601f83116001811461501b575f84156150045750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b828110156150495788860151825594840194600190910190840161502a565b508582101561506657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa615076565b5f63ffffffff8083168181036150b5576150b5615076565b6001019392505050565b8082028115828204841417610faa57610faa615076565b5f808335601e198436030181126150eb575f80fd5b83016020810192503590506001600160401b03811115615109575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156151f457848303601f19018952813536889003605e1901811261517b575f80fd5b8701606061518982806150d6565b8287526151998388018284615117565b925050506151a9868301836150d6565b868303888801526151bb838284615117565b9250505060408083013592506151d083614a43565b6001600160401b039290921694909101939093529783019790830190600101615156565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561522581614df8565b6001600160a01b031660608381019190915283013536849003601e1901811261524c575f80fd5b83016020810190356001600160401b03811115615267575f80fd5b8060051b3603821315615278575f80fd5b6080808501526137b860a08501828461513f565b5f826152a657634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152bf576152bf614afb565b91905290565b5f805f606084860312156152d7575f80fd5b8351925060208401516152e981614a43565b6040850151909250614ad981614a43565b5f806040838503121561530b575f80fd5b82519150602083015161531d81614949565b809150509250929050565b5f60208083525f845461533a81614c5b565b806020870152604060018084165f811461535b5760018114615377576153a4565b60ff19851660408a0152604084151560051b8a010195506153a4565b895f5260205f205f5b8581101561539b5781548b8201860152908301908801615380565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c3615076565b6001600160401b038281168282160390808211156123c3576123c3615076565b5f8060408385031215615412575f80fd5b82516001600160401b0380821115615428575f80fd5b908401906060828703121561543b575f80fd5b615443614caf565b82518152602083015161545581614df8565b602082015260408301518281111561546b575f80fd5b61547788828601614d4f565b604083015250809450505050602083015161531d81614949565b5f80604083850312156154a2575f80fd5b82519150602083015161531d81614a43565b81810381811115610faa57610faa615076565b6001600160401b038181168382160280821691908281146154ea576154ea615076565b505092915050565b5f8235603e19833603018112614e94575f80fd5b5f808335601e1984360301811261551b575f80fd5b8301803591506001600160401b03821115615534575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614d96602083018486615117565b5f6040823603121561556b575f80fd5b615573614cd7565b61557c83614956565b81526020808401356001600160401b0380821115615598575f80fd5b9085019036601f8301126155aa575f80fd5b8135818111156155bc576155bc614c9b565b8060051b91506155cd848301614cf9565b81815291830184019184810190368411156155e6575f80fd5b938501935b83851015615610578435925061560083614df8565b82825293850193908501906155eb565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b03168252938301936001929092019190830190615654565b60208152815160208201525f602083015160e060408401526156a3610100840182614b45565b90506040840151601f19808584030160608601526156c18383614b45565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526156f18383615622565b925060a08601519150808584030160c08601525061570f8282615622565b91505060c084015161572c60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615745575f80fd5b8251915060208301516001600160401b03811115615761575f80fd5b61576d85828601614d4f565b9150509250929050565b5f60208284031215615787575f80fd5b6118fc82614a72565b5f602082840312156157a0575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150b5576150b561507656fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212209f3cab43aa8ccbdbcd55badf2a7bac018541e43a6b4bc1bf10bc573a1afbd60e64736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -824,46 +824,46 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Cl return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", messageIndex, delegationID) +// Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) } -// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x5297fae6. +// CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // -// Solidity: function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", messageIndex, delegationID) +// Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) } -// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x98f3e2b4. +// CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // -// Solidity: function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndDelegation(messageIndex uint32, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, messageIndex, delegationID) +// Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. @@ -2997,7 +2997,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValida // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c6870ddd810b3f0c78fe8c26d4cde70582b0e1033651ad0d4b083666233a715064736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 681eea208..15ca8ac79 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -2032,7 +2032,7 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpd // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterSubnetValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"}],\"name\":\"packSubnetConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterSubnetValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c6870ddd810b3f0c78fe8c26d4cde70582b0e1033651ad0d4b083666233a715064736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063862bfa6311610079578063862bfa63146101d75780639de23d40146101ea578063a523377014610222578063e047b28314610242578063e1d68f3014610263578063fa1f8dfb14610276575f80fd5b8063088c2463146100b55780631e6d9789146100ea5780631fd979c71461010b5780632e43ceb5146101525780638545c16a1461017a575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283526001600160401b039091166020830152015b60405180910390f35b6100fd6100f8366004611904565b61047f565b6040519081526020016100e1565b61014561011936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100e191906119a1565b610165610160366004611904565b61060c565b604080519283529015156020830152016100e1565b6101456101883660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101456101e5366004611a0e565b6107c8565b6101fd6101f8366004611904565b6109a9565b604080519384526001600160401b0392831660208501529116908201526060016100e1565b610235610230366004611904565b610bff565b6040516100e19190611aaa565b610255610250366004611c45565b61154a565b6040516100e1929190611d41565b610145610271366004611d59565b611737565b610145610284366004611d83565b611781565b5f808251602e146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff8116156103be57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610413576103d581601f611dc9565b6103e0906008611ddc565b876103ec836006611e07565b815181106103fc576103fc611df3565b016020015160f81c901b91909117906001016103c1565b505f805b60088110156104725761042b816007611dc9565b610436906008611ddc565b6001600160401b03168861044b836026611e07565b8151811061045b5761045b611df3565b016020015160f81c901b9190911790600101610417565b5090969095509350505050565b5f81516026146104b457815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b6002811015610503576104cb816001611dc9565b6104d6906008611ddc565b61ffff168482815181106104ec576104ec611df3565b016020015160f81c901b91909117906001016104b7565b5061ffff81161561052d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561058857610544816003611dc9565b61054f906008611ddc565b63ffffffff1685610561836002611e07565b8151811061057157610571611df3565b016020015160f81c901b9190911790600101610530565b5063ffffffff8116156105ae57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610603576105c581601f611dc9565b6105d0906008611ddc565b866105dc836006611e07565b815181106105ec576105ec611df3565b016020015160f81c901b91909117906001016105b1565b50949350505050565b5f80825160271461064257825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016102bb565b5f805b600281101561069157610659816001611dc9565b610664906008611ddc565b61ffff1685828151811061067a5761067a611df3565b016020015160f81c901b9190911790600101610645565b5061ffff8116156106bb5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610716576106d2816003611dc9565b6106dd906008611ddc565b63ffffffff16866106ef836002611e07565b815181106106ff576106ff611df3565b016020015160f81c901b91909117906001016106be565b5063ffffffff811660021461073e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107935761075581601f611dc9565b610760906008611ddc565b8761076c836006611e07565b8151811061077c5761077c611df3565b016020015160f81c901b9190911790600101610741565b505f866026815181106107a8576107a8611df3565b016020015191976001600160f81b03199092161515965090945050505050565b60605f808335602085013560146107e487870160408901611e1a565b6107f16060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6108776060850185611e33565b90508110156109a2578161088e6060860186611e33565b8381811061089e5761089e611df3565b90506020028101906108b09190611e7f565b6108ba9080611e9d565b90506108c96060870187611e33565b848181106108d9576108d9611df3565b90506020028101906108eb9190611e7f565b6108f59080611e9d565b6109026060890189611e33565b8681811061091257610912611df3565b90506020028101906109249190611e7f565b610932906020810190611e9d565b61093f60608b018b611e33565b8881811061094f5761094f611df3565b90506020028101906109619190611e7f565b610972906060810190604001611edf565b6040516020016109889796959493929190611ef8565b60408051601f19818403018152919052915060010161086a565b5092915050565b5f805f83516036146109e057835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b6002811015610a2f576109f7816001611dc9565b610a02906008611ddc565b61ffff16868281518110610a1857610a18611df3565b016020015160f81c901b91909117906001016109e3565b5061ffff811615610a595760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b6004811015610ab457610a70816003611dc9565b610a7b906008611ddc565b63ffffffff1687610a8d836002611e07565b81518110610a9d57610a9d611df3565b016020015160f81c901b9190911790600101610a5c565b5063ffffffff8116600314610adc57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610b3157610af381601f611dc9565b610afe906008611ddc565b88610b0a836006611e07565b81518110610b1a57610b1a611df3565b016020015160f81c901b9190911790600101610adf565b505f805b6008811015610b9057610b49816007611dc9565b610b54906008611ddc565b6001600160401b031689610b69836026611e07565b81518110610b7957610b79611df3565b016020015160f81c901b9190911790600101610b35565b505f805b6008811015610bef57610ba8816007611dc9565b610bb3906008611ddc565b6001600160401b03168a610bc883602e611e07565b81518110610bd857610bd8611df3565b016020015160f81c901b9190911790600101610b94565b5091989097509095509350505050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b5f60608260400151516030146115735760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986115b4988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b84608001516020015151811015611626578185608001516020015182815181106115f3576115f3611df3565b602002602001015160405160200161160c929190612060565b60408051601f1981840301815291905291506001016115c7565b5060a0840151805160209182015151604051611646938593929101612096565b60405160208183030381529060405290505f5b8460a0015160200151518110156116b857818560a0015160200151828151811061168557611685611df3565b602002602001015160405160200161169e929190612060565b60408051601f198184030181529190529150600101611659565b5060c08401516040516116cf9183916020016120d1565b60405160208183030381529060405290506002816040516116f09190612102565b602060405180830381855afa15801561170b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061172e9190612113565b94909350915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e015b60405160208183030381529060405290505b92915050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b6046820152606090604701611769565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611b87575f80fd5b611b8f61181f565b9050813563ffffffff81168114611ba4575f80fd5b81526020828101356001600160401b0380821115611bc0575f80fd5b818501915085601f830112611bd3575f80fd5b813581811115611be557611be561180b565b8060051b9150611bf6848301611869565b8181529183018401918481019088841115611c0f575f80fd5b938501935b83851015611c3457611c2585611b61565b82529385019390850190611c14565b808688015250505050505092915050565b5f60208284031215611c55575f80fd5b81356001600160401b0380821115611c6b575f80fd5b9083019060e08286031215611c7e575f80fd5b611c86611847565b82358152602083013582811115611c9b575f80fd5b611ca787828601611899565b602083015250604083013582811115611cbe575f80fd5b611cca87828601611899565b604083015250611cdc606084016119ba565b6060820152608083013582811115611cf2575f80fd5b611cfe87828601611b77565b60808301525060a083013582811115611d15575f80fd5b611d2187828601611b77565b60a083015250611d3360c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b5f8060408385031215611d6a575f80fd5b82359150611d7a602084016119ba565b90509250929050565b5f8060408385031215611d94575f80fd5b8235915060208301358015158114611daa575f80fd5b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561177b5761177b611db5565b808202811582820484141761177b5761177b611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611db5565b5f60208284031215611e2a575f80fd5b6119b382611b61565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff8181168382160190808211156109a2576109a2611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212206ed6e354650c998e730fd44bea569aaada10f9bcd68ae307dc66548473b972a364736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index eacff333a..6c5349ebc 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -463,7 +463,7 @@ abstract contract PoSValidatorManager is /** * @notice See {IPoSValidatorManager-completeDelegatorRegistration}. */ - function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) external { + function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) external { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; @@ -678,8 +678,8 @@ abstract contract PoSValidatorManager is * @notice See {IPoSValidatorManager-completeEndDelegation}. */ function completeEndDelegation( - uint32 messageIndex, - bytes32 delegationID + bytes32 delegationID, + uint32 messageIndex ) external nonReentrant { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; diff --git a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol index fc0a77d6c..3a7597f5e 100644 --- a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol @@ -164,10 +164,10 @@ interface IPoSValidatorManager is IValidatorManager { * the delegation is considered active after this function is completed. * Note: Only the specified delegation will be marked as registered, even if the validator weight update * message implicitly includes multiple weight changes. - * @param messageIndex The index of the Warp message to be received providing the acknowledgement. * @param delegationID The ID of the delegation being registered. + * @param messageIndex The index of the Warp message to be received providing the acknowledgement. */ - function completeDelegatorRegistration(uint32 messageIndex, bytes32 delegationID) external; + function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) external; /** * @notice Begins the process of removing a delegator from a validation period, and reverts if the delegation is not eligible for rewards. @@ -225,10 +225,10 @@ interface IPoSValidatorManager is IValidatorManager { * weight change pertaining to the delegation ending is included in any subsequent validator weight update messages. * Note: Only the specified delegation will be marked as completed, even if the validator weight update * message implicitly includes multiple weight changes. - * @param messageIndex The index of the Warp message to be received providing the acknowledgement. * @param delegationID The ID of the delegation being removed. + * @param messageIndex The index of the Warp message to be received providing the acknowledgement. */ - function completeEndDelegation(uint32 messageIndex, bytes32 delegationID) external; + function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) external; /** * @notice Withdraws the delegation fees from completed delegations to the owner of the validator. diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index 6cfb2630c..bf1782fb8 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -341,7 +341,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.warp(DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP); vm.expectRevert(abi.encodeWithSelector(PoSValidatorManager.InvalidNonce.selector, nonce)); - posValidatorManager.completeDelegatorRegistration(0, delegationID2); + posValidatorManager.completeDelegatorRegistration(delegationID2, 0); } function testCompleteDelegatorRegistrationImplicitNonce() public { @@ -814,7 +814,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { // warp to right after validator ended vm.warp(DEFAULT_COMPLETION_TIMESTAMP + 1); - posValidatorManager.completeDelegatorRegistration(0, delegationID); + posValidatorManager.completeDelegatorRegistration(delegationID, 0); assertEq( _getStakeAssetBalance(DEFAULT_DELEGATOR_ADDRESS), @@ -901,7 +901,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _expectStakeUnlock(DEFAULT_DELEGATOR_ADDRESS, _weightToValue(DEFAULT_DELEGATOR_WEIGHT)); _expectRewardIssuance(DEFAULT_DELEGATOR_ADDRESS, expectedDelegatorReward); - posValidatorManager.completeEndDelegation(0, delegationID); + posValidatorManager.completeEndDelegation(delegationID, 0); assertEq( _getStakeAssetBalance(DEFAULT_DELEGATOR_ADDRESS), @@ -967,7 +967,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _mockGetPChainWarpMessage(setValidatorWeightPayload, true); vm.expectRevert(abi.encodeWithSelector(PoSValidatorManager.InvalidNonce.selector, nonce)); - posValidatorManager.completeEndDelegation(0, delegationID2); + posValidatorManager.completeEndDelegation(delegationID2, 0); } function testCompleteEndDelegationImplicitNonce() public { @@ -1211,245 +1211,6 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _forceInitializeEndValidation(validationID, true); } - function testClaimValidationReward() public { - bytes32 validationID = _registerDefaultValidator(); - uint64 uptimePercentage = 80; - uint64 claimTime = DEFAULT_COMPLETION_TIMESTAMP; - uint256 expectedReward = rewardCalculator.calculateReward({ - stakeAmount: _weightToValue(DEFAULT_WEIGHT), - validatorStartTime: 0, - stakingStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - stakingEndTime: claimTime, - uptimeSeconds: 0, - initialSupply: 0, - endSupply: 0 - }); - - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, (claimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 - ); - _mockGetUptimeWarpMessage(uptimeMsg, true); - _mockGetBlockchainID(); - - vm.warp(claimTime); - _expectValidationRewardsIssuance(validationID, address(this), expectedReward); - posValidatorManager.claimValidationRewards(validationID, 0); - } - - function testClaimSubsequentValidationReward() public { - bytes32 validationID = _registerDefaultValidator(); - uint64 uptimePercentage = 80; - uint64 firstClaimTime = DEFAULT_COMPLETION_TIMESTAMP; - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, (firstClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 - ); - _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - claimTime: firstClaimTime, - lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, - success: true - }); - - // Claim rewards again - uint64 secondClaimTime = firstClaimTime + 1000; - uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, - (secondClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 - ); - _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - claimTime: secondClaimTime, - lastClaimTime: firstClaimTime, - success: true - }); - } - - function testClaimValidationRewardStaleUptime() public { - uint64 validationStartTime = 0; - bytes32 validationID = _registerValidator({ - nodeID: DEFAULT_NODE_ID, - subnetID: DEFAULT_SUBNET_ID, - weight: DEFAULT_WEIGHT, - registrationExpiry: DEFAULT_EXPIRY, - blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, - registrationTimestamp: validationStartTime - }); - uint64 uptimePercentage = 80; - uint64 firstClaimTime = DEFAULT_MINIMUM_VALIDATION_DURATION + 1; // 24 hours - - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, ((firstClaimTime - validationStartTime) * uptimePercentage / 100) + 1 - ); - _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: validationStartTime, - claimTime: firstClaimTime, - lastClaimTime: validationStartTime, - success: true - }); - - // Attempt to claim rewards again, but by submitting the same uptime - uint64 secondClaimTime = firstClaimTime + 5 hours; - _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: validationStartTime, - claimTime: secondClaimTime, - lastClaimTime: firstClaimTime, - success: false - }); - } - - function testClaimValidationRewardInsufficientUptime() public { - bytes32 validationID = _registerDefaultValidator(); - uint64 uptimePercentage = 79; - - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, - (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 - ); - _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - claimTime: DEFAULT_COMPLETION_TIMESTAMP, - lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, - success: false - }); - } - - function testClaimValidationRewardWithDelegation() public { - bytes32 validationID = _registerDefaultValidator(); - bytes32 delegationID = _registerDefaultDelegator(validationID); - - // Claim validator rewards - uint64 uptimePercentage = 80; - uint64 claimTime = DEFAULT_COMPLETION_TIMESTAMP; - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, (claimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 - ); - - _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - claimTime: claimTime, - lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, - success: true - }); - - // End the delegation and claim rewards - _initializeAndCompleteEndDelegationWithChecks(validationID, delegationID); - } - - function testEndValidationPreviouslyClaimedReward() public { - bytes32 validationID = _registerDefaultValidator(); - uint64 uptimePercentage = 80; - uint64 firstClaimTime = DEFAULT_COMPLETION_TIMESTAMP; - - bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, (firstClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 - ); - uint256 firstExpectedReward = _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - claimTime: firstClaimTime, - lastClaimTime: DEFAULT_REGISTRATION_TIMESTAMP, - success: true - }); - - // Claim rewards again - uint64 secondClaimTime = firstClaimTime + 5 hours; - uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, - (secondClaimTime - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 - ); - uint256 secondExpectedReward = _claimRewards({ - validationID: validationID, - uptimeMsg: uptimeMsg, - validationStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - claimTime: secondClaimTime, - lastClaimTime: firstClaimTime, - success: true - }); - - // Try to end the validation with a stale uptime - uint64 thirdClaimTime = secondClaimTime + 5 hours; - bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); - vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.InvalidStakeAmount.selector, 1e11) - ); - _initializeEndValidation({ - validationID: validationID, - completionTimestamp: thirdClaimTime, - setWeightMessage: setValidatorWeightPayload, - includeUptime: false, - uptimeMessage: uptimeMsg, - force: false - }); - - // Try again with the correct uptime - uptimeMsg = ValidatorMessages.packValidationUptimeMessage( - validationID, thirdClaimTime - DEFAULT_REGISTRATION_TIMESTAMP - ); - _initializeEndValidation({ - validationID: validationID, - completionTimestamp: thirdClaimTime, - setWeightMessage: setValidatorWeightPayload, - includeUptime: true, - uptimeMessage: uptimeMsg, - force: false - }); - - uint256 thirdExpectedReward = rewardCalculator.calculateReward({ - stakeAmount: _weightToValue(DEFAULT_WEIGHT), - validatorStartTime: 0, - stakingStartTime: secondClaimTime, - stakingEndTime: thirdClaimTime, - uptimeSeconds: 0, - initialSupply: 0, - endSupply: 0 - }); - - _completeEndValidationWithChecks({ - validationID: validationID, - validatorOwner: address(this), - expectedReward: thirdExpectedReward, - validatorWeight: DEFAULT_WEIGHT - }); - - // Confirm the pro-rated rewards match the total expected reward - uint256 totalExpectedReward = rewardCalculator.calculateReward({ - stakeAmount: _weightToValue(DEFAULT_WEIGHT), - validatorStartTime: 0, - stakingStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - stakingEndTime: thirdClaimTime, - uptimeSeconds: 0, - initialSupply: 0, - endSupply: 0 - }); - // Off-by one errors are possible due to integer rounding - if (totalExpectedReward > firstExpectedReward + secondExpectedReward + thirdExpectedReward) - { - assertTrue( - totalExpectedReward - - (firstExpectedReward + secondExpectedReward + thirdExpectedReward) <= 1 - ); - } else { - assertTrue( - (firstExpectedReward + secondExpectedReward + thirdExpectedReward) - - totalExpectedReward <= 1 - ); - } - } - function testValueToWeightTruncated() public { // default weightToValueFactor is 1e12 vm.expectRevert( @@ -1561,7 +1322,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _mockGetPChainWarpMessage(setValidatorWeightPayload, true); vm.warp(completeRegistrationTimestamp); - posValidatorManager.completeDelegatorRegistration(0, delegationID); + posValidatorManager.completeDelegatorRegistration(delegationID, 0); } function _setUpCompleteDelegatorRegistrationWithChecks( @@ -1871,9 +1632,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { validatorStartTime: 0, stakingStartTime: DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, stakingEndTime: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, - uptimeSeconds: 0, - initialSupply: 0, - endSupply: 0 + uptimeSeconds: 0 }); _completeEndDelegationWithChecks({ @@ -1889,41 +1648,6 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); } - function _claimRewards( - bytes32 validationID, - bytes memory uptimeMsg, - uint64 validationStartTime, - uint64 claimTime, - uint64 lastClaimTime, - bool success - ) internal returns (uint256) { - uint256 expectedReward; - if (success) { - expectedReward = rewardCalculator.calculateReward({ - stakeAmount: _weightToValue(DEFAULT_WEIGHT), - validatorStartTime: validationStartTime, - stakingStartTime: lastClaimTime, - stakingEndTime: claimTime, - uptimeSeconds: 0, - initialSupply: 0, - endSupply: 0 - }); - _expectValidationRewardsIssuance(validationID, address(this), expectedReward); - } else { - vm.expectRevert( - abi.encodeWithSelector( - PoSValidatorManager.ValidatorIneligibleForRewards.selector, validationID - ) - ); - } - - _mockGetUptimeWarpMessage(uptimeMsg, true); - _mockGetBlockchainID(); - vm.warp(claimTime); - posValidatorManager.claimValidationRewards(validationID, 0); - return expectedReward; - } - function _getStakeAssetBalance(address account) internal virtual returns (uint256); function _expectStakeUnlock(address account, uint256 amount) internal virtual; function _expectRewardIssuance(address account, uint256 amount) internal virtual; diff --git a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol index 847028324..41b99891a 100644 --- a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol @@ -50,6 +50,7 @@ abstract contract ValidatorManagerTest is Test { uint8 public constant DEFAULT_MAXIMUM_HOURLY_CHURN = 0; uint64 public constant DEFAULT_REGISTRATION_TIMESTAMP = 1000; uint256 public constant DEFAULT_STARTING_TOTAL_WEIGHT = 1e10 + DEFAULT_WEIGHT; + uint64 public constant DEFAULT_MINIMUM_VALIDATION_DURATION = 24 hours; uint64 public constant DEFAULT_COMPLETION_TIMESTAMP = 100_000; // solhint-disable-next-line var-name-mixedcase PChainOwner public DEFAULT_P_CHAIN_OWNER; From 6e7208163408e6b3feafd9c6160aea8a580beaed Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 24 Oct 2024 17:04:36 -0500 Subject: [PATCH 19/43] reuse solidity version --- .github/workflows/abi_bindings_checker.yml | 3 ++- scripts/abi_bindings.sh | 13 +++++++++++++ scripts/versions.sh | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/abi_bindings_checker.yml b/.github/workflows/abi_bindings_checker.yml index d59b9b7bd..99604edb6 100644 --- a/.github/workflows/abi_bindings_checker.yml +++ b/.github/workflows/abi_bindings_checker.yml @@ -29,7 +29,8 @@ jobs: - name: Install solc run: | - wget https://github.com/ethereum/solidity/releases/download/v0.8.25/solc-static-linux + source ./scripts/versions.sh + wget https://github.com/ethereum/solidity/releases/download/v$SOLIDITY_VERSION/solc-static-linux chmod +x solc-static-linux sudo mv solc-static-linux /usr/local/bin/solc diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index e9ad7e6ac..2bc52df83 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -52,6 +52,18 @@ fi if ! command -v solc &> /dev/null; then echo "solc not found. See https://docs.soliditylang.org/en/latest/installing-solidity.html for installation instructions" && exit 1 fi + +# Get the version from solc output +solc_version_output=$(solc --version 2>&1) + +# Extract the semver version from the output +extracted_version=$(solc --version 2>&1 | awk '/Version:/ {print $2}' | awk -F'+' '{print $1}') + +# Check if the extracted version matches the expected version +if ! [[ "$extracted_version" == "$SOLIDITY_VERSION" ]]; then + echo "Expected solc version $SOLIDITY_VERSION, but found $extracted_version. Please install the correct version." && exit 1 +fi +exit 0 echo "Building subnet-evm abigen" go install github.com/ava-labs/subnet-evm/cmd/abigen@${SUBNET_EVM_VERSION} @@ -64,6 +76,7 @@ function convertToLower() { fi } +# Removes a matching string from a comma-separated list remove_matching_string() { input_list="$1" match="$2" diff --git a/scripts/versions.sh b/scripts/versions.sh index efe3fb248..0470c27da 100755 --- a/scripts/versions.sh +++ b/scripts/versions.sh @@ -40,3 +40,6 @@ SUBNET_EVM_VERSION=${SUBNET_EVM_VERSION:-$(extract_commit "$(getDepVersion githu # Set golangci-lint version GOLANGCI_LINT_VERSION=${GOLANGCI_LINT_VERSION:-'v1.60'} + +# Extract the Solidity version from foundry.toml +SOLIDITY_VERSION=$(awk -F"'" '/^solc_version/ {print $2}' $TELEPORTER_PATH/foundry.toml) From c937cd528c478732b01054c46fc1a732c7cbcc8b Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 24 Oct 2024 17:07:22 -0500 Subject: [PATCH 20/43] reuse evm version --- scripts/abi_bindings.sh | 3 +-- scripts/versions.sh | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 2bc52df83..eb9bbcb19 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -63,7 +63,6 @@ extracted_version=$(solc --version 2>&1 | awk '/Version:/ {print $2}' | awk -F'+ if ! [[ "$extracted_version" == "$SOLIDITY_VERSION" ]]; then echo "Expected solc version $SOLIDITY_VERSION, but found $extracted_version. Please install the correct version." && exit 1 fi -exit 0 echo "Building subnet-evm abigen" go install github.com/ava-labs/subnet-evm/cmd/abigen@${SUBNET_EVM_VERSION} @@ -114,7 +113,7 @@ function generate_bindings() { cwd=$(pwd) cd $TELEPORTER_PATH - solc --optimize --evm-version shanghai --combined-json abi,bin,metadata,ast,devdoc,userdoc --pretty-json $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $combined_json + solc --optimize --evm-version $EVM_VERSION --combined-json abi,bin,metadata,ast,devdoc,userdoc --pretty-json $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $combined_json cd $cwd # construct the exclude list diff --git a/scripts/versions.sh b/scripts/versions.sh index 0470c27da..b34659f58 100755 --- a/scripts/versions.sh +++ b/scripts/versions.sh @@ -43,3 +43,4 @@ GOLANGCI_LINT_VERSION=${GOLANGCI_LINT_VERSION:-'v1.60'} # Extract the Solidity version from foundry.toml SOLIDITY_VERSION=$(awk -F"'" '/^solc_version/ {print $2}' $TELEPORTER_PATH/foundry.toml) +EVM_VERSION=$(awk -F"'" '/^evm_version/ {print $2}' $TELEPORTER_PATH/foundry.toml) From 1f46968d774ad4378d5e44ce97b10c295057f22f Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 24 Oct 2024 18:58:24 -0500 Subject: [PATCH 21/43] default optimizer runs --- scripts/local/e2e_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/local/e2e_test.sh b/scripts/local/e2e_test.sh index 08b3ae473..68b910fe6 100755 --- a/scripts/local/e2e_test.sh +++ b/scripts/local/e2e_test.sh @@ -76,7 +76,7 @@ export AVALANCHEGO_BUILD_PATH=$BASEDIR/avalanchego cd $TELEPORTER_PATH if command -v forge &> /dev/null; then - forge build --skip test --optimizer-runs 100 + forge build --skip test else echo "Forge command not found, attempting to use from $HOME" $HOME/.foundry/bin/forge build From c15d35f5a746864a9ef843d5fd13f63c85c13c5d Mon Sep 17 00:00:00 2001 From: meaghanfitzgerald Date: Tue, 29 Oct 2024 14:45:22 -0400 Subject: [PATCH 22/43] update language based on acp-77 updates --- contracts/validator-manager/README.md | 53 ++++++++++++++++----------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index 18e5d5e4e..50246bc2a 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -3,7 +3,7 @@ > [!CAUTION] > The contracts in this directory are still under active development, are unaudited, and should not be used in production. -The contracts in this directory define the Validator Manager used to manage Subnet-only Validators, as defined in [ACP-77](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets). `ValidatorManager.sol` is the top-level abstract contract that provides the basic functionality. The other contracts are related as follows: +The contracts in this directory define the Validator Manager used to manage Avalanche L1 validators, as defined in [ACP-77](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets). `ValidatorManager.sol` is the top-level abstract contract that provides the basic functionality. The other contracts are related as follows: ```mermaid classDiagram @@ -11,7 +11,7 @@ class ValidatorManager { initializeValidatorSet() completeValidatorRegistration() completeEndValidation() - + } <> ValidatorManager class PoSValidatorManager { @@ -43,24 +43,28 @@ PoSValidatorManager <|-- NativeTokenStakingManager ## Deploying Three concrete `ValidatorManager` contracts are provided - `PoAValidatorManager`, `NativeTokenStakingManager`, and `ERC20TokenStakingManager`. `NativeTokenStakingManager`, and `ERC20TokenStakingManager` implement `PoSValidatorManager`, which itself implements `ValidatorManager`. These are implemented as [upgradeable](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/main/contracts/proxy/utils/Initializable.sol#L56) contracts. There are numerous [guides](https://blog.chain.link/upgradable-smart-contracts/) for deploying upgradeable smart contracts, but the general steps are as follows: + 1. Deploy the implementation contract 2. Deploy the proxy contract 3. Call the implementation contract's `initialize` function - - Each flavor of `ValidatorManager` requires different settings. For example, `ValidatorManagerSettings` specifies the churn parameters, while `PoSValidatorManagerSettings` specifies the staking and rewards parameters. -4. Initialize the Validator set by calling `initializeValidatorSet` - - When a Subnet is first created on the P-Chain, it must be explicitly converted to a Subnet-only Validator compatible Subnet via [`ConvertSubnetTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setting-a-subnet-manager). The resulting `SubnetConversionMessage` Warp message is provided in the call to `initializeValidatorSet` to specify the starting Validator set in the `ValidatorManager`. Regardless of the implementation, these initial Validators are treated as PoA and are not eligible for staking rewards. + +- Each flavor of `ValidatorManager` requires different settings. For example, `ValidatorManagerSettings` specifies the churn parameters, while `PoSValidatorManagerSettings` specifies the staking and rewards parameters. + +4. Initialize the validator set by calling `initializeValidatorSet` + +- When a Subnet is first created on the P-Chain, it must be explicitly converted to an L1 via [`ConvertSubnetToL1Tx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#convertsubnettol1tx). The resulting `SubnetToL1ConversionMessage` Warp [message](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#subnettol1conversionmessage) is provided in the call to `initializeValidatorSet` to specify the starting validator set in the `ValidatorManager`. Regardless of the implementation, these initial validators are treated as PoA and are not eligible for staking rewards. ### PoAValidatorManager -Proof-of-Authority Validator management is provided via `PoAValidatorManager`, which restricts modification of the Validator set to an owner address. After deploying `PoAValidatorManager.sol` and a proxy, the `initialize` function takes the owner address, in addition to standard `ValidatorManagerSettings`. +Proof-of-Authority validator management is provided via `PoAValidatorManager`, which restricts modification of the validator set to a specified owner address. After deploying `PoAValidatorManager.sol` and a proxy, the `initialize` function takes the owner address, in addition to standard `ValidatorManagerSettings`. ### PoSValidatorManager -Proof-of-Stake Validator management is provided by the abstract contract `PoSValidatorManager`, which has two concrete implementations: `NativeTokenStakingManager` and `ERC20TokenStakingManager`. In addition to basic Validator management provided in `ValidatorManager`, `PoSValidatorManager` supports uptime-based Validation rewards, as well as Delegation to a Validator. This [state transition diagram](./StateTransition.md) illustrates the relationship between Validators and Delegators. +Proof-of-Stake validator management is provided by the abstract contract `PoSValidatorManager`, which has two concrete implementations: `NativeTokenStakingManager` and `ERC20TokenStakingManager`. In addition to basic validator management provided in `ValidatorManager`, `PoSValidatorManager` supports uptime-based validation rewards, as well as delegation to a chosen validator. This [state transition diagram](./StateTransition.md) illustrates the relationship between validators and delegators. #### NativeTokenStakingManager -`NativeTokenStakingManager` allows permissionless addition and removal of Validators that post the Subnet's native token as stake. Staking rewards are minted via the Native Minter Precompile, which is configured with a set of addresses with minting privileges. As such, the address that `NativeTokenStakingManager` is deployed to must be added as an admin to the precompile. This can be done by either calling the precompile's `setAdmin` method from an admin address, or setting the address in the Native Minter precompile settings in the chain's genesis (`config.contractNativeMinterConfig.adminAddresses`). There are a couple of methods to get this address: one is to calculate the resulting deployed address based on the deployer's address and account nonce: `keccak256(rlp.encode(address, nonce))`. The second method involves manually placing the `NativeTokenStakingManager` bytecode at a particular address in the genesis, then setting that address as an admin. +`NativeTokenStakingManager` allows permissionless addition and removal of validators that post the L1's native token as stake. Staking rewards are minted via the Native Minter Precompile, which is configured with a set of addresses with minting privileges. As such, the address that `NativeTokenStakingManager` is deployed to must be added as an admin to the precompile. This can be done by either calling the precompile's `setAdmin` method from an admin address, or setting the address in the Native Minter precompile settings in the chain's genesis (`config.contractNativeMinterConfig.adminAddresses`). There are a couple of methods to get this address: one is to calculate the resulting deployed address based on the deployer's address and account nonce: `keccak256(rlp.encode(address, nonce))`. The second method involves manually placing the `NativeTokenStakingManager` bytecode at a particular address in the genesis, then setting that address as an admin. ``` { @@ -84,47 +88,52 @@ Proof-of-Stake Validator management is provided by the abstract contract `PoSVal ``` #### ERC20TokenStakingManager -`ERC20TokenStakingManager` allows permissionless addition and removal of Validators that post the an ERC20 token as stake. The ERC20 is specified in the call to `initialize`, and must implement [`IERC20Mintable`](./interfaces/IERC20Mintable.sol). Care should be taken to enforce that only authorized users are able to call `mint`. + +`ERC20TokenStakingManager` allows permissionless addition and removal of validators that post the an ERC20 token as stake. The ERC20 is specified in the call to `initialize`, and must implement [`IERC20Mintable`](./interfaces/IERC20Mintable.sol). Care should be taken to enforce that only authorized users are able to `mint` the ERC20 staking token. ### Convert PoA to PoS -A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upgrading the implementation contract pointed to by the proxy. After performing the upgrade, the `PoSValidatorManager` contract should be initialized by calling `initialize` as described above. The Validator set contained in the `PoAValidatorManager` will be tracked by the `PoSValidatorManager` after the upgrade, but will not be eligible to earn staking rewards, nor are they able to be delegated to. +A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upgrading the implementation contract pointed to by the proxy. After performing the upgrade, the `PoSValidatorManager` contract should be initialized by calling `initialize` as described above. The validator set contained in the `PoAValidatorManager` will be tracked by the `PoSValidatorManager` after the upgrade, but will neither be eligible to stake and earn staking rewards, nor provide any such capability for potential delegators. ## Usage + ### Register a Validator -Validator registration is initiated with a call to `initializeValidatorRegistration`. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterSubnetValidatorMessage`](./MessageSpec.md#registersubnetvalidatormessage) Warp message to be sent to the P-Chain. Each Validator registration request includes all of the information needed to identify the Validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterSubnetValidatorMessage` must be delivered to the P-Chain. If the Validator is not registered on the P-Chain before the `expiry`, then the Validator may be removed from the contract state by calling `completeEndValidation`. -The `RegisterSubnetValidatorMessage` is delivered to the P-Chain as the Warp message payload of a [`RegisterSubnetValidatorTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registersubnetvalidatortx). Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#step-2-issue-a-registersubnetvalidatortx-on-the-p-chain) for validity requirements. The P-Chain then signs a [`SubnetValidatorRegistrationMessage`](./MessageSpec.md#subnetvalidatorregistrationmessage) Warp message indicating that the specified Validator was successfully registered on the P-Chain. +Validator registration is initiated with a call to `initializeValidatorRegistration`. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterL1ValidatorMessage`](./MessageSpec.md#registersubnetvalidatormessage) Warp message to be sent to the P-Chain. Each Validator registration request includes all of the information needed to identify the Validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterL1ValidatorMessage` must be delivered to the P-Chain. If the Validator is not registered on the P-Chain before the `expiry`, then the Validator may be removed from the contract state by calling `completeEndValidation`. + +The `RegisterL1ValidatorMessage` is delivered to the P-Chain as the Warp message payload of a `RegisterL1ValidatorTx`. Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatortx) for validity requirements. The P-Chain then signs a [`L1ValidatorRegistrationMessage`](./MessageSpec.md#subnetvalidatorregistrationmessage) Warp message indicating that the specified Validator was successfully registered on the P-Chain. -The `SubnetValidatorRegistrationMessage` is delivered to the `ValidatorManager` via a call to `completeValidatorRegistration`. For PoS Validator Managers, staking rewards begin accruing at this time. +The `L1ValidatorRegistrationMessage` is delivered to the `ValidatorManager` via a call to `completeValidatorRegistration`. For PoS Validator Managers, staking rewards begin accruing at this time. ### Remove a Validator -Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager` , For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./MessageSpec.md#validationuptimemessage) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the Subnet Validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn Validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. -The `ValidatorManager` contructs a [`SetSubnetValidatorWeightMessage`](./MessageSpec.md#setsubnetvalidatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetSubnetValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setsubnetvalidatorweighttx). The P-Chain acknowledges Validator exit by signing a `SubnetValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The Validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. +Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager` , For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./MessageSpec.md#validationuptimemessage) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. + +The `ValidatorManager` contructs a [`SetL1ValidatorWeightMessage`](./MessageSpec.md#setsubnetvalidatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. #### Disable a Validator Directly on the P-Chain -ACP-77 also provides a method to disable a Validator without interacting with the Subnet directly. The P-Chain transaction [`DisableValidatorTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#disablevalidatortx) disables the Validator on the P-Chain. The disabled Validator's weight will still count towards the Subnet's total weight. +ACP-77 also provides a method to disable a validator without interacting with the L1 directly. The P-Chain transaction [`DisableL1ValidatorTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#disablel1validatortx) disables the validator on the P-Chain. The disabled validator's weight will still count towards the L1's total weight. -Disabled Subnet Validators can re-activate at any time by increasing their balance with an `IncreaseBalanceTx`. Anyone can call `IncreaseBalanceTx` for any Validator on the P-Chain. A disabled Validator can only be totally removed from the Validator set by a call to `initializeEndValidation`. +Disabled L1 validators can re-activate at any time by increasing their balance with an `IncreaseBalanceTx`. Anyone can call `IncreaseBalanceTx` for any validator on the P-Chain. A disabled validator can only be completely and permanently removed from the validator set by a call to `initializeEndValidation`. ### (PoS only) Register a Delegator -`PoSValidatorManager` supports Delegation to an active Validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host Validator. A Delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The Delegator will be registered as long as churn restrictions are not violated. The Delegator is reflected on the P-Chain by adjusting the Validator's registered weight via a [`SetSubnetValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setsubnetvalidatorweighttx). The weight change acknowledgement is delivered to the `PoSValidatorManager` via a [`SubnetValidatorWeightUpdateMessage`](./MessageSpec.md#subnetvalidatorweightupdatemessage), which is provided by calling `completeDelegatorRegistration`. +`PoSValidatorManager` supports delegation to an actively staked validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host validator. A delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The delegator will be registered as long as churn restrictions are not violated. The delegator is reflected on the P-Chain by adjusting the validator's registered weight via a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The weight change acknowledgement is delivered to the `PoSValidatorManager` via an [`L1ValidatorWeightMessage`](./MessageSpec.md#subnetvalidatorweightupdatemessage), which is provided by calling `completeDelegatorRegistration`. > [!NOTE] -> The P-Chain is only willing to sign a `SubnetValidatorWeightUpdateMessage` for an active Validator. Once Validator exit has been initiated (via a call to `initializeEndValidation`), the `PoSValidatorManager` must assume that the Validator has been deactivated on the P-Chain, and will therefore not sign any further weight updates. Therefore, it is invalid to _initiate_ adding or removing a Delegator when the Validator is in this state, though it _may be_ valid to _complete_ an already initiated Delegator action, depending on the order of delivery to the P-Chain. If the Delegator weight change was submitted (and a Warp signature on the acknowledgement retrieved) before the Validator was removed, then the Delegator action may be completed. Otherwise, the acknowledgement of the Validation end must first be delivered before completing the Delegator action. +> The P-Chain is only willing to sign an `L1ValidatorWeightMessage` for an active validator. Once a validator exit has been initiated (via a call to `initializeEndValidation`), the `PoSValidatorManager` must assume that the validator has been deactivated on the P-Chain, and will therefore not sign any further weight updates. Therefore, it is invalid to _initiate_ adding or removing a delegator when the validator is in this state, though it _may be_ valid to _complete_ an already initiated delegator action, depending on the order of delivery to the P-Chain. If the delegator weight change was submitted (and a Warp signature on the acknowledgement retrieved) before the validator was removed, then the delegator action may be completed. Otherwise, the acknowledgement of the validation end must first be delivered before completing the delegator action. ### (PoS only) Remove a Delegator -Delegators removal may be initiated by calling `initializeEndDelegation`, as long as churn restrictions are not violated. Similar to `initializeEndValidation`, an uptime proof may be provided to be used to determine Delegator rewards eligibility. If no proof is provided, the latest known uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). The Validator's weight is updated on the P-Chain by the same mechanism used to register a Delegator. The `SubnetValidatorWeightUpdateMessage` from the P-Chain is delivered to the `PoSValidatorManager` in the call to `completeEndDelegation`. +Delegators removal may be initiated by calling `initializeEndDelegation`, as long as churn restrictions are not violated. Similar to `initializeEndValidation`, an uptime proof may be provided to be used to determine delegator rewards eligibility. If no proof is provided, the latest known uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). The validator's weight is updated on the P-Chain by the same mechanism used to register a delegator. The `SubnetValidatorWeightUpdateMessage` from the P-Chain is delivered to the `PoSValidatorManager` in the call to `completeEndDelegation`. ### (PoS only) Submit an Uptime Proof -The [rewards calculater](./interfaces/IRewardCalculator.sol) is a function of uptime seconds since the Validator's start time. In addition to doing so in the calls to `initializeEndValidation` and `initializeEndDelegation` as described above, uptime proofs may also be supplied by calling `submitUptimeProof`. Unlike `initializeEndValidation` and `initializeEndDelegation`, `submitUptimeProof` may be called by anyone, decreasing the likelihood of a Validation or Delegation not being able to claim rewards that it deserved based on its actual uptime. +The [rewards calculator](./interfaces/IRewardCalculator.sol) is a function of uptime seconds since the validator's start time. In addition to doing so in the calls to `initializeEndValidation` and `initializeEndDelegation` as described above, uptime proofs may also be supplied by calling `submitUptimeProof`. Unlike `initializeEndValidation` and `initializeEndDelegation`, `submitUptimeProof` may be called by anyone, decreasing the likelihood of a validation or delegation not being able to claim rewards that it deserved based on its actual uptime. ### (PoS only) Collect Staking Rewards + #### Validation Rewards Validation rewards are distributed in the call to `completeEndValidation`. @@ -135,4 +144,4 @@ Delegation rewards are distributed in the call to `completeEndDelegation`. #### Delegation Fees -Delegation fees owed to Validators are _not_ distributed when the Validation ends as to bound the amount of gas consumed in the call to `completeEndValidation`. Instead, `claimDelegationFees` may be called after the Validation is completed. +Delegation fees owed to validators are _not_ distributed when the validation ends as to bound the amount of gas consumed in the call to `completeEndValidation`. Instead, `claimDelegationFees` may be called after the validation is completed. From d6d7618229c3e9abd5d2475d05bf72eef6fd9512 Mon Sep 17 00:00:00 2001 From: meaghanfitzgerald Date: Tue, 29 Oct 2024 15:12:14 -0400 Subject: [PATCH 23/43] message spec updates --- contracts/validator-manager/MessageSpec.md | 178 ++++++++---------- contracts/validator-manager/README.md | 8 +- .../validator-manager/StateTransition.md | 3 +- 3 files changed, 85 insertions(+), 104 deletions(-) diff --git a/contracts/validator-manager/MessageSpec.md b/contracts/validator-manager/MessageSpec.md index 62a063b92..34d7d122c 100644 --- a/contracts/validator-manager/MessageSpec.md +++ b/contracts/validator-manager/MessageSpec.md @@ -1,127 +1,107 @@ ## Warp Message Format Reference -### `RegisterSubnetValidatorMessage` +### `RegisterL1ValidatorMessage` -Description: Register a Subnet Validator on the P-Chain +Description: Register an L1 Validator on the P-Chain -Signed by: Subnet +Signed by: L1 Consumed by: P-Chain Specification: -``` -+--------------+----------+-----------+ -| codecID : uint16 | 2 bytes | -+--------------+----------+-----------+ -| typeID : uint32 | 4 bytes | -+--------------+----------+-----------+ -| subnetID : [32]byte | 32 bytes | -+--------------+----------+-----------+ -| nodeID : [32]byte | 32 bytes | -+--------------+----------+-----------+ -| weight : uint64 | 8 bytes | -+--------------+----------+-----------+ -| blsPublicKey : [48]byte | 48 bytes | -+--------------+----------+-----------+ -| expiry : uint64 | 8 bytes | -+--------------+----------+-----------+ - | 134 bytes | - +-----------+ - -``` - -### `SubnetValidatorRegistrationMessage` - -Description: Confirms a Subnet Validator's registration validity on the P-Chain +| Field | Type | Size | +| ----------------------: | ------------: | ------------------------------------------------------------------------: | +| `codecID` | `uint16` | 2 bytes | +| `typeID` | `uint32` | 4 bytes | +| `subnetID` | `[32]byte` | 32 bytes | +| `nodeID` | `[]byte` | 4 + len(`nodeID`) bytes | +| `blsPublicKey` | `[48]byte` | 48 bytes | +| `expiry` | `uint64` | 8 bytes | +| `remainingBalanceOwner` | `PChainOwner` | 8 + len(`addresses`) \* 20 bytes | +| `disableOwner` | `PChainOwner` | 8 + len(`addresses`) \* 20 bytes | +| `weight` | `uint64` | 8 bytes | +| | | 122 + len(`nodeID`) + (len(`addresses1`) + len(`addresses2`)) \* 20 bytes | + +- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` +- `typeID` is the payload type identifier and is `0x00000001` for this payload +- `subnetID`, `nodeID`, `weight`, and `blsPublicKey` are for the validator being added +- `expiry` is the time at which this message becomes invalid. As of a P-Chain timestamp `>= expiry`, this Avalanche Warp Message can no longer be used to add the `nodeID` to the validator set of `subnetID` +- `remainingBalanceOwner` is the P-Chain owner where leftover $AVAX from the validator's Balance will be issued to when this validator it is removed from the validator set. +- `disableOwner` is the only P-Chain owner allowed to disable the validator using `DisableL1ValidatorTx`, specified below. + +The following is the serialization of a `PChainOwner`: + +| Field | Type | Size | +| ----------: | -----------: | -------------------------------: | +| `threshold` | `uint32` | 4 bytes | +| `addresses` | `[][20]byte` | 4 + len(`addresses`) \* 20 bytes | +| | | 8 + len(`addresses`) \* 20 bytes | + +- `threshold` is the number of `addresses` that must provide a signature for the `PChainOwner` to authorize an action. +- Validation criteria: + - If `threshold` is `0`, `addresses` must be empty + - `threshold` <= len(`addresses`) + - Entries of `addresses` must be unique and sorted in ascending order + +### `L1ValidatorRegistrationMessage` + +Description: Confirms an L1 validator's registration validity on the P-Chain Signed by: P-Chain Consumed by: Validator Manager contract Specification: -``` -+--------------+----------+----------+ -| codecID : uint16 | 2 bytes | -+--------------+----------+----------+ -| typeID : uint32 | 4 bytes | -+--------------+----------+----------+ -| validationID : [32]byte | 32 bytes | -+--------------+----------+----------+ -| valid : bool | 1 byte | -+--------------+----------+----------+ - | 39 bytes | - +----------+ -``` +| Field | Type | Size | +| -------------: | ---------: | -------: | +| `codecID` | `uint16` | 2 bytes | +| `typeID` | `uint32` | 4 bytes | +| `validationID` | `[32]byte` | 32 bytes | +| `registered` | `bool` | 1 byte | +| | | 39 bytes | + +- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` +- `typeID` is the payload type identifier and is `0x00000002` for this message +- `validationID` identifies the validator for the message +- `registered` is a boolean representing the status of the `validationID`. If true, the `validationID` corresponds to a validator in the current validator set. If false, the `validationID` does not correspond to a validator in the current validator set, and never will in the future. ### `ValidationUptimeMessage` Description: Provides a Validator's uptime for calculating staking rewards -Signed by: Subnet -Consumed by: Validator Manager contract +Signed by: L1 +Consumed by: Validator Manager Contract Specification: -``` -+--------------+----------+----------+ -| codecID : uint16 | 2 bytes | -+--------------+----------+----------+ -| typeID : uint32 | 4 bytes | -+--------------+----------+----------+ -| validationID : [32]byte | 32 bytes | -+--------------+----------+----------+ -| uptime : uint64 | 8 bytes | -+--------------+----------+----------+ - | 46 bytes | - +----------+ -``` - -### `SetSubnetValidatorWeightMessage` - -Description: Used to set a Validator's stake weight on another chain - -Signed by: Subnet -Consumed by: P-Chain +| Field | Type | Size | +| -------------: | ---------: | -------: | +| `codecID` | `uint16` | 2 bytes | +| `typeID` | `uint32` | 4 bytes | +| `validationID` | `[32]byte` | 32 bytes | +| `uptime` | `uint64` | 8 byte | +| | | 46 bytes | -Specification: +### `L1ValidatorWeightMessage` -``` -+--------------+----------+----------+ -| codecID : uint16 | 2 bytes | -+--------------+----------+----------+ -| typeID : uint32 | 4 bytes | -+--------------+----------+----------+ -| validationID : [32]byte | 32 bytes | -+--------------+----------+----------+ -| nonce : uint64 | 8 bytes | -+--------------+----------+----------+ -| weight : uint64 | 8 bytes | -+--------------+----------+----------+ - | 54 bytes | - +----------+ -``` - -### `SubnetValidatorWeightUpdateMessage` - -Description: Acknowledges a Validator weight update +Description: Used to set a Validator's stake weight on another chain -Signed by: P-Chain -Consumed by: Validator Manager contract +Signed by: P-Chain or L1 +Consumed by: P-Chain or L1 Specification: -``` -+--------------+----------+----------+ -| codecID : uint16 | 2 bytes | -+--------------+----------+----------+ -| typeID : uint32 | 4 bytes | -+--------------+----------+----------+ -| validationID : [32]byte | 32 bytes | -+--------------+----------+----------+ -| nonce : uint64 | 8 bytes | -+--------------+----------+----------+ -| weight : uint64 | 8 bytes | -+--------------+----------+----------+ - | 54 bytes | - +----------+ -``` \ No newline at end of file +| Field | Type | Size | +| -------------: | ---------: | -------: | +| `codecID` | `uint16` | 2 bytes | +| `typeID` | `uint32` | 4 bytes | +| `validationID` | `[32]byte` | 32 bytes | +| `nonce` | `uint64` | 8 bytes | +| `weight` | `uint64` | 8 bytes | +| | | 54 bytes | + +- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` +- `typeID` is the payload type identifier and is `0x00000003` for this message +- `validationID` identifies the validator for the message +- `nonce` is a strictly increasing number that denotes the latest validator weight update and provides replay protection for this transaction +- `weight` is the new `weight` of the validator diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index 50246bc2a..0094c8215 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -99,9 +99,9 @@ A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upg ### Register a Validator -Validator registration is initiated with a call to `initializeValidatorRegistration`. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterL1ValidatorMessage`](./MessageSpec.md#registersubnetvalidatormessage) Warp message to be sent to the P-Chain. Each Validator registration request includes all of the information needed to identify the Validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterL1ValidatorMessage` must be delivered to the P-Chain. If the Validator is not registered on the P-Chain before the `expiry`, then the Validator may be removed from the contract state by calling `completeEndValidation`. +Validator registration is initiated with a call to `initializeValidatorRegistration`. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterL1ValidatorMessage`](./MessageSpec.md#registerl1validatormessage) Warp message to be sent to the P-Chain. Each Validator registration request includes all of the information needed to identify the Validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterL1ValidatorMessage` must be delivered to the P-Chain. If the Validator is not registered on the P-Chain before the `expiry`, then the Validator may be removed from the contract state by calling `completeEndValidation`. -The `RegisterL1ValidatorMessage` is delivered to the P-Chain as the Warp message payload of a `RegisterL1ValidatorTx`. Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatortx) for validity requirements. The P-Chain then signs a [`L1ValidatorRegistrationMessage`](./MessageSpec.md#subnetvalidatorregistrationmessage) Warp message indicating that the specified Validator was successfully registered on the P-Chain. +The `RegisterL1ValidatorMessage` is delivered to the P-Chain as the Warp message payload of a `RegisterL1ValidatorTx`. Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatortx) for validity requirements. The P-Chain then signs a [`L1ValidatorRegistrationMessage`](./MessageSpec.md#l1validatorregistrationmessage) Warp message indicating that the specified Validator was successfully registered on the P-Chain. The `L1ValidatorRegistrationMessage` is delivered to the `ValidatorManager` via a call to `completeValidatorRegistration`. For PoS Validator Managers, staking rewards begin accruing at this time. @@ -109,7 +109,7 @@ The `L1ValidatorRegistrationMessage` is delivered to the `ValidatorManager` via Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager` , For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./MessageSpec.md#validationuptimemessage) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. -The `ValidatorManager` contructs a [`SetL1ValidatorWeightMessage`](./MessageSpec.md#setsubnetvalidatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. +The `ValidatorManager` contructs an [`L1ValidatorWeightMessage`](./MessageSpec.md#l1validatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. #### Disable a Validator Directly on the P-Chain @@ -119,7 +119,7 @@ Disabled L1 validators can re-activate at any time by increasing their balance w ### (PoS only) Register a Delegator -`PoSValidatorManager` supports delegation to an actively staked validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host validator. A delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The delegator will be registered as long as churn restrictions are not violated. The delegator is reflected on the P-Chain by adjusting the validator's registered weight via a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The weight change acknowledgement is delivered to the `PoSValidatorManager` via an [`L1ValidatorWeightMessage`](./MessageSpec.md#subnetvalidatorweightupdatemessage), which is provided by calling `completeDelegatorRegistration`. +`PoSValidatorManager` supports delegation to an actively staked validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host validator. A delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The delegator will be registered as long as churn restrictions are not violated. The delegator is reflected on the P-Chain by adjusting the validator's registered weight via a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The weight change acknowledgement is delivered to the `PoSValidatorManager` via an [`L1ValidatorWeightMessage`](./MessageSpec.md#l1validatorweightmessage), which is provided by calling `completeDelegatorRegistration`. > [!NOTE] > The P-Chain is only willing to sign an `L1ValidatorWeightMessage` for an active validator. Once a validator exit has been initiated (via a call to `initializeEndValidation`), the `PoSValidatorManager` must assume that the validator has been deactivated on the P-Chain, and will therefore not sign any further weight updates. Therefore, it is invalid to _initiate_ adding or removing a delegator when the validator is in this state, though it _may be_ valid to _complete_ an already initiated delegator action, depending on the order of delivery to the P-Chain. If the delegator weight change was submitted (and a Warp signature on the acknowledgement retrieved) before the validator was removed, then the delegator action may be completed. Otherwise, the acknowledgement of the validation end must first be delivered before completing the delegator action. diff --git a/contracts/validator-manager/StateTransition.md b/contracts/validator-manager/StateTransition.md index 9dd3c8de5..cf62adaa7 100644 --- a/contracts/validator-manager/StateTransition.md +++ b/contracts/validator-manager/StateTransition.md @@ -1,6 +1,7 @@ ## State Transitions -The following state transition diagram illustrates the relationship between Validator and Delegator state. `Validator` is abbreviated as `V`, `Delegator` is abbreviated as `D`, and function names are shortened to improve readability. `Delegator.Completed` is omitted to show equivalance between the Validator's initial state and the state after a Delegation completes. +The following state transition diagram illustrates the relationship between validator and delegator state. `Validator` is abbreviated as `V`, `Delegator` is abbreviated as `D`, and function names are shortened to improve readability. `Delegator.Completed` is omitted to show equivalance between the validator's initial state and the state after a delegation completes. + ```mermaid stateDiagram-v2 % Happy path From 2f0bf4fb9e7427ba0edb4da30adca847d09f30fa Mon Sep 17 00:00:00 2001 From: meaghanfitzgerald Date: Tue, 29 Oct 2024 15:17:01 -0400 Subject: [PATCH 24/43] nit --- contracts/validator-manager/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index 0094c8215..5af4f9cbc 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -66,7 +66,7 @@ Proof-of-Stake validator management is provided by the abstract contract `PoSVal `NativeTokenStakingManager` allows permissionless addition and removal of validators that post the L1's native token as stake. Staking rewards are minted via the Native Minter Precompile, which is configured with a set of addresses with minting privileges. As such, the address that `NativeTokenStakingManager` is deployed to must be added as an admin to the precompile. This can be done by either calling the precompile's `setAdmin` method from an admin address, or setting the address in the Native Minter precompile settings in the chain's genesis (`config.contractNativeMinterConfig.adminAddresses`). There are a couple of methods to get this address: one is to calculate the resulting deployed address based on the deployer's address and account nonce: `keccak256(rlp.encode(address, nonce))`. The second method involves manually placing the `NativeTokenStakingManager` bytecode at a particular address in the genesis, then setting that address as an admin. -``` +```json { "config" : { ... From 1f07d4b688d06cc92c36efa63314b86eba4dce2d Mon Sep 17 00:00:00 2001 From: meaghanfitzgerald Date: Tue, 29 Oct 2024 15:26:46 -0400 Subject: [PATCH 25/43] add SubnetToL1ConversionMessage --- contracts/validator-manager/MessageSpec.md | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/contracts/validator-manager/MessageSpec.md b/contracts/validator-manager/MessageSpec.md index 34d7d122c..35dcb3e0c 100644 --- a/contracts/validator-manager/MessageSpec.md +++ b/contracts/validator-manager/MessageSpec.md @@ -1,5 +1,53 @@ ## Warp Message Format Reference +#### `SubnetToL1ConversionMessage` + +Description: Confirms conversion to L1 on the P-Chain + +Signed by: P-Chain +Consumed by: L1 + +Specification: + +The `SubnetToL1ConversionMessage` is specified as an `AddressedCall` with `sourceChainID` set to the P-Chain ID, the `sourceAddress` set to an empty byte array, and a payload of: + +| Field | Type | Size | +| -------------: | ---------: | -------: | +| `codecID` | `uint16` | 2 bytes | +| `typeID` | `uint32` | 4 bytes | +| `conversionID` | `[32]byte` | 32 bytes | +| | | 38 bytes | + +- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` +- `typeID` is the payload type identifier and is `0x00000000` for this message +- `conversionID` is the SHA256 hash of the `ConversionData` from a given `ConvertSubnetToL1Tx` + +The following serialization is defined as the `ValidatorData`: + +| Field | Type | Size | +| -------------: | ---------: | -----------------------: | +| `nodeID` | `[]byte` | 4 + len(`nodeID`) bytes | +| `blsPublicKey` | `[48]byte` | 48 bytes | +| `weight` | `uint64` | 8 bytes | +| | | 60 + len(`nodeID`) bytes | + +The following serialization is defined as the `ConversionData`: + +| Field | Type | Size | +| ---------------: | ----------------: | ---------------------------------------------------------: | +| `codecID` | `uint16` | 2 bytes | +| `subnetID` | `[32]byte` | 32 bytes | +| `managerChainID` | `[32]byte` | 32 bytes | +| `managerAddress` | `[]byte` | 4 + len(`managerAddress`) bytes | +| `validators` | `[]ValidatorData` | 4 + sum(`validatorLengths`) bytes | +| | | 74 + len(`managerAddress`) + sum(`validatorLengths`) bytes | + +- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` +- `sum(validatorLengths)` is the sum of the lengths of `ValidatorData` serializations included in `validators`. +- `subnetID` identifies the Subnet that is being converted to an L1 (described further below). +- `managerChainID` and `managerAddress` identify the validator manager for the newly created L1. This is the (blockchain ID, address) tuple allowed to send Warp messages to modify the L1's validator set. +- `validators` are the initial continuous-fee-paying validators for the given L1. + ### `RegisterL1ValidatorMessage` Description: Register an L1 Validator on the P-Chain From 60e749e8c3b00e5698b75f2e2bc0fbed5f01b55d Mon Sep 17 00:00:00 2001 From: meaghanfitzgerald Date: Tue, 29 Oct 2024 15:27:21 -0400 Subject: [PATCH 26/43] nit --- contracts/validator-manager/MessageSpec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/validator-manager/MessageSpec.md b/contracts/validator-manager/MessageSpec.md index 35dcb3e0c..b0bc0f81a 100644 --- a/contracts/validator-manager/MessageSpec.md +++ b/contracts/validator-manager/MessageSpec.md @@ -1,6 +1,6 @@ ## Warp Message Format Reference -#### `SubnetToL1ConversionMessage` +### `SubnetToL1ConversionMessage` Description: Confirms conversion to L1 on the P-Chain From ad33b4bca72308117ea604fa2c6a38dce7fbfc29 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 29 Oct 2024 16:49:02 -0500 Subject: [PATCH 27/43] update bindings using latest abigen --- abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go | 2 +- .../go/teleporter/TeleporterMessenger/TeleporterMessenger.go | 2 +- .../registry/TeleporterRegistry/TeleporterRegistry.go | 2 +- abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go | 2 +- .../ERC20TokenStakingManager/ERC20TokenStakingManager.go | 2 +- .../NativeTokenStakingManager/NativeTokenStakingManager.go | 2 +- .../PoAValidatorManager/PoAValidatorManager.go | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go index cc2d5a87c..baab584d0 100644 --- a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go +++ b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go @@ -42,7 +42,7 @@ type ValidatorSetSigMessage struct { // ValidatorSetSigMetaData contains all meta data concerning the ValidatorSetSig contract. var ValidatorSetSigMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Delivered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"executeCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"targetBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorSetSigAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structValidatorSetSigMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"validateMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60c060405234801561000f575f80fd5b50604051610b76380380610b7683398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a7e6100f85f395f818161017701526104ba01525f818161012a01526102790152610a7e5ff3fe608060405260043610610071575f3560e01c80637ecebe001161004c5780637ecebe00146100e05780638d6e579d14610119578063b771b3bc1461014c578063d127dc9b14610166575f80fd5b80630731775d1461007c5780635433da42146100ac5780637d969c34146100c1575f80fd5b3661007857005b5f80fd5b348015610087575f80fd5b5061008f5f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf6100ba366004610642565b610199565b005b3480156100cc575f80fd5b506100bf6100db36600461079a565b6104b6565b3480156100eb575f80fd5b5061010b6100fa366004610842565b60016020525f908152604090205481565b6040519081526020016100a3565b348015610124575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610157575f80fd5b5061008f6005600160991b0181565b348015610171575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a161061a565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261021191908101906108c9565b91509150806102755760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102f45760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161026c565b60208201516001600160a01b0316156103655760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161026c565b5f826040015180602001905181019061037e9190610969565b9050610389816104b6565b6060810151610399906001610a08565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103d791610a2d565b5f6040518083038185875af1925050503d805f8114610411576040519150601f19603f3d011682016040523d82523d5f602084013e610416565b606091505b50509050806104675760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161026c565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104b360015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461053a5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161026c565b60208101516001600160a01b031630146105ae5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161026c565b60608101516040808301516001600160a01b03165f90815260016020522054146104b35760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161026c565b60025f540361063c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610652575f80fd5b813563ffffffff81168114610665575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156106a3576106a361066c565b60405290565b6040516060810167ffffffffffffffff811182821017156106a3576106a361066c565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f5576106f561066c565b604052919050565b6001600160a01b03811681146104b3575f80fd5b803561071c816106fd565b919050565b5f67ffffffffffffffff82111561073a5761073a61066c565b50601f01601f191660200190565b5f82601f830112610757575f80fd5b813561076a61076582610721565b6106cc565b81815284602083860101111561077e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107aa575f80fd5b813567ffffffffffffffff808211156107c1575f80fd5b9083019060c082860312156107d4575f80fd5b6107dc610680565b823581526107ec60208401610711565b60208201526107fd60408401610711565b6040820152606083013560608201526080830135608082015260a083013582811115610827575f80fd5b61083387828601610748565b60a08301525095945050505050565b5f60208284031215610852575f80fd5b8135610665816106fd565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b5f82601f83011261088e575f80fd5b815161089c61076582610721565b8181528460208386010111156108b0575f80fd5b6108c182602083016020870161085d565b949350505050565b5f80604083850312156108da575f80fd5b825167ffffffffffffffff808211156108f1575f80fd5b9084019060608287031215610904575f80fd5b61090c6106a9565b82518152602083015161091e816106fd565b6020820152604083015182811115610934575f80fd5b6109408882860161087f565b6040830152508094505050506020830151801515811461095e575f80fd5b809150509250929050565b5f60208284031215610979575f80fd5b815167ffffffffffffffff80821115610990575f80fd5b9083019060c082860312156109a3575f80fd5b6109ab610680565b8251815260208301516109bd816106fd565b602082015260408301516109d0816106fd565b80604083015250606083015160608201526080830151608082015260a0830151828111156109fc575f80fd5b6108338782860161087f565b80820180821115610a2757634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8251610a3e81846020870161085d565b919091019291505056fea2646970667358221220019565c755ece24e1cd6e32479455fadaaec71711b766ce499d457560a32ba5464736f6c63430008190033", + Bin: "0x60c060405234801561000f575f80fd5b50604051610b76380380610b7683398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a7e6100f85f395f818161017701526104ba01525f818161012a01526102790152610a7e5ff3fe608060405260043610610071575f3560e01c80637ecebe001161004c5780637ecebe00146100e05780638d6e579d14610119578063b771b3bc1461014c578063d127dc9b14610166575f80fd5b80630731775d1461007c5780635433da42146100ac5780637d969c34146100c1575f80fd5b3661007857005b5f80fd5b348015610087575f80fd5b5061008f5f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf6100ba366004610642565b610199565b005b3480156100cc575f80fd5b506100bf6100db36600461079a565b6104b6565b3480156100eb575f80fd5b5061010b6100fa366004610842565b60016020525f908152604090205481565b6040519081526020016100a3565b348015610124575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610157575f80fd5b5061008f6005600160991b0181565b348015610171575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a161061a565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261021191908101906108c9565b91509150806102755760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102f45760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161026c565b60208201516001600160a01b0316156103655760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161026c565b5f826040015180602001905181019061037e9190610969565b9050610389816104b6565b6060810151610399906001610a08565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103d791610a2d565b5f6040518083038185875af1925050503d805f8114610411576040519150601f19603f3d011682016040523d82523d5f602084013e610416565b606091505b50509050806104675760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161026c565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104b360015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461053a5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161026c565b60208101516001600160a01b031630146105ae5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161026c565b60608101516040808301516001600160a01b03165f90815260016020522054146104b35760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161026c565b60025f540361063c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610652575f80fd5b813563ffffffff81168114610665575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156106a3576106a361066c565b60405290565b6040516060810167ffffffffffffffff811182821017156106a3576106a361066c565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f5576106f561066c565b604052919050565b6001600160a01b03811681146104b3575f80fd5b803561071c816106fd565b919050565b5f67ffffffffffffffff82111561073a5761073a61066c565b50601f01601f191660200190565b5f82601f830112610757575f80fd5b813561076a61076582610721565b6106cc565b81815284602083860101111561077e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107aa575f80fd5b813567ffffffffffffffff808211156107c1575f80fd5b9083019060c082860312156107d4575f80fd5b6107dc610680565b823581526107ec60208401610711565b60208201526107fd60408401610711565b6040820152606083013560608201526080830135608082015260a083013582811115610827575f80fd5b61083387828601610748565b60a08301525095945050505050565b5f60208284031215610852575f80fd5b8135610665816106fd565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b5f82601f83011261088e575f80fd5b815161089c61076582610721565b8181528460208386010111156108b0575f80fd5b6108c182602083016020870161085d565b949350505050565b5f80604083850312156108da575f80fd5b825167ffffffffffffffff808211156108f1575f80fd5b9084019060608287031215610904575f80fd5b61090c6106a9565b82518152602083015161091e816106fd565b6020820152604083015182811115610934575f80fd5b6109408882860161087f565b6040830152508094505050506020830151801515811461095e575f80fd5b809150509250929050565b5f60208284031215610979575f80fd5b815167ffffffffffffffff80821115610990575f80fd5b9083019060c082860312156109a3575f80fd5b6109ab610680565b8251815260208301516109bd816106fd565b602082015260408301516109d0816106fd565b80604083015250606083015160608201526080830151608082015260a0830151828111156109fc575f80fd5b6108338782860161087f565b80820180821115610a2757634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8251610a3e81846020870161085d565b919091019291505056fea2646970667358221220cf36c30fc2c9cbe627ab36b69583784c46490d2569cab6de0c12dfbd4ad1a52864736f6c63430008190033", } // ValidatorSetSigABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go index 589dc83a9..f68e46c6a 100644 --- a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -66,7 +66,7 @@ type TeleporterMessageReceipt struct { // TeleporterMessengerMetaData contains all meta data concerning the TeleporterMessenger contract. var TeleporterMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b5060015f8190558055613112806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612111565b6104f3565b005b61015461018a36600461212c565b6105e6565b6101d961019d36600461212c565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e929190612143565b6101fa6101f536600461212c565b610602565b6040516001600160a01b03909116815260200161015e565b61015461022036600461212c565b5f9081526005602052604090205490565b61015461023f36600461216a565b610689565b61017a6102523660046121b7565b6106e2565b61015461026536600461212c565b60066020525f908152604090205481565b6102896102843660046121e8565b610885565b60405161015e9190612208565b61017a6102a4366004612228565b6108b6565b6101546102b736600461225d565b610aed565b6101546102ca3660046122cd565b610b2f565b6101fa6005600160991b0181565b6101546102eb36600461235e565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a610323366004612395565b610dc1565b61015460025481565b61015461033f36600461212c565b6111e3565b61038c61035236600461212c565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b936600461212c565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f436600461212c565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046123b9565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049691906123fc565b9050806104be5760405162461bcd60e51b81526004016104b590612413565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b59061245a565b60025f556106d86106bb83612691565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b59061245a565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612730565b5f8360405160200161079491906129af565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906129c1565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612a0a565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a908490600401612a8b565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a91906123fc565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b59061245a565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b590612a9d565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612ae2565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612730565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612b4a565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b59061245a565b60025f818155905490866001600160401b03811115610b7257610b7261249d565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612b5d565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612b5d565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612b71565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b590612a9d565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612be7565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612d7b565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611a5a565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611ac6565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612b5d565b6020026020010151611b36565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611c5a565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612f81565b60405180910390a460e084015151156111d5576111d582875f015186611cb4565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b590612413565b5f60035460016112159190612b4a565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b590612a9d565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612730565b80836040516020016112b791906129af565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906129c1565b5f6112fb6080850160608601612111565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612111565b6113cb60e0870187612fa4565b6040516024016113de9493929190612fe6565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612111565b5a84611de3565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611dfa565b505050565b805460018201545f916105fc91613010565b60605f611520600561151b856114f8565b611e5b565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b038111156115855761158561249d565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611e70565b8282815181106115f1576115f1612b5d565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f90613023565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac919061303b565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612ae2565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b6908890869061304d565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e8908690600401612a8b565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182891906123fc565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612b4a565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196291906123fc565b90506119796001600160a01b038516333086611f3a565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e191906123fc565b9050818111611a475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611a518282613010565b95945050505050565b5f81515f03611a6b575060016105fc565b81515f5b81811015611abc57846001600160a01b0316848281518110611a9357611a93612b5d565b60200260200101516001600160a01b031603611ab4576001925050506105fc565b600101611a6f565b505f949350505050565b805f03611b255760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f611b458484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b9b575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c01908490612b4a565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c4b919061305f565b60405180910390a45050505050565b600182018054829160028501915f9182611c7383613023565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d165760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611d36576114f3838383611f79565b602081015160e08201516040515f92611d5392869260240161307f565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d97919084611de3565b905080611db057611da9858585611f79565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611e0e6001600160a01b03841683611fed565b905080515f14158015611e32575080806020019051810190611e3091906130a8565b155b156114f357604051635274afe760e01b81526001600160a01b03841660048201526024016104b5565b5f818310611e6957816108af565b5090919050565b604080518082019091525f808252602082015281546001830154819003611ed95760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f30908390612b4a565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611f739186918216906323b872dd906084016114c1565b50505050565b80604051602001611f8a919061303b565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fe090859061303b565b60405180910390a3505050565b60606108af83835f845f80856001600160a01b0316848660405161201191906130c1565b5f6040518083038185875af1925050503d805f811461204b576040519150601f19603f3d011682016040523d82523d5f602084013e612050565b606091505b509150915061206086838361206a565b9695505050505050565b60608261207f5761207a826120c6565b6108af565b815115801561209657506001600160a01b0384163b155b156120bf57604051639996b31560e01b81526001600160a01b03851660048201526024016104b5565b50806108af565b8051156120d65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146120ef575f80fd5b80356104ee816120f2565b5f60208284031215612121575f80fd5b81356108af816120f2565b5f6020828403121561213c575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f6020828403121561217a575f80fd5b81356001600160401b0381111561218f575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156121b1575f80fd5b50919050565b5f602082840312156121c7575f80fd5b81356001600160401b038111156121dc575f80fd5b611222848285016121a0565b5f80604083850312156121f9575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f6060848603121561223a575f80fd5b83359250602084013561224c816120f2565b929592945050506040919091013590565b5f805f6060848603121561226f575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612296575f80fd5b5081356001600160401b038111156122ac575f80fd5b6020830191508360208260051b85010111156122c6575f80fd5b9250929050565b5f805f805f8086880360a08112156122e3575f80fd5b8735965060208801356001600160401b0380821115612300575f80fd5b61230c8b838c01612286565b90985096508691506040603f1984011215612325575f80fd5b60408a01955060808a013592508083111561233e575f80fd5b505061234c89828a01612286565b979a9699509497509295939492505050565b5f806040838503121561236f575f80fd5b823561237a816120f2565b9150602083013561238a816120f2565b809150509250929050565b5f80604083850312156123a6575f80fd5b823563ffffffff8116811461237a575f80fd5b5f80604083850312156123ca575f80fd5b8235915060208301356001600160401b038111156123e6575f80fd5b6123f2858286016121a0565b9150509250929050565b5f6020828403121561240c575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124d3576124d361249d565b60405290565b60405160c081016001600160401b03811182821017156124d3576124d361249d565b60405161010081016001600160401b03811182821017156124d3576124d361249d565b604051601f8201601f191681016001600160401b03811182821017156125465761254661249d565b604052919050565b5f6040828403121561255e575f80fd5b6125666124b1565b90508135612573816120f2565b808252506020820135602082015292915050565b5f6001600160401b0382111561259f5761259f61249d565b5060051b60200190565b5f82601f8301126125b8575f80fd5b813560206125cd6125c883612587565b61251e565b8083825260208201915060208460051b8701019350868411156125ee575f80fd5b602086015b84811015612613578035612606816120f2565b83529183019183016125f3565b509695505050505050565b5f6001600160401b038211156126365761263661249d565b50601f01601f191660200190565b5f82601f830112612653575f80fd5b81356126616125c88261261e565b818152846020838601011115612675575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156126a1575f80fd5b6126a96124d9565b823581526126b960208401612106565b60208201526126cb366040850161254e565b60408201526080830135606082015260a08301356001600160401b03808211156126f3575f80fd5b6126ff368387016125a9565b608084015260c0850135915080821115612717575f80fd5b5061272436828601612644565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e1984360301811261278b575f80fd5b83016020810192503590506001600160401b038111156127a9575f80fd5b8060051b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f65781356127db816120f2565b6001600160a01b0316875295820195908201906001016127c8565b509495945050505050565b5f808335601e19843603018112612816575f80fd5b83016020810192503590506001600160401b03811115612834575f80fd5b8060061b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f657813587528282013561286c816120f2565b6001600160a01b0316878401526040968701969190910190600101612853565b5f808335601e198436030181126128a1575f80fd5b83016020810192503590506001600160401b038111156128bf575f80fd5b8036038213156122c6575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561290b816120f2565b6001600160a01b031660208501526040838101359085015261292f60608401612106565b6001600160a01b031660608501526080838101359085015261295460a0840184612776565b8260a087015261296783870182846127ba565b9250505061297860c0840184612801565b85830360c087015261298b838284612845565b9250505061299c60e084018461288c565b85830360e08701526120608382846128cd565b602081525f6108af60208301846128f5565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a1c60608301856128f5565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f5b83811015612a58578181015183820152602001612a40565b50505f910152565b5f8151808452612a77816020860160208601612a3e565b601f01601f19169290920160200192915050565b602081525f6108af6020830184612a60565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612b36565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612b81575f80fd5b6108af838361254e565b80516104ee816120f2565b5f82601f830112612ba5575f80fd5b8151612bb36125c88261261e565b818152846020838601011115612bc7575f80fd5b611222826020830160208701612a3e565b805180151581146104ee575f80fd5b5f8060408385031215612bf8575f80fd5b82516001600160401b0380821115612c0e575f80fd5b9084019060608287031215612c21575f80fd5b604051606081018181108382111715612c3c57612c3c61249d565b604052825181526020830151612c51816120f2565b6020820152604083015182811115612c67575f80fd5b612c7388828601612b96565b6040830152509350612c8a91505060208401612bd8565b90509250929050565b5f82601f830112612ca2575f80fd5b81516020612cb26125c883612587565b8083825260208201915060208460051b870101935086841115612cd3575f80fd5b602086015b84811015612613578051612ceb816120f2565b8352918301918301612cd8565b5f82601f830112612d07575f80fd5b81516020612d176125c883612587565b82815260069290921b84018101918181019086841115612d35575f80fd5b8286015b848110156126135760408189031215612d50575f80fd5b612d586124b1565b8151815284820151612d69816120f2565b81860152835291830191604001612d39565b5f60208284031215612d8b575f80fd5b81516001600160401b0380821115612da1575f80fd5b908301906101008286031215612db5575f80fd5b612dbd6124fb565b82518152612dcd60208401612b8b565b602082015260408301516040820152612de860608401612b8b565b60608201526080830151608082015260a083015182811115612e08575f80fd5b612e1487828601612c93565b60a08301525060c083015182811115612e2b575f80fd5b612e3787828601612cf8565b60c08301525060e083015182811115612e4e575f80fd5b612e5a87828601612b96565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b838110156127f65781516001600160a01b031687529582019590820190600101612e7c565b5f815180845260208085019450602084015f5b838110156127f657612eda878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612eb4565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f2b60608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f4d82860182612e69565b91505060c083015184820360c0860152612f678282612ea1565b91505060e083015184820360e0860152611a518282612a60565b6001600160a01b03831681526040602082018190525f9061122290830184612eed565b5f808335601e19843603018112612fb9575f80fd5b8301803591506001600160401b03821115612fd2575f80fd5b6020019150368190038213156122c6575f80fd5b8481526001600160a01b03841660208201526060604082018190525f9061206090830184866128cd565b818103818111156105fc576105fc612b36565b5f6001820161303457613034612b36565b5060010190565b602081525f6108af6020830184612eed565b606081525f612a1c6060830185612eed565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90611a5190830184612a60565b5f602082840312156130b8575f80fd5b6108af82612bd8565b5f82516130d2818460208701612a3e565b919091019291505056fea2646970667358221220fd03902031337abdc8de400f99ee880fd9e0f4a12687daaae4c9c3451e31d2f164736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b5060015f8190558055613112806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612111565b6104f3565b005b61015461018a36600461212c565b6105e6565b6101d961019d36600461212c565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e929190612143565b6101fa6101f536600461212c565b610602565b6040516001600160a01b03909116815260200161015e565b61015461022036600461212c565b5f9081526005602052604090205490565b61015461023f36600461216a565b610689565b61017a6102523660046121b7565b6106e2565b61015461026536600461212c565b60066020525f908152604090205481565b6102896102843660046121e8565b610885565b60405161015e9190612208565b61017a6102a4366004612228565b6108b6565b6101546102b736600461225d565b610aed565b6101546102ca3660046122cd565b610b2f565b6101fa6005600160991b0181565b6101546102eb36600461235e565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a610323366004612395565b610dc1565b61015460025481565b61015461033f36600461212c565b6111e3565b61038c61035236600461212c565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b936600461212c565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f436600461212c565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046123b9565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049691906123fc565b9050806104be5760405162461bcd60e51b81526004016104b590612413565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b59061245a565b60025f556106d86106bb83612691565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b59061245a565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612730565b5f8360405160200161079491906129af565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906129c1565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612a0a565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a908490600401612a8b565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a91906123fc565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b59061245a565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b590612a9d565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612ae2565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612730565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612b4a565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b59061245a565b60025f818155905490866001600160401b03811115610b7257610b7261249d565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612b5d565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612b5d565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612b71565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b590612a9d565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612be7565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612d7b565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611a5a565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611ac6565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612b5d565b6020026020010151611b36565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611c5a565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612f81565b60405180910390a460e084015151156111d5576111d582875f015186611cb4565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b590612413565b5f60035460016112159190612b4a565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b590612a9d565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612730565b80836040516020016112b791906129af565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906129c1565b5f6112fb6080850160608601612111565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612111565b6113cb60e0870187612fa4565b6040516024016113de9493929190612fe6565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612111565b5a84611de3565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611dfa565b505050565b805460018201545f916105fc91613010565b60605f611520600561151b856114f8565b611e5b565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b038111156115855761158561249d565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611e70565b8282815181106115f1576115f1612b5d565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f90613023565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac919061303b565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612ae2565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b6908890869061304d565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e8908690600401612a8b565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182891906123fc565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612b4a565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196291906123fc565b90506119796001600160a01b038516333086611f3a565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e191906123fc565b9050818111611a475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611a518282613010565b95945050505050565b5f81515f03611a6b575060016105fc565b81515f5b81811015611abc57846001600160a01b0316848281518110611a9357611a93612b5d565b60200260200101516001600160a01b031603611ab4576001925050506105fc565b600101611a6f565b505f949350505050565b805f03611b255760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f611b458484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b9b575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c01908490612b4a565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c4b919061305f565b60405180910390a45050505050565b600182018054829160028501915f9182611c7383613023565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d165760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611d36576114f3838383611f79565b602081015160e08201516040515f92611d5392869260240161307f565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d97919084611de3565b905080611db057611da9858585611f79565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611e0e6001600160a01b03841683611fed565b905080515f14158015611e32575080806020019051810190611e3091906130a8565b155b156114f357604051635274afe760e01b81526001600160a01b03841660048201526024016104b5565b5f818310611e6957816108af565b5090919050565b604080518082019091525f808252602082015281546001830154819003611ed95760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f30908390612b4a565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611f739186918216906323b872dd906084016114c1565b50505050565b80604051602001611f8a919061303b565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fe090859061303b565b60405180910390a3505050565b60606108af83835f845f80856001600160a01b0316848660405161201191906130c1565b5f6040518083038185875af1925050503d805f811461204b576040519150601f19603f3d011682016040523d82523d5f602084013e612050565b606091505b509150915061206086838361206a565b9695505050505050565b60608261207f5761207a826120c6565b6108af565b815115801561209657506001600160a01b0384163b155b156120bf57604051639996b31560e01b81526001600160a01b03851660048201526024016104b5565b50806108af565b8051156120d65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146120ef575f80fd5b80356104ee816120f2565b5f60208284031215612121575f80fd5b81356108af816120f2565b5f6020828403121561213c575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f6020828403121561217a575f80fd5b81356001600160401b0381111561218f575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156121b1575f80fd5b50919050565b5f602082840312156121c7575f80fd5b81356001600160401b038111156121dc575f80fd5b611222848285016121a0565b5f80604083850312156121f9575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f6060848603121561223a575f80fd5b83359250602084013561224c816120f2565b929592945050506040919091013590565b5f805f6060848603121561226f575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612296575f80fd5b5081356001600160401b038111156122ac575f80fd5b6020830191508360208260051b85010111156122c6575f80fd5b9250929050565b5f805f805f8086880360a08112156122e3575f80fd5b8735965060208801356001600160401b0380821115612300575f80fd5b61230c8b838c01612286565b90985096508691506040603f1984011215612325575f80fd5b60408a01955060808a013592508083111561233e575f80fd5b505061234c89828a01612286565b979a9699509497509295939492505050565b5f806040838503121561236f575f80fd5b823561237a816120f2565b9150602083013561238a816120f2565b809150509250929050565b5f80604083850312156123a6575f80fd5b823563ffffffff8116811461237a575f80fd5b5f80604083850312156123ca575f80fd5b8235915060208301356001600160401b038111156123e6575f80fd5b6123f2858286016121a0565b9150509250929050565b5f6020828403121561240c575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124d3576124d361249d565b60405290565b60405160c081016001600160401b03811182821017156124d3576124d361249d565b60405161010081016001600160401b03811182821017156124d3576124d361249d565b604051601f8201601f191681016001600160401b03811182821017156125465761254661249d565b604052919050565b5f6040828403121561255e575f80fd5b6125666124b1565b90508135612573816120f2565b808252506020820135602082015292915050565b5f6001600160401b0382111561259f5761259f61249d565b5060051b60200190565b5f82601f8301126125b8575f80fd5b813560206125cd6125c883612587565b61251e565b8083825260208201915060208460051b8701019350868411156125ee575f80fd5b602086015b84811015612613578035612606816120f2565b83529183019183016125f3565b509695505050505050565b5f6001600160401b038211156126365761263661249d565b50601f01601f191660200190565b5f82601f830112612653575f80fd5b81356126616125c88261261e565b818152846020838601011115612675575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156126a1575f80fd5b6126a96124d9565b823581526126b960208401612106565b60208201526126cb366040850161254e565b60408201526080830135606082015260a08301356001600160401b03808211156126f3575f80fd5b6126ff368387016125a9565b608084015260c0850135915080821115612717575f80fd5b5061272436828601612644565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e1984360301811261278b575f80fd5b83016020810192503590506001600160401b038111156127a9575f80fd5b8060051b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f65781356127db816120f2565b6001600160a01b0316875295820195908201906001016127c8565b509495945050505050565b5f808335601e19843603018112612816575f80fd5b83016020810192503590506001600160401b03811115612834575f80fd5b8060061b36038213156122c6575f80fd5b8183525f60208085019450825f5b858110156127f657813587528282013561286c816120f2565b6001600160a01b0316878401526040968701969190910190600101612853565b5f808335601e198436030181126128a1575f80fd5b83016020810192503590506001600160401b038111156128bf575f80fd5b8036038213156122c6575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561290b816120f2565b6001600160a01b031660208501526040838101359085015261292f60608401612106565b6001600160a01b031660608501526080838101359085015261295460a0840184612776565b8260a087015261296783870182846127ba565b9250505061297860c0840184612801565b85830360c087015261298b838284612845565b9250505061299c60e084018461288c565b85830360e08701526120608382846128cd565b602081525f6108af60208301846128f5565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a1c60608301856128f5565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f5b83811015612a58578181015183820152602001612a40565b50505f910152565b5f8151808452612a77816020860160208601612a3e565b601f01601f19169290920160200192915050565b602081525f6108af6020830184612a60565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612b36565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612b81575f80fd5b6108af838361254e565b80516104ee816120f2565b5f82601f830112612ba5575f80fd5b8151612bb36125c88261261e565b818152846020838601011115612bc7575f80fd5b611222826020830160208701612a3e565b805180151581146104ee575f80fd5b5f8060408385031215612bf8575f80fd5b82516001600160401b0380821115612c0e575f80fd5b9084019060608287031215612c21575f80fd5b604051606081018181108382111715612c3c57612c3c61249d565b604052825181526020830151612c51816120f2565b6020820152604083015182811115612c67575f80fd5b612c7388828601612b96565b6040830152509350612c8a91505060208401612bd8565b90509250929050565b5f82601f830112612ca2575f80fd5b81516020612cb26125c883612587565b8083825260208201915060208460051b870101935086841115612cd3575f80fd5b602086015b84811015612613578051612ceb816120f2565b8352918301918301612cd8565b5f82601f830112612d07575f80fd5b81516020612d176125c883612587565b82815260069290921b84018101918181019086841115612d35575f80fd5b8286015b848110156126135760408189031215612d50575f80fd5b612d586124b1565b8151815284820151612d69816120f2565b81860152835291830191604001612d39565b5f60208284031215612d8b575f80fd5b81516001600160401b0380821115612da1575f80fd5b908301906101008286031215612db5575f80fd5b612dbd6124fb565b82518152612dcd60208401612b8b565b602082015260408301516040820152612de860608401612b8b565b60608201526080830151608082015260a083015182811115612e08575f80fd5b612e1487828601612c93565b60a08301525060c083015182811115612e2b575f80fd5b612e3787828601612cf8565b60c08301525060e083015182811115612e4e575f80fd5b612e5a87828601612b96565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b838110156127f65781516001600160a01b031687529582019590820190600101612e7c565b5f815180845260208085019450602084015f5b838110156127f657612eda878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612eb4565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f2b60608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f4d82860182612e69565b91505060c083015184820360c0860152612f678282612ea1565b91505060e083015184820360e0860152611a518282612a60565b6001600160a01b03831681526040602082018190525f9061122290830184612eed565b5f808335601e19843603018112612fb9575f80fd5b8301803591506001600160401b03821115612fd2575f80fd5b6020019150368190038213156122c6575f80fd5b8481526001600160a01b03841660208201526060604082018190525f9061206090830184866128cd565b818103818111156105fc576105fc612b36565b5f6001820161303457613034612b36565b5060010190565b602081525f6108af6020830184612eed565b606081525f612a1c6060830185612eed565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90611a5190830184612a60565b5f602082840312156130b8575f80fd5b6108af82612bd8565b5f82516130d2818460208701612a3e565b919091019291505056fea264697066735822122087ddcaedb7bd675b71bab7b1ee470df4c6055cd1514a541ea44fddf8be84ed1a64736f6c63430008190033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go index 4d2e5d80c..600eb0a3c 100644 --- a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go @@ -38,7 +38,7 @@ type ProtocolRegistryEntry struct { // TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. var TeleporterRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561000f575f80fd5b50604051610fe0380380610fe083398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610ab561052b5f395f818161014301526102580152610ab55ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061099e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a17565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a17565b5f546106656101f482610a60565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b5f5b81811015610974578581018301518582018401528201610959565b505f8282860101525082604083015281955061099181880161088b565b9450505050509250929050565b5f8082840360608112156109b0575f80fd5b60408112156109bd575f80fd5b506040516040810181811067ffffffffffffffff821117156109e1576109e161081d565b6040528351815260208401516109f6816107eb565b60208201526040840151909250610a0c816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d834a6d51f424d8a88e00a9517be4131ff5dd55e9fa58841c7ed9b321be4b52a64736f6c63430008190033", + Bin: "0x60a060405234801561000f575f80fd5b50604051610fe0380380610fe083398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610ab561052b5f395f818161014301526102580152610ab55ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061099e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a17565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a17565b5f546106656101f482610a60565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b5f5b81811015610974578581018301518582018401528201610959565b505f8282860101525082604083015281955061099181880161088b565b9450505050509250929050565b5f8082840360608112156109b0575f80fd5b60408112156109bd575f80fd5b506040516040810181811067ffffffffffffffff821117156109e1576109e161081d565b6040528351815260208401516109f6816107eb565b60208201526040840151909250610a0c816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea264697066735822122024f5bd7b9486860d5ec37bfc975cd8b866a1d68a8296b1a76f810972a0bc594864736f6c63430008190033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go index 1b7e3b5fc..3d34deabd 100644 --- a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go +++ b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go @@ -32,7 +32,7 @@ var ( // TestMessengerMetaData contains all meta data concerning the TestMessenger contract. var TestMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ReceiveMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getCurrentMessage\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161201f38038061201f83398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611fff833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611fff83398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b6119748061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e5780639731429714610159578063b33fead41461017c578063c868efaa1461019d578063d2cc7a70146101b0578063f2fde38b146101d7578063f63d09d7146101ea575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610137575b5f80fd5b6100c86100c3366004611335565b6101fd565b005b6100c86100d8366004611335565b6102ff565b6100c86100eb366004611350565b6103ee565b6100c8610402565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014b5f8051602061191f83398151915281565b60405190815260200161012e565b61016c610167366004611335565b610415565b604051901515815260200161012e565b61018f61018a366004611350565b610435565b60405161012e9291906113b4565b6100c86101ab366004611424565b610507565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d025461014b565b6100c86101e5366004611335565b6106e5565b61014b6101f836600461147c565b61071f565b5f8051602061191f83398151915261021361087b565b6001600160a01b0382166102425760405162461bcd60e51b8152600401610239906114fc565b60405180910390fd5b61024c8183610883565b156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610239565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061191f83398151915261031561087b565b6001600160a01b03821661033b5760405162461bcd60e51b8152600401610239906114fc565b6103458183610883565b6103a35760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610239565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103f661087b565b6103ff816108a7565b50565b61040a610a3f565b6104135f610a9a565b565b5f5f8051602061191f83398151915261042e8184610883565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104729061154a565b80601f016020809104026020016040519081016040528092919081815260200182805461049e9061154a565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b61050f610b0a565b5f5f8051602061191f83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e9190611582565b10156106055760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610239565b61060f8133610883565b156106755760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610239565b6106b5858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b5492505050565b506106df60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6106ed610a3f565b6001600160a01b03811661071657604051631e4fbdf760e01b81525f6004820152602401610239565b6103ff81610a9a565b5f610728610b0a565b5f851561073c576107398787610c09565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca898489898960405161077e9594939291906115c1565b60405180910390a36108446040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107eb576107eb6115ee565b604051908082528060200260200182016040528015610814578160200160208202803683370190505b508152602001868660405160200161082d929190611602565b604051602081830303815290604052815250610d6b565b91505061087060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610413610a3f565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f8051602061191f83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611582565b6002830154909150818411156109915760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610239565b808411610a065760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610239565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a717f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104135760405163118cdaa760e01b8152336004820152602401610239565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b4e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b699190611615565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610bbd90826116fd565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bfb91906117bd565b60405180910390a350505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c739190611582565b9050610c8a6001600160a01b038516333086610e86565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf29190611582565b9050818111610d585760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610239565b610d6282826117e3565b95945050505050565b5f80610d75610eed565b60408401516020015190915015610e1a576040830151516001600160a01b0316610df75760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610239565b604083015160208101519051610e1a916001600160a01b03909116908390610fdd565b604051630624488560e41b81526001600160a01b03821690636244885090610e46908690600401611839565b6020604051808303815f875af1158015610e62573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e9190611582565b6040516001600160a01b0384811660248301528381166044830152606482018390526106df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611064565b5f8051602061191f83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b91906118b6565b9050610f778282610883565b156108a15760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610239565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104e9190611582565b90506106df848461105f85856118d1565b6110ca565b5f6110786001600160a01b03841683611159565b905080515f1415801561109c57508080602001905181019061109a91906118e4565b155b156110c557604051635274afe760e01b81526001600160a01b0384166004820152602401610239565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261111b8482611166565b6106df576040516001600160a01b0384811660248301525f604483015261114f91869182169063095ea7b390606401610ebb565b6106df8482611064565b606061042e83835f611203565b5f805f846001600160a01b0316846040516111819190611903565b5f604051808303815f865af19150503d805f81146111ba576040519150601f19603f3d011682016040523d82523d5f602084013e6111bf565b606091505b50915091508180156111e95750805115806111e95750808060200190518101906111e991906118e4565b8015610d625750505050506001600160a01b03163b151590565b6060814710156112285760405163cd78605960e01b8152306004820152602401610239565b5f80856001600160a01b031684866040516112439190611903565b5f6040518083038185875af1925050503d805f811461127d576040519150601f19603f3d011682016040523d82523d5f602084013e611282565b606091505b509150915061129286838361129c565b9695505050505050565b6060826112b1576112ac826112f8565b61042e565b81511580156112c857506001600160a01b0384163b155b156112f157604051639996b31560e01b81526001600160a01b0385166004820152602401610239565b508061042e565b8051156113085780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103ff575f80fd5b5f60208284031215611345575f80fd5b813561042e81611321565b5f60208284031215611360575f80fd5b5035919050565b5f5b83811015611381578181015183820152602001611369565b50505f910152565b5f81518084526113a0816020860160208601611367565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190525f906113d790830184611389565b949350505050565b5f8083601f8401126113ef575f80fd5b50813567ffffffffffffffff811115611406575f80fd5b60208301915083602082850101111561141d575f80fd5b9250929050565b5f805f8060608587031215611437575f80fd5b84359350602085013561144981611321565b9250604085013567ffffffffffffffff811115611464575f80fd5b611470878288016113df565b95989497509550505050565b5f805f805f805f60c0888a031215611492575f80fd5b8735965060208801356114a481611321565b955060408801356114b481611321565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114dd575f80fd5b6114e98a828b016113df565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061155e57607f821691505b60208210810361157c57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611592575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f610870608083018486611599565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113d7602083018486611599565b5f60208284031215611625575f80fd5b815167ffffffffffffffff8082111561163c575f80fd5b818401915084601f83011261164f575f80fd5b815181811115611661576116616115ee565b604051601f8201601f19908116603f01168101908382118183101715611689576116896115ee565b816040528281528760208487010111156116a1575f80fd5b610870836020830160208801611367565b601f8211156110c557805f5260205f20601f840160051c810160208510156116d75750805b601f840160051c820191505b818110156116f6575f81556001016116e3565b5050505050565b815167ffffffffffffffff811115611717576117176115ee565b61172b81611725845461154a565b846116b2565b602080601f83116001811461175e575f84156117475750858301515b5f19600386901b1c1916600185901b1785556117b5565b5f85815260208120601f198616915b8281101561178c5788860151825594840194600190910190840161176d565b50858210156117a957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f61042e6020830184611389565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a1576108a16117cf565b5f815180845260208085019450602084015f5b8381101561182e5781516001600160a01b031687529582019590820190600101611809565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526118996101008401826117f6565b905060a0840151601f198483030160e0850152610d628282611389565b5f602082840312156118c6575f80fd5b815161042e81611321565b808201808211156108a1576108a16117cf565b5f602082840312156118f4575f80fd5b8151801515811461042e575f80fd5b5f8251611914818460208701611367565b919091019291505056fede77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212205c2207a0ee4c1d8f78cf59b9c0781b988596a0fdf60206309e09e794973338db64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", + Bin: "0x608060405234801561000f575f80fd5b5060405161201f38038061201f83398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611fff833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611fff83398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b6119748061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e5780639731429714610159578063b33fead41461017c578063c868efaa1461019d578063d2cc7a70146101b0578063f2fde38b146101d7578063f63d09d7146101ea575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610137575b5f80fd5b6100c86100c3366004611335565b6101fd565b005b6100c86100d8366004611335565b6102ff565b6100c86100eb366004611350565b6103ee565b6100c8610402565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014b5f8051602061191f83398151915281565b60405190815260200161012e565b61016c610167366004611335565b610415565b604051901515815260200161012e565b61018f61018a366004611350565b610435565b60405161012e9291906113b4565b6100c86101ab366004611424565b610507565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d025461014b565b6100c86101e5366004611335565b6106e5565b61014b6101f836600461147c565b61071f565b5f8051602061191f83398151915261021361087b565b6001600160a01b0382166102425760405162461bcd60e51b8152600401610239906114fc565b60405180910390fd5b61024c8183610883565b156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610239565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061191f83398151915261031561087b565b6001600160a01b03821661033b5760405162461bcd60e51b8152600401610239906114fc565b6103458183610883565b6103a35760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610239565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103f661087b565b6103ff816108a7565b50565b61040a610a3f565b6104135f610a9a565b565b5f5f8051602061191f83398151915261042e8184610883565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104729061154a565b80601f016020809104026020016040519081016040528092919081815260200182805461049e9061154a565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b61050f610b0a565b5f5f8051602061191f83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e9190611582565b10156106055760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610239565b61060f8133610883565b156106755760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610239565b6106b5858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b5492505050565b506106df60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6106ed610a3f565b6001600160a01b03811661071657604051631e4fbdf760e01b81525f6004820152602401610239565b6103ff81610a9a565b5f610728610b0a565b5f851561073c576107398787610c09565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca898489898960405161077e9594939291906115c1565b60405180910390a36108446040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107eb576107eb6115ee565b604051908082528060200260200182016040528015610814578160200160208202803683370190505b508152602001868660405160200161082d929190611602565b604051602081830303815290604052815250610d6b565b91505061087060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610413610a3f565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f8051602061191f83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611582565b6002830154909150818411156109915760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610239565b808411610a065760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610239565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a717f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104135760405163118cdaa760e01b8152336004820152602401610239565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b4e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b699190611615565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610bbd90826116fd565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bfb91906117bd565b60405180910390a350505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c739190611582565b9050610c8a6001600160a01b038516333086610e86565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf29190611582565b9050818111610d585760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610239565b610d6282826117e3565b95945050505050565b5f80610d75610eed565b60408401516020015190915015610e1a576040830151516001600160a01b0316610df75760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610239565b604083015160208101519051610e1a916001600160a01b03909116908390610fdd565b604051630624488560e41b81526001600160a01b03821690636244885090610e46908690600401611839565b6020604051808303815f875af1158015610e62573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e9190611582565b6040516001600160a01b0384811660248301528381166044830152606482018390526106df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611064565b5f8051602061191f83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b91906118b6565b9050610f778282610883565b156108a15760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610239565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104e9190611582565b90506106df848461105f85856118d1565b6110ca565b5f6110786001600160a01b03841683611159565b905080515f1415801561109c57508080602001905181019061109a91906118e4565b155b156110c557604051635274afe760e01b81526001600160a01b0384166004820152602401610239565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261111b8482611166565b6106df576040516001600160a01b0384811660248301525f604483015261114f91869182169063095ea7b390606401610ebb565b6106df8482611064565b606061042e83835f611203565b5f805f846001600160a01b0316846040516111819190611903565b5f604051808303815f865af19150503d805f81146111ba576040519150601f19603f3d011682016040523d82523d5f602084013e6111bf565b606091505b50915091508180156111e95750805115806111e95750808060200190518101906111e991906118e4565b8015610d625750505050506001600160a01b03163b151590565b6060814710156112285760405163cd78605960e01b8152306004820152602401610239565b5f80856001600160a01b031684866040516112439190611903565b5f6040518083038185875af1925050503d805f811461127d576040519150601f19603f3d011682016040523d82523d5f602084013e611282565b606091505b509150915061129286838361129c565b9695505050505050565b6060826112b1576112ac826112f8565b61042e565b81511580156112c857506001600160a01b0384163b155b156112f157604051639996b31560e01b81526001600160a01b0385166004820152602401610239565b508061042e565b8051156113085780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103ff575f80fd5b5f60208284031215611345575f80fd5b813561042e81611321565b5f60208284031215611360575f80fd5b5035919050565b5f5b83811015611381578181015183820152602001611369565b50505f910152565b5f81518084526113a0816020860160208601611367565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190525f906113d790830184611389565b949350505050565b5f8083601f8401126113ef575f80fd5b50813567ffffffffffffffff811115611406575f80fd5b60208301915083602082850101111561141d575f80fd5b9250929050565b5f805f8060608587031215611437575f80fd5b84359350602085013561144981611321565b9250604085013567ffffffffffffffff811115611464575f80fd5b611470878288016113df565b95989497509550505050565b5f805f805f805f60c0888a031215611492575f80fd5b8735965060208801356114a481611321565b955060408801356114b481611321565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114dd575f80fd5b6114e98a828b016113df565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061155e57607f821691505b60208210810361157c57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611592575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f610870608083018486611599565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113d7602083018486611599565b5f60208284031215611625575f80fd5b815167ffffffffffffffff8082111561163c575f80fd5b818401915084601f83011261164f575f80fd5b815181811115611661576116616115ee565b604051601f8201601f19908116603f01168101908382118183101715611689576116896115ee565b816040528281528760208487010111156116a1575f80fd5b610870836020830160208801611367565b601f8211156110c557805f5260205f20601f840160051c810160208510156116d75750805b601f840160051c820191505b818110156116f6575f81556001016116e3565b5050505050565b815167ffffffffffffffff811115611717576117176115ee565b61172b81611725845461154a565b846116b2565b602080601f83116001811461175e575f84156117475750858301515b5f19600386901b1c1916600185901b1785556117b5565b5f85815260208120601f198616915b8281101561178c5788860151825594840194600190910190840161176d565b50858210156117a957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f61042e6020830184611389565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a1576108a16117cf565b5f815180845260208085019450602084015f5b8381101561182e5781516001600160a01b031687529582019590820190600101611809565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526118996101008401826117f6565b905060a0840151601f198483030160e0850152610d628282611389565b5f602082840312156118c6575f80fd5b815161042e81611321565b808201808211156108a1576108a16117cf565b5f602082840312156118f4575f80fd5b8151801515811461042e575f80fd5b5f8251611914818460208701611367565b919091019291505056fede77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a264697066735822122062c7fe56aa0838e3bd8ac3be0c2f4d605d6e43ecab438ff676691d4dd089ae3c64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // TestMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 9cba8444d..42cf86d0c 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -103,7 +103,7 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615cd0380380615cd083398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615b838061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c806380dd672f11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b806380dd672f1461037f5780638280a25a1461039257806393e245981461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360ad77841161016557806360ad77841461032c578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee57806360305d621461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b610317601481565b60405163ffffffff909116815260200161023f565b61021461033a366004614c65565b610f4f565b61030161034d366004614d2b565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b61021461038d366004614c65565b61129d565b610231603081565b6102146103a8366004614c00565b6114e2565b6103016103bb366004614d46565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615aae83398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615ace83398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614ddb565b6102946202a30081565b6103015f80516020615a8e83398151915281565b61021461049b366004614e6f565b611cc5565b6103016104ae366004614ead565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b2e8339815191526020526040808220815160e0810190925280545f80516020615ace83398151915293929190829060ff16600581111561053557610535614d66565b600581111561054657610546614d66565b815260200160018201805461055a90614f18565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f18565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d66565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190615059565b6040518263ffffffff1660e01b8152600401610729919061508a565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610769919061509c565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615ace8339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610833919061509c565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150b3565b6001600160a01b0316146108b05761088b60608401604085016150b3565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150ce565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150ce565b8363ffffffff168181106108f7576108f7615113565b90506020028101906109099190615127565b61091290615192565b80516040519192505f91600888019161092a9161520d565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da919060040161508a565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a39161520d565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e1919061509c565b90508086600801835f01516040516109f9919061520d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d66565b021790555060208201516001820190610a949082615262565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b39911685615331565b8251604051919550610b4a9161520d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f90615344565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff1683615366565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c30919061508a565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f919061509c565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154a8565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea9190810190615059565b90505f600282604051610cfd919061520d565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b919061509c565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d66565b14610dea578060405163170cc93360e21b81526004016104da9190614f50565b61076983836122a8565b5f805f80516020615aae83398151915260030154610e129084615533565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615aae8339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d66565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b0e83398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b0e83398151915255565b949350505050565b5f8281525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff166003811115610f9c57610f9c614d66565b6003811115610fad57610fad614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d66565b1461105b578251604051633b0d540d60e21b81526104da9190600401615552565b60048151600581111561107057611070614d66565b036110865761107e86612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab89612157565b604001516040518263ffffffff1660e01b81526004016110cb919061508a565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a919061556c565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b038416615366565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b6112a561277a565b5f8281525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff1660038111156112f2576112f2614d66565b600381111561130357611303614d66565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561137c5761137c614d66565b1461139d578051604051633b0d540d60e21b81526104da9190600401615552565b60046113ac8260400151611b76565b5160058111156113be576113be614d66565b146114bd575f6113cd84612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b815260040161140c919061508a565b606060405180830381865af4158015611427573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144b919061556c565b5091509150818460400151146114775760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b031611156114b957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b6114c684612de9565b50506114de60015f80516020615b0e83398151915255565b5050565b5f80516020615aae8339815191525f6114fa83611b76565b519050600481600581111561151157611511614d66565b14611531578060405163170cc93360e21b81526004016104da9190614f50565b5f8381526005830160205260409020546001600160a01b0316331461157757335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b0e83398151915255565b5f80516020615ace8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c919061508a565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155ac565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f18565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d66565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff16600381111561181b5761181b614d66565b600381111561182c5761182c614d66565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d66565b141580156118c657506003815160038111156118c3576118c3614d66565b14155b156118e7578051604051633b0d540d60e21b81526104da9190600401615552565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d69190810190615059565b6040518263ffffffff1660e01b81526004016119f2919061508a565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a32919061509c565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615ace8339815191529190611a8090614f18565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d66565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155cf565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e3919061509c565b611b7e614b4b565b5f8281525f80516020615b2e833981519152602052604090819020815160e0810190925280545f80516020615ace833981519152929190829060ff166005811115611bcb57611bcb614d66565b6005811115611bdc57611bdc614d66565b8152602001600182018054611bf090614f18565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f18565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615ace833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615659565b90815260200160405180910390205491505092915050565b5f8381525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae8339815191529284929091829060ff166003811115611e4d57611e4d614d66565b6003811115611e5e57611e5e614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d66565b14611f0c578251604051633b0d540d60e21b81526104da9190600401615552565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f455733611552565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615668565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d66565b036120eb5760028401546080840151611fdf916001600160401b031690615668565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e9184916120599190615688565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d66565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f50565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156a8565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156a8565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a3919061509c565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b8152600401612442919061508a565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615738565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615aae833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615aae833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e65733611552565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615668565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612744919061509c565b905080846008015f8a81526020019081526020015f205f8282546127689190615331565b90915550501515979650505050505050565b5f80516020615b0e8339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615ace8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d919061508a565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155ac565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d66565b60058111156128b4576128b4614d66565b81526020016001820180546128c890614f18565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f18565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d66565b141580156129cb57506001815160058111156129c8576129c8614d66565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f50565b600381516005811115612a0157612a01614d66565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a919061520d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d66565b021790555060208201516001820190612a879082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d66565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615a8e83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615a8e833981519152546114de906001600160a01b03168383613987565b60015f80516020615b0e83398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615aae83398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff166003811115612e3657612e36614d66565b6003811115612e4757612e47614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615668565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff1685615366565b612f9e9190615533565b915081866008015f8681526020019081526020015f205f828254612fc29190615331565b90915550612fd29050828461575b565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615aae8339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d66565b146130c657805160405163170cc93360e21b81526104da9190600401614f50565b5f8282608001516130d79190615668565b905083600201600a9054906101000a90046001600160401b03168260400151613100919061576e565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d66565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6114de816140b0565b5f8281525f80516020615b2e833981519152602052604081206002015481905f80516020615ace83398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134519190810190615059565b6040518263ffffffff1660e01b815260040161346d919061508a565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad919061509c565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615aae83398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d66565b148061355c575060048251600581111561355a5761355a614d66565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d66565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f50565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a919061509c565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b2e8339815191526020526040808220815160e0810190925280545f80516020615ace83398151915293929190829060ff1660058111156136f8576136f8614d66565b600581111561370957613709614d66565b815260200160018201805461371d90614f18565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f18565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d66565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d66565b0217905550602082015160018201906138929082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615a8e833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615ace83398151915242613a6c6060860160408701614d2b565b6001600160401b0316111580613aa65750613a8a6202a30042615331565b613a9a6060860160408701614d2b565b6001600160401b031610155b15613ae057613abb6060850160408601614d2b565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af06060860186615799565b61456a565b613b05613af06080860186615799565b6030613b1460208601866157ad565b905014613b4657613b2860208501856157ad565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157ad565b90505f03613b7d57613b6284806157ad565b604051633e08a12560e11b81526004016104da9291906157ef565b5f60088201613b8c86806157ad565b604051613b9a929190615659565b90815260200160405180910390205414613bd357613bb884806157ad565b60405163a41f772f60e01b81526004016104da9291906157ef565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d2b565b6001600160401b03168152602001613cc660608b018b615799565b613ccf90615802565b8152602001613ce160808b018b615799565b613cea90615802565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d189190615924565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d5991908101906159db565b5f82815260068601602052604090209193509150613d778282615262565b508160088401613d8788806157ad565b604051613d95929190615659565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd190859060040161508a565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e11919061509c565b6040805160e081019091529091508060018152602001613e3189806157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d66565b021790555060208201516001820190613ed99082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157ad565b604051613f85929190615659565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d2b565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d2b565b61408260e0860160c08701615a1e565b614093610100870160e08801615a37565b6101008701356140ab61014089016101208a016150b3565b6146fc565b6140b8613ff1565b5f80516020615a8e8339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615ace8339815191525f6001600160401b03808416908516111561414c576141458385615688565b9050614159565b6141568484615688565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b031690615331565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615668565b6001600160401b03169052505b606081015161421090606461576e565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff16615366565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b0316816040018181516142869190615331565b9052506040810180516001600160401b03871691906142a690839061575b565b905250600184015460408201516064916142cb91600160401b90910460ff1690615366565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b2e8339815191526020526040812060020180545f80516020615ace833981519152919060089061438590600160401b90046001600160401b0316615a57565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a72565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b919061509c565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa919061509c565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a828261575b565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150ce565b151590505b156145de576145a96020820182614c86565b6145b660208301836150ce565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150ce565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150ce565b90508110156114de5761463960208301836150ce565b61464460018461575b565b81811061465357614653615113565b905060200201602081019061466891906150b3565b6001600160a01b031661467e60208401846150ce565b8381811061468e5761468e615113565b90506020020160208101906146a391906150b3565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615aae83398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615ace83398151915290815560146149336060840160408501615a37565b60ff161180614952575061494d6060830160408401615a37565b60ff16155b15614986576149676060830160408401615a37565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a37565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d2b565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a36919061520d565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f18565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f60208284031215614d3b575f80fd5b813561215081614cb0565b5f8060408385031215614d57575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614d8a57614d8a614d66565b9052565b5f5b83811015614da8578181015183820152602001614d90565b50505f910152565b5f8151808452614dc7816020860160208601614d8e565b601f01601f19169290920160200192915050565b60208152614ded602082018351614d7a565b5f602083015160e06040840152614e08610100840182614db0565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614e82575f80fd5b61014080821215614e91575f80fd5b8493508301359050614ea281614e5b565b809150509250929050565b5f8060208385031215614ebe575f80fd5b82356001600160401b0380821115614ed4575f80fd5b818501915085601f830112614ee7575f80fd5b813581811115614ef5575f80fd5b866020828501011115614f06575f80fd5b60209290920196919550909350505050565b600181811c90821680614f2c57607f821691505b602082108103614f4a57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614d7a565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614f9457614f94614f5e565b60405290565b604080519081016001600160401b0381118282101715614f9457614f94614f5e565b604051601f8201601f191681016001600160401b0381118282101715614fe457614fe4614f5e565b604052919050565b5f6001600160401b0382111561500457615004614f5e565b50601f01601f191660200190565b5f82601f830112615021575f80fd5b815161503461502f82614fec565b614fbc565b818152846020838601011115615048575f80fd5b610f47826020830160208701614d8e565b5f60208284031215615069575f80fd5b81516001600160401b0381111561507e575f80fd5b610f4784828501615012565b602081525f6121506020830184614db0565b5f602082840312156150ac575f80fd5b5051919050565b5f602082840312156150c3575f80fd5b813561215081614e5b565b5f808335601e198436030181126150e3575f80fd5b8301803591506001600160401b038211156150fc575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261513b575f80fd5b9190910192915050565b5f82601f830112615154575f80fd5b813561516261502f82614fec565b818152846020838601011115615176575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151a2575f80fd5b6151aa614f72565b82356001600160401b03808211156151c0575f80fd5b6151cc36838701615145565b835260208501359150808211156151e1575f80fd5b506151ee36828601615145565b602083015250604083013561520281614cb0565b604082015292915050565b5f825161513b818460208701614d8e565b601f8211156104e357805f5260205f20601f840160051c810160208510156152435750805b601f840160051c820191505b81811015611a32575f815560010161524f565b81516001600160401b0381111561527b5761527b614f5e565b61528f816152898454614f18565b8461521e565b602080601f8311600181146152c2575f84156152ab5750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b828110156152f0578886015182559484019460019091019084016152d1565b508582101561530d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e4861531d565b5f63ffffffff80831681810361535c5761535c61531d565b6001019392505050565b8082028115828204841417610e4857610e4861531d565b5f808335601e19843603018112615392575f80fd5b83016020810192503590506001600160401b038111156153b0575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561549b57848303601f19018952813536889003605e19018112615422575f80fd5b87016060615430828061537d565b82875261544083880182846153be565b925050506154508683018361537d565b868303888801526154628382846153be565b92505050604080830135925061547783614cb0565b6001600160401b0392909216949091019390935297830197908301906001016153fd565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154cc81614e5b565b6001600160a01b031660608381019190915283013536849003601e190181126154f3575f80fd5b83016020810190356001600160401b0381111561550e575f80fd5b8060051b360382131561551f575f80fd5b60808085015261369a60a0850182846153e6565b5f8261554d57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061556657615566614d66565b91905290565b5f805f6060848603121561557e575f80fd5b83519250602084015161559081614cb0565b60408501519092506155a181614cb0565b809150509250925092565b5f80604083850312156155bd575f80fd5b825191506020830151614ea281614ba0565b5f60208083525f84546155e181614f18565b806020870152604060018084165f8114615602576001811461561e5761564b565b60ff19851660408a0152604084151560051b8a0101955061564b565b895f5260205f205f5b858110156156425781548b8201860152908301908801615627565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156122665761226661531d565b6001600160401b038281168282160390808211156122665761226661531d565b5f80604083850312156156b9575f80fd5b82516001600160401b03808211156156cf575f80fd5b90840190606082870312156156e2575f80fd5b6156ea614f72565b8251815260208301516156fc81614e5b565b6020820152604083015182811115615712575f80fd5b61571e88828601615012565b6040830152508094505050506020830151614ea281614ba0565b5f8060408385031215615749575f80fd5b825191506020830151614ea281614cb0565b81810381811115610e4857610e4861531d565b6001600160401b038181168382160280821691908281146157915761579161531d565b505092915050565b5f8235603e1983360301811261513b575f80fd5b5f808335601e198436030181126157c2575f80fd5b8301803591506001600160401b038211156157db575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153be565b5f60408236031215615812575f80fd5b61581a614f9a565b61582383614bad565b81526020808401356001600160401b038082111561583f575f80fd5b9085019036601f830112615851575f80fd5b81358181111561586357615863614f5e565b8060051b9150615874848301614fbc565b818152918301840191848101903684111561588d575f80fd5b938501935b838510156158b757843592506158a783614e5b565b8282529385019390850190615892565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b031682529383019360019290920191908301906158fb565b60208152815160208201525f602083015160e0604084015261594a610100840182614db0565b90506040840151601f19808584030160608601526159688383614db0565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261599883836158c9565b925060a08601519150808584030160c0860152506159b682826158c9565b91505060c08401516159d360e08501826001600160401b03169052565b509392505050565b5f80604083850312156159ec575f80fd5b8251915060208301516001600160401b03811115615a08575f80fd5b615a1485828601615012565b9150509250929050565b5f60208284031215615a2e575f80fd5b61215082614c9f565b5f60208284031215615a47575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361535c5761535c61531d565b5f60208284031215615a82575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212202b2813f55dd15547343e69c013200575eda9bb3bb541d8ab37c4ea3939789ec164736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051615cd0380380615cd083398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615b838061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c806380dd672f11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b806380dd672f1461037f5780638280a25a1461039257806393e245981461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360ad77841161016557806360ad77841461032c578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee57806360305d621461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f366004614bc5565b6104b3565b005b610214610224366004614c00565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b610214610256366004614bc5565b61076f565b610214610269366004614c17565b61077a565b61021461027c366004614c65565b610d80565b61029461028f366004614c00565b610df4565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d6366004614bc5565b610e4e565b6102146102e9366004614c86565b610e59565b6103016102fc366004614cc4565b610f1a565b60405190815260200161023f565b610317601481565b60405163ffffffff909116815260200161023f565b61021461033a366004614c65565b610f4f565b61030161034d366004614d2b565b611227565b610294610360366004614c00565b61125e565b6103015f81565b61021461037a366004614bc5565b611272565b61021461038d366004614c65565b61129d565b610231603081565b6102146103a8366004614c00565b6114e2565b6103016103bb366004614d46565b6115ad565b6102146103ce366004614c86565b6115d9565b6103015f80516020615aae83398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b366004614c00565b6117ce565b6103015f80516020615ace83398151915281565b610214610442366004614c00565b611a39565b610231601481565b61046261045d366004614c00565b611b76565b60405161023f9190614ddb565b6102946202a30081565b6103015f80516020615a8e83398151915281565b61021461049b366004614e6f565b611cc5565b6103016104ae366004614ead565b611da4565b6104be838383611dff565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f80516020615b2e8339815191526020526040808220815160e0810190925280545f80516020615ace83398151915293929190829060ff16600581111561053557610535614d66565b600581111561054657610546614d66565b815260200160018201805461055a90614f18565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614f18565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614d66565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190615059565b6040518263ffffffff1660e01b8152600401610729919061508a565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610769919061509c565b50505050565b610769838383611dff565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615ace8339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610833919061509c565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d60608501604086016150b3565b6001600160a01b0316146108b05761088b60608401604085016150b3565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be60608501856150ce565b905090505f805b828163ffffffff161015610ba6575f6108e160608801886150ce565b8363ffffffff168181106108f7576108f7615113565b90506020028101906109099190615127565b61091290615192565b80516040519192505f91600888019161092a9161520d565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da919060040161508a565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a39161520d565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e1919061509c565b90508086600801835f01516040516109f9919061520d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610a7b57610a7b614d66565b021790555060208201516001820190610a949082615262565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610b39911685615331565b8251604051919550610b4a9161520d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b9f90615344565b90506108c5565b50600483018190556001830154606490610bca90600160401b900460ff1683615366565b1015610bec57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610c1087612157565b604001516040518263ffffffff1660e01b8152600401610c30919061508a565b602060405180830381865af4158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f919061509c565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ca991906154a8565b5f60405180830381865af4158015610cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cea9190810190615059565b90505f600282604051610cfd919061520d565b602060405180830381855afa158015610d18573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d3b919061509c565b9050828114610d6757604051631872fc8d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d898261226d565b610da9576040516330efa98b60e01b8152600481018390526024016104da565b5f610db383611b76565b5190506002816005811115610dca57610dca614d66565b14610dea578060405163170cc93360e21b81526004016104da9190614f50565b61076983836122a8565b5f805f80516020615aae83398151915260030154610e129084615533565b9050801580610e2757506001600160401b0381115b15610e485760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361258e565b610e6161277a565b5f80516020615aae8339815191525f80610e7a846127b1565b91509150610e878261226d565b610e9357505050610f01565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ec157610ec1614d66565b03610ee6575f83815260088501602052604081208054919055610ee48282612b64565b505b610efc81610ef78460400151611227565b612bda565b505050505b610f1760015f80516020615b0e83398151915255565b50565b5f610f2361277a565b610f2f85858585612c10565b9050610f4760015f80516020615b0e83398151915255565b949350505050565b5f8281525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff166003811115610f9c57610f9c614d66565b6003811115610fad57610fad614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61102382611b76565b905060018351600381111561103a5761103a614d66565b1461105b578251604051633b0d540d60e21b81526104da9190600401615552565b60048151600581111561107057611070614d66565b036110865761107e86612de9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406110ab89612157565b604001516040518263ffffffff1660e01b81526004016110cb919061508a565b606060405180830381865af41580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a919061556c565b509150915081841461113757846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806111705750806001600160401b03168560a001516001600160401b0316115b1561119957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610e48906001600160401b038416615366565b5f61126882611b76565b6080015192915050565b61127d83838361258e565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b6112a561277a565b5f8281525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff1660038111156112f2576112f2614d66565b600381111561130357611303614d66565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561137c5761137c614d66565b1461139d578051604051633b0d540d60e21b81526104da9190600401615552565b60046113ac8260400151611b76565b5160058111156113be576113be614d66565b146114bd575f6113cd84612157565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b815260040161140c919061508a565b606060405180830381865af4158015611427573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144b919061556c565b5091509150818460400151146114775760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b031611156114b957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b6114c684612de9565b50506114de60015f80516020615b0e83398151915255565b5050565b5f80516020615aae8339815191525f6114fa83611b76565b519050600481600581111561151157611511614d66565b14611531578060405163170cc93360e21b81526004016104da9190614f50565b5f8381526005830160205260409020546001600160a01b0316331461157757335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612b64565b5f6115b661277a565b6115c183338461303d565b9050610e4860015f80516020615b0e83398151915255565b5f80516020615ace8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561160c86612157565b604001516040518263ffffffff1660e01b815260040161162c919061508a565b6040805180830381865af4158015611646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166a91906155ac565b915091508061169057604051632d07135360e01b815281151560048201526024016104da565b5f828152600684016020526040902080546116aa90614f18565b90505f036116ce5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff1660058111156116f4576116f4614d66565b14611727575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b5f828152600684016020526040812061173f91614b14565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff16600381111561181b5761181b614d66565b600381111561182c5761182c614d66565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156118a5576118a5614d66565b141580156118c657506003815160038111156118c3576118c3614d66565b14155b156118e7578051604051633b0d540d60e21b81526104da9190600401615552565b5f6118f58260400151611b76565b905080606001516001600160401b03165f03611927576040516339b894f960e21b8152600481018590526024016104da565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a9361199593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156119af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119d69190810190615059565b6040518263ffffffff1660e01b81526004016119f2919061508a565b6020604051808303815f875af1158015611a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a32919061509c565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615ace8339815191529190611a8090614f18565b90505f03611aa45760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611aca57611aca614d66565b14611afd575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611b3691906004016155cf565b6020604051808303815f875af1158015611b52573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e3919061509c565b611b7e614b4b565b5f8281525f80516020615b2e833981519152602052604090819020815160e0810190925280545f80516020615ace833981519152929190829060ff166005811115611bcb57611bcb614d66565b6005811115611bdc57611bdc614d66565b8152602001600182018054611bf090614f18565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1c90614f18565b8015611c675780601f10611c3e57610100808354040283529160200191611c67565b820191905f5260205f20905b815481529060010190602001808311611c4a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611d0e575080546001600160401b03808416911610155b15611d2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d578484613315565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f80516020615ace833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611de79086908690615659565b90815260200160405180910390205491505092915050565b5f8381525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae8339815191529284929091829060ff166003811115611e4d57611e4d614d66565b6003811115611e5e57611e5e614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611ed482611b76565b9050600283516003811115611eeb57611eeb614d66565b14611f0c578251604051633b0d540d60e21b81526104da9190600401615552565b60208301516001600160a01b03163314611fa8575f8281526005850160205260409020546001600160a01b03163314611f455733611552565b5f82815260058501602052604090205460a0820151611f7491600160b01b90046001600160401b031690615668565b6001600160401b0316421015611fa85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611fbd57611fbd614d66565b036120eb5760028401546080840151611fdf916001600160401b031690615668565b6001600160401b03164210156120135760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b86156120255761202382876122a8565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161205e9184916120599190615688565b61332f565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561209f84613506565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506121509350505050565b60048151600581111561210057612100614d66565b036121345761210e83613506565b5f89815260078601602052604090205561212788612de9565b6001945050505050612150565b805160405163170cc93360e21b81526104da9190600401614f50565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156121bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121e291908101906156a8565b915091508061220457604051636b2f19e960e01b815260040160405180910390fd5b81511561222a578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612266576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122f3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261231a91908101906156a8565b915091508061233c57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a3919061509c565b8251146123c9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612405576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b8152600401612442919061508a565b6040805180830381865af415801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190615738565b915091508187146124a75760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f80516020615aae833981519152906001600160401b039081169083161115612564575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612583565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f80516020615aae833981519152816125a7866136a3565b90506125b28661226d565b6125c157600192505050612150565b5f8681526005830160205260409020546001600160a01b031633146125e65733611552565b5f86815260058301602052604090205460a082015161261591600160b01b90046001600160401b031690615668565b6001600160401b03168160c001516001600160401b0316101561265c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156126745761266d87866122a8565b9050612692565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126b790611227565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612720573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612744919061509c565b905080846008015f8a81526020019081526020015f205f8282546127689190615331565b90915550501515979650505050505050565b5f80516020615b0e8339815191528054600119016127ab57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ba614b4b565b5f80516020615ace8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb56127ed88612157565b604001516040518263ffffffff1660e01b815260040161280d919061508a565b6040805180830381865af4158015612827573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284b91906155ac565b91509150801561287257604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156128a3576128a3614d66565b60058111156128b4576128b4614d66565b81526020016001820180546128c890614f18565b80601f01602080910402602001604051908101604052809291908181526020018280546128f490614f18565b801561293f5780601f106129165761010080835404028352916020019161293f565b820191905f5260205f20905b81548152906001019060200180831161292257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156129aa576129aa614d66565b141580156129cb57506001815160058111156129c8576129c8614d66565b14155b156129ec57805160405163170cc93360e21b81526104da9190600401614f50565b600381516005811115612a0157612a01614d66565b03612a0f5760048152612a14565b600581525b836008018160200151604051612a2a919061520d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a6e57612a6e614d66565b021790555060208201516001820190612a879082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612b2d57612b2d614d66565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f80516020615a8e83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612bbf575f80fd5b505af1158015612bd1573d5f803e3d5ffd5b50505050505050565b5f80516020615a8e833981519152546114de906001600160a01b03168383613987565b60015f80516020615b0e83398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f80516020615aae83398151915290600160401b900461ffff9081169086161080612c64575061271061ffff8616115b15612c8857604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612cc4576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612cd65750806001015483115b15612cf75760405163222d164360e21b8152600481018490526024016104da565b5f612d01846139e6565b90505f612d0d82610df4565b90505f612d1a8983613a09565b90506040518060800160405280612d2e3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b5f8181525f80516020615aee8339815191526020526040808220815160e0810190925280545f80516020615aae83398151915293929190829060ff166003811115612e3657612e36614d66565b6003811115612e4757612e47614d66565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612ee47fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612ef39190615668565b6001600160401b0316421015612f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612fe2575f84815260058701602052604090205461271090612f9490600160a01b900461ffff1685615366565b612f9e9190615533565b915081866008015f8681526020019081526020015f205f828254612fc29190615331565b90915550612fd29050828461575b565b9050612fe2856020015182612b64565b612ff78560200151610ef78760600151611227565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f80516020615aae8339815191528161305961028f856139e6565b90505f61306587611b76565b90506130708761226d565b613090576040516330efa98b60e01b8152600481018890526024016104da565b6002815160058111156130a5576130a5614d66565b146130c657805160405163170cc93360e21b81526104da9190600401614f50565b5f8282608001516130d79190615668565b905083600201600a9054906101000a90046001600160401b03168260400151613100919061576e565b6001600160401b0316816001600160401b0316111561313d57604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806131498a8461332f565b915091505f8a8360405160200161317792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561320a5761320a614d66565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b61331d613ff1565b6133268261403c565b6114de816140b0565b5f8281525f80516020615b2e833981519152602052604081206002015481905f80516020615ace83398151915290600160801b90046001600160401b03166133778582614118565b5f6133818761433b565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134519190810190615059565b6040518263ffffffff1660e01b815260040161346d919061508a565b6020604051808303815f875af1158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad919061509c565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f80516020615aae83398151915290505f6135268460400151611b76565b90505f60038251600581111561353e5761353e614d66565b148061355c575060048251600581111561355a5761355a614d66565b145b1561356c575060c08101516135a9565b60028251600581111561358157613581614d66565b0361358d5750426135a9565b815160405163170cc93360e21b81526104da9190600401614f50565b84608001516001600160401b0316816001600160401b0316116135d057505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135f590611227565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369a919061509c565b95945050505050565b6136ab614b4b565b5f8281525f80516020615b2e8339815191526020526040808220815160e0810190925280545f80516020615ace83398151915293929190829060ff1660058111156136f8576136f8614d66565b600581111561370957613709614d66565b815260200160018201805461371d90614f18565b80601f016020809104026020016040519081016040528092919081815260200182805461374990614f18565b80156137945780601f1061376b57610100808354040283529160200191613794565b820191905f5260205f20905b81548152906001019060200180831161377757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561380257613802614d66565b14613835575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614f50565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561387957613879614d66565b0217905550602082015160018201906138929082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613930858261332f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143b0565b5f610e48825f80516020615a8e833981519152546001600160a01b031690614411565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a4d57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615ace83398151915242613a6c6060860160408701614d2b565b6001600160401b0316111580613aa65750613a8a6202a30042615331565b613a9a6060860160408701614d2b565b6001600160401b031610155b15613ae057613abb6060850160408601614d2b565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b613af5613af06060860186615799565b61456a565b613b05613af06080860186615799565b6030613b1460208601866157ad565b905014613b4657613b2860208501856157ad565b6040516326475b2f60e11b81526104da925060040190815260200190565b613b5084806157ad565b90505f03613b7d57613b6284806157ad565b604051633e08a12560e11b81526004016104da9291906157ef565b5f60088201613b8c86806157ad565b604051613b9a929190615659565b90815260200160405180910390205414613bd357613bb884806157ad565b60405163a41f772f60e01b81526004016104da9291906157ef565b613bdd835f614118565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613c1a8a806157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c62908b018b6157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613cab60608b0160408c01614d2b565b6001600160401b03168152602001613cc660608b018b615799565b613ccf90615802565b8152602001613ce160808b018b615799565b613cea90615802565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613d189190615924565b5f60405180830381865af4158015613d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d5991908101906159db565b5f82815260068601602052604090209193509150613d778282615262565b508160088401613d8788806157ad565b604051613d95929190615659565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613dd190859060040161508a565b6020604051808303815f875af1158015613ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e11919061509c565b6040805160e081019091529091508060018152602001613e3189806157ad565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613ec057613ec0614d66565b021790555060208201516001820190613ed99082615262565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580613f7788806157ad565b604051613f85929190615659565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fc39190614d2b565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661403a57604051631afcd79f60e31b815260040160405180910390fd5b565b614044613ff1565b61404d816146d3565b6140556146ec565b610f176060820135608083013561407260c0850160a08601614d2b565b61408260e0860160c08701615a1e565b614093610100870160e08801615a37565b6101008701356140ab61014089016101208a016150b3565b6146fc565b6140b8613ff1565b5f80516020615a8e8339815191526001600160a01b0382166140f857604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615ace8339815191525f6001600160401b03808416908516111561414c576141458385615688565b9050614159565b6141568484615688565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806141bb5750600184015481516141b7916001600160401b031690615331565b8210155b156141e1576001600160401b038316606082015281815260408101516020820152614200565b82816060018181516141f39190615668565b6001600160401b03169052505b606081015161421090606461576e565b602082015160018601546001600160401b03929092169161423b9190600160401b900460ff16615366565b101561426b57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b0316816040018181516142869190615331565b9052506040810180516001600160401b03871691906142a690839061575b565b905250600184015460408201516064916142cb91600160401b90910460ff1690615366565b10156142f2578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615b2e8339815191526020526040812060020180545f80516020615ace833981519152919060089061438590600160401b90046001600160401b0316615a57565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6143c46001600160a01b038416836148b8565b905080515f141580156143e85750808060200190518101906143e69190615a72565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447b919061509c565b90506144926001600160a01b0385163330866148c5565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156144d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144fa919061509c565b90508181116145605760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61369a828261575b565b6145776020820182614c86565b63ffffffff16158015614597575061459260208201826150ce565b151590505b156145de576145a96020820182614c86565b6145b660208301836150ce565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6145eb60208201826150ce565b90506145fa6020830183614c86565b63ffffffff161115614613576145a96020820182614c86565b60015b61462360208301836150ce565b90508110156114de5761463960208301836150ce565b61464460018461575b565b81811061465357614653615113565b905060200201602081019061466891906150b3565b6001600160a01b031661467e60208401846150ce565b8381811061468e5761468e615113565b90506020020160208101906146a391906150b3565b6001600160a01b031610156146cb57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614616565b6146db613ff1565b6146e36148fe565b610f1781614906565b6146f4613ff1565b61403a6149ee565b614704613ff1565b5f80516020615aae83398151915261ffff85161580614728575061271061ffff8616115b1561474c57604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156147705760405163222d164360e21b8152600481018990526024016104da565b60ff841615806147835750600a60ff8516115b156147a65760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561480d576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f0361482d5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b606061215083835f6149f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd906084016139b4565b61403a613ff1565b61490e613ff1565b80355f80516020615ace83398151915290815560146149336060840160408501615a37565b60ff161180614952575061494d6060830160408401615a37565b60ff16155b15614986576149676060830160408401615a37565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b6149966060830160408401615a37565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149c76040830160208401614d2b565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612bfd613ff1565b606081471015614a1b5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614a36919061520d565b5f6040518083038185875af1925050503d805f8114614a70576040519150601f19603f3d011682016040523d82523d5f602084013e614a75565b606091505b5091509150614a85868383614a8f565b9695505050505050565b606082614aa457614a9f82614aeb565b612150565b8151158015614abb57506001600160a01b0384163b155b15614ae457604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b5080612150565b805115614afb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614b2090614f18565b5f825580601f10614b2f575050565b601f0160209004905f5260205f2090810190610f179190614b88565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b9c575f8155600101614b89565b5090565b8015158114610f17575f80fd5b803563ffffffff81168114614bc0575f80fd5b919050565b5f805f60608486031215614bd7575f80fd5b833592506020840135614be981614ba0565b9150614bf760408501614bad565b90509250925092565b5f60208284031215614c10575f80fd5b5035919050565b5f8060408385031215614c28575f80fd5b82356001600160401b03811115614c3d575f80fd5b830160808186031215614c4e575f80fd5b9150614c5c60208401614bad565b90509250929050565b5f8060408385031215614c76575f80fd5b82359150614c5c60208401614bad565b5f60208284031215614c96575f80fd5b61215082614bad565b803561ffff81168114614bc0575f80fd5b6001600160401b0381168114610f17575f80fd5b5f805f8060808587031215614cd7575f80fd5b84356001600160401b03811115614cec575f80fd5b850160a08188031215614cfd575f80fd5b9350614d0b60208601614c9f565b92506040850135614d1b81614cb0565b9396929550929360600135925050565b5f60208284031215614d3b575f80fd5b813561215081614cb0565b5f8060408385031215614d57575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614d8a57614d8a614d66565b9052565b5f5b83811015614da8578181015183820152602001614d90565b50505f910152565b5f8151808452614dc7816020860160208601614d8e565b601f01601f19169290920160200192915050565b60208152614ded602082018351614d7a565b5f602083015160e06040840152614e08610100840182614db0565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610f17575f80fd5b5f80828403610160811215614e82575f80fd5b61014080821215614e91575f80fd5b8493508301359050614ea281614e5b565b809150509250929050565b5f8060208385031215614ebe575f80fd5b82356001600160401b0380821115614ed4575f80fd5b818501915085601f830112614ee7575f80fd5b813581811115614ef5575f80fd5b866020828501011115614f06575f80fd5b60209290920196919550909350505050565b600181811c90821680614f2c57607f821691505b602082108103614f4a57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e488284614d7a565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614f9457614f94614f5e565b60405290565b604080519081016001600160401b0381118282101715614f9457614f94614f5e565b604051601f8201601f191681016001600160401b0381118282101715614fe457614fe4614f5e565b604052919050565b5f6001600160401b0382111561500457615004614f5e565b50601f01601f191660200190565b5f82601f830112615021575f80fd5b815161503461502f82614fec565b614fbc565b818152846020838601011115615048575f80fd5b610f47826020830160208701614d8e565b5f60208284031215615069575f80fd5b81516001600160401b0381111561507e575f80fd5b610f4784828501615012565b602081525f6121506020830184614db0565b5f602082840312156150ac575f80fd5b5051919050565b5f602082840312156150c3575f80fd5b813561215081614e5b565b5f808335601e198436030181126150e3575f80fd5b8301803591506001600160401b038211156150fc575f80fd5b6020019150600581901b36038213156134ff575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261513b575f80fd5b9190910192915050565b5f82601f830112615154575f80fd5b813561516261502f82614fec565b818152846020838601011115615176575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156151a2575f80fd5b6151aa614f72565b82356001600160401b03808211156151c0575f80fd5b6151cc36838701615145565b835260208501359150808211156151e1575f80fd5b506151ee36828601615145565b602083015250604083013561520281614cb0565b604082015292915050565b5f825161513b818460208701614d8e565b601f8211156104e357805f5260205f20601f840160051c810160208510156152435750805b601f840160051c820191505b81811015611a32575f815560010161524f565b81516001600160401b0381111561527b5761527b614f5e565b61528f816152898454614f18565b8461521e565b602080601f8311600181146152c2575f84156152ab5750858301515b5f19600386901b1c1916600185901b17855561107e565b5f85815260208120601f198616915b828110156152f0578886015182559484019460019091019084016152d1565b508582101561530d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e4857610e4861531d565b5f63ffffffff80831681810361535c5761535c61531d565b6001019392505050565b8082028115828204841417610e4857610e4861531d565b5f808335601e19843603018112615392575f80fd5b83016020810192503590506001600160401b038111156153b0575f80fd5b8036038213156134ff575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561549b57848303601f19018952813536889003605e19018112615422575f80fd5b87016060615430828061537d565b82875261544083880182846153be565b925050506154508683018361537d565b868303888801526154628382846153be565b92505050604080830135925061547783614cb0565b6001600160401b0392909216949091019390935297830197908301906001016153fd565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154cc81614e5b565b6001600160a01b031660608381019190915283013536849003601e190181126154f3575f80fd5b83016020810190356001600160401b0381111561550e575f80fd5b8060051b360382131561551f575f80fd5b60808085015261369a60a0850182846153e6565b5f8261554d57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061556657615566614d66565b91905290565b5f805f6060848603121561557e575f80fd5b83519250602084015161559081614cb0565b60408501519092506155a181614cb0565b809150509250925092565b5f80604083850312156155bd575f80fd5b825191506020830151614ea281614ba0565b5f60208083525f84546155e181614f18565b806020870152604060018084165f8114615602576001811461561e5761564b565b60ff19851660408a0152604084151560051b8a0101955061564b565b895f5260205f205f5b858110156156425781548b8201860152908301908801615627565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156122665761226661531d565b6001600160401b038281168282160390808211156122665761226661531d565b5f80604083850312156156b9575f80fd5b82516001600160401b03808211156156cf575f80fd5b90840190606082870312156156e2575f80fd5b6156ea614f72565b8251815260208301516156fc81614e5b565b6020820152604083015182811115615712575f80fd5b61571e88828601615012565b6040830152508094505050506020830151614ea281614ba0565b5f8060408385031215615749575f80fd5b825191506020830151614ea281614cb0565b81810381811115610e4857610e4861531d565b6001600160401b038181168382160280821691908281146157915761579161531d565b505092915050565b5f8235603e1983360301811261513b575f80fd5b5f808335601e198436030181126157c2575f80fd5b8301803591506001600160401b038211156157db575f80fd5b6020019150368190038213156134ff575f80fd5b602081525f610f476020830184866153be565b5f60408236031215615812575f80fd5b61581a614f9a565b61582383614bad565b81526020808401356001600160401b038082111561583f575f80fd5b9085019036601f830112615851575f80fd5b81358181111561586357615863614f5e565b8060051b9150615874848301614fbc565b818152918301840191848101903684111561588d575f80fd5b938501935b838510156158b757843592506158a783614e5b565b8282529385019390850190615892565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125835784516001600160a01b031682529383019360019290920191908301906158fb565b60208152815160208201525f602083015160e0604084015261594a610100840182614db0565b90506040840151601f19808584030160608601526159688383614db0565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261599883836158c9565b925060a08601519150808584030160c0860152506159b682826158c9565b91505060c08401516159d360e08501826001600160401b03169052565b509392505050565b5f80604083850312156159ec575f80fd5b8251915060208301516001600160401b03811115615a08575f80fd5b615a1485828601615012565b9150509250929050565b5f60208284031215615a2e575f80fd5b61215082614c9f565b5f60208284031215615a47575f80fd5b813560ff81168114612150575f80fd5b5f6001600160401b0380831681810361535c5761535c61531d565b5f60208284031215615a82575f80fd5b815161215081614ba056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220809e8981350bc910644606b65d3ff67721ebf6c71c355871c1b4efcd43027c7764736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 19f29e003..dd0de6ea7 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -103,7 +103,7 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516159ee3803806159ee83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158a18061014d5f395ff3fe6080604052600436106101f1575f3560e01c806380dd672f11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b806380dd672f146104525780638280a25a1461047157806393e2459814610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360ad77841161015957806360ad7784146103b557806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d57806360305d621461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506103a0601481565b60405163ffffffff9091168152602001610257565b3480156103c0575f80fd5b506102146103cf366004614a09565b61107c565b3480156103df575f80fd5b506103f36103ee366004614a57565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b5061021461046c366004614a09565b6113ca565b34801561047c575f80fd5b50610249603081565b348015610490575f80fd5b5061021461049f3660046149a4565b61160f565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614a83565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157cc83398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f805160206157ec83398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614ae4565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b70565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614bf0565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f8051602061584c8339815191526020526040808220815160e0810190925280545f805160206157ec83398151915293929190829060ff16600581111561069757610697614afb565b60058111156106a8576106a8614afb565b81526020016001820180546106bc90614c5b565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c5b565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614afb565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614d9e565b6040518263ffffffff1660e01b815260040161088b9190614dcf565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614de1565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206157ec8339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614de1565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e0c565b6001600160a01b031614610a12576109ed6060840160408501614e0c565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e27565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e27565b8363ffffffff16818110610a5957610a59614e6c565b9050602002810190610a6b9190614e80565b610a7490614eeb565b80516040519192505f916008880191610a8c91614f66565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614dcf565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f66565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614de1565b90508086600801835f0151604051610b5b9190614f66565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614afb565b021790555060208201516001820190610bf69082614fbb565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b91168561508a565b8251604051919550610cac91614f66565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d019061509d565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150bf565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614dcf565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614de1565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b9190615201565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614d9e565b90505f600282604051610e5f9190614f66565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614de1565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614afb565b14610f4c578060405163170cc93360e21b815260040161063c9190614c8d565b6108cb8383612405565b5f805f805160206157cc83398151915260030154610f74908461528c565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157cc8339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614afb565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061582c83398151915255565b50565b5f8281525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff1660038111156110c9576110c9614afb565b60038111156110da576110da614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614afb565b14611188578251604051633b0d540d60e21b815261063c91906004016152ab565b60048151600581111561119d5761119d614afb565b036111b3576111ab86612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d8896122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614dcf565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152c5565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150bf565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b6113d26128d7565b5f8281525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff16600381111561141f5761141f614afb565b600381111561143057611430614afb565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156114a9576114a9614afb565b146114ca578051604051633b0d540d60e21b815261063c91906004016152ab565b60046114d98260400151611db9565b5160058111156114eb576114eb614afb565b146115ea575f6114fa846122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016115399190614dcf565b606060405180830381865af4158015611554573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157891906152c5565b5091509150818460400151146115a45760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156115e657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6115f384612d45565b505061160b60015f8051602061582c83398151915255565b5050565b5f805160206157cc8339815191525f61162783611db9565b519050600481600581111561163e5761163e614afb565b1461165e578060405163170cc93360e21b815260040161063c9190614c8d565b5f8381526005830160205260409020546001600160a01b031633146116a457335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b5f805160206157ec8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614dcf565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b91906152fa565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c5b565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614afb565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061582c83398151915255565b9392505050565b5f8181525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff16600381111561195057611950614afb565b600381111561196157611961614afb565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614afb565b141580156119fb57506003815160038111156119f8576119f8614afb565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152ab565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614d9e565b6040518263ffffffff1660e01b8152600401611b279190614dcf565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614de1565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206157ec8339815191529190611bb590614c5b565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614afb565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615328565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614de1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061582c83398151915255565b919050565b611dc16148f4565b5f8281525f8051602061584c833981519152602052604090819020815160e0810190925280545f805160206157ec833981519152929190829060ff166005811115611e0e57611e0e614afb565b6005811115611e1f57611e1f614afb565b8152602001600182018054611e3390614c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c5b565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f805160206157ec833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153b2565b90815260200160405180910390205491505092915050565b5f8381525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc8339815191529284929091829060ff166003811115611fb157611fb1614afb565b6003811115611fc257611fc2614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614afb565b14612070578251604051633b0d540d60e21b815261063c91906004016152ab565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361167f565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153c1565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614afb565b0361224f5760028401546080840151612143916001600160401b0316906153c1565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd91906153e1565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614afb565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614c8d565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f9190810190615401565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124779190810190615401565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614de1565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614dcf565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd9190615491565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157cc833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157cc83398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361167f565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153c1565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614de1565b905080846008015f8a81526020019081526020015f205f8282546128c5919061508a565b90915550501515979650505050505050565b5f8051602061582c83398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206157ec8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614dcf565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a891906152fa565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614afb565b6005811115612a1157612a11614afb565b8152602001600182018054612a2590614c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c5b565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614afb565b14158015612b285750600181516005811115612b2557612b25614afb565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614c8d565b600381516005811115612b5e57612b5e614afb565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f66565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614afb565b021790555060208201516001820190612be49082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614afb565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b61160b6001600160a01b03831682613aa5565b60015f8051602061582c83398151915255565b5f8181525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff166003811115612d9257612d92614afb565b6003811115612da357612da3614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153c1565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150bf565b612efa919061528c565b915081866008015f8681526020019081526020015f205f828254612f1e919061508a565b90915550612f2e905082846154b4565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157cc83398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157cc8339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614afb565b146131fe57805160405163170cc93360e21b815261063c9190600401614c8d565b5f82826080015161320f91906153c1565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154c7565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614afb565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f8051602061584c833981519152602052604081206002015481905f805160206157ec83398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614d9e565b6040518263ffffffff1660e01b815260040161358b9190614dcf565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614de1565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157cc83398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614afb565b148061367a575060048251600581111561367857613678614afb565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614afb565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614c8d565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614de1565b95945050505050565b6137c96148f4565b5f8281525f8051602061584c8339815191526020526040808220815160e0810190925280545f805160206157ec83398151915293929190829060ff16600581111561381657613816614afb565b600581111561382757613827614afb565b815260200160018201805461383b90614c5b565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c5b565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614afb565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614afb565b0217905550602082015160018201906139b09082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f805160206157ec83398151915242613b9b6060860160408701614a57565b6001600160401b0316111580613bd55750613bb96202a3004261508a565b613bc96060860160408701614a57565b6001600160401b031610155b15613c0f57613bea6060850160408601614a57565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f60608601866154f2565b614477565b613c34613c1f60808601866154f2565b6030613c436020860186615506565b905014613c7557613c576020850185615506565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f8480615506565b90505f03613cac57613c918480615506565b604051633e08a12560e11b815260040161063c929190615548565b5f60088201613cbb8680615506565b604051613cc99291906153b2565b90815260200160405180910390205414613d0257613ce78480615506565b60405163a41f772f60e01b815260040161063c929190615548565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a80615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a57565b6001600160401b03168152602001613df560608b018b6154f2565b613dfe9061555b565b8152602001613e1060808b018b6154f2565b613e199061555b565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e47919061567d565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e889190810190615734565b5f82815260068601602052604090209193509150613ea68282614fbb565b508160088401613eb68880615506565b604051613ec49291906153b2565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614dcf565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614de1565b6040805160e081019091529091508060018152602001613f608980615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614afb565b0217905550602082015160018201906140089082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a68880615506565b6040516140b49291906153b2565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a57565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a57565b6141b160e0860160c08701615777565b6141c2610100870160e08801615790565b6101008701356141da61014089016101208a01614e0c565b614609565b5f805160206157ec8339815191525f6001600160401b0380841690851611156142135761420c83856153e1565b9050614220565b61421d84846153e1565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b03169061508a565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153c1565b6001600160401b03169052505b60608101516142d79060646154c7565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150bf565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d919061508a565b9052506040810180516001600160401b038716919061436d9083906154b4565b9052506001840154604082015160649161439291600160401b90910460ff16906150bf565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f8051602061584c8339815191526020526040812060020180545f805160206157ec833981519152919060089061444c90600160401b90046001600160401b03166157b0565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e27565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e27565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e27565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e27565b905081101561160b576145466020830183614e27565b6145516001846154b4565b81811061456057614560614e6c565b90506020020160208101906145759190614e0c565b6001600160a01b031661458b6020840184614e27565b8381811061459b5761459b614e6c565b90506020020160208101906145b09190614e0c565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157cc83398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f805160206157ec83398151915290815560146147fa6060840160408501615790565b60ff16118061481957506148146060830160408401615790565b60ff16155b1561484d5761482e6060830160408401615790565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d6060830160408401615790565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a57565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c5b565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a67575f80fd5b81356118fc81614a43565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614a95575f80fd5b83356001600160401b03811115614aaa575f80fd5b840160a08187031215614abb575f80fd5b9250614ac960208501614a72565b91506040840135614ad981614a43565b809150509250925092565b5f6101408284031215614af5575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b1f57614b1f614afb565b9052565b5f5b83811015614b3d578181015183820152602001614b25565b50505f910152565b5f8151808452614b5c816020860160208601614b23565b601f01601f19169290920160200192915050565b60208152614b82602082018351614b0f565b5f602083015160e06040840152614b9d610100840182614b45565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c01575f80fd5b82356001600160401b0380821115614c17575f80fd5b818501915085601f830112614c2a575f80fd5b813581811115614c38575f80fd5b866020828501011115614c49575f80fd5b60209290920196919550909350505050565b600181811c90821680614c6f57607f821691505b602082108103614af557634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b0f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cd157614cd1614c9b565b60405290565b604080519081016001600160401b0381118282101715614cd157614cd1614c9b565b604051601f8201601f191681016001600160401b0381118282101715614d2157614d21614c9b565b604052919050565b5f6001600160401b03821115614d4157614d41614c9b565b50601f01601f191660200190565b5f82601f830112614d5e575f80fd5b8151614d71614d6c82614d29565b614cf9565b818152846020838601011115614d85575f80fd5b614d96826020830160208701614b23565b949350505050565b5f60208284031215614dae575f80fd5b81516001600160401b03811115614dc3575f80fd5b614d9684828501614d4f565b602081525f6118fc6020830184614b45565b5f60208284031215614df1575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e1c575f80fd5b81356118fc81614df8565b5f808335601e19843603018112614e3c575f80fd5b8301803591506001600160401b03821115614e55575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614e94575f80fd5b9190910192915050565b5f82601f830112614ead575f80fd5b8135614ebb614d6c82614d29565b818152846020838601011115614ecf575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614efb575f80fd5b614f03614caf565b82356001600160401b0380821115614f19575f80fd5b614f2536838701614e9e565b83526020850135915080821115614f3a575f80fd5b50614f4736828601614e9e565b6020830152506040830135614f5b81614a43565b604082015292915050565b5f8251614e94818460208701614b23565b601f82111561064557805f5260205f20601f840160051c81016020851015614f9c5750805b601f840160051c820191505b81811015611b67575f8155600101614fa8565b81516001600160401b03811115614fd457614fd4614c9b565b614fe881614fe28454614c5b565b84614f77565b602080601f83116001811461501b575f84156150045750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b828110156150495788860151825594840194600190910190840161502a565b508582101561506657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa615076565b5f63ffffffff8083168181036150b5576150b5615076565b6001019392505050565b8082028115828204841417610faa57610faa615076565b5f808335601e198436030181126150eb575f80fd5b83016020810192503590506001600160401b03811115615109575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156151f457848303601f19018952813536889003605e1901811261517b575f80fd5b8701606061518982806150d6565b8287526151998388018284615117565b925050506151a9868301836150d6565b868303888801526151bb838284615117565b9250505060408083013592506151d083614a43565b6001600160401b039290921694909101939093529783019790830190600101615156565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561522581614df8565b6001600160a01b031660608381019190915283013536849003601e1901811261524c575f80fd5b83016020810190356001600160401b03811115615267575f80fd5b8060051b3603821315615278575f80fd5b6080808501526137b860a08501828461513f565b5f826152a657634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152bf576152bf614afb565b91905290565b5f805f606084860312156152d7575f80fd5b8351925060208401516152e981614a43565b6040850151909250614ad981614a43565b5f806040838503121561530b575f80fd5b82519150602083015161531d81614949565b809150509250929050565b5f60208083525f845461533a81614c5b565b806020870152604060018084165f811461535b5760018114615377576153a4565b60ff19851660408a0152604084151560051b8a010195506153a4565b895f5260205f205f5b8581101561539b5781548b8201860152908301908801615380565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c3615076565b6001600160401b038281168282160390808211156123c3576123c3615076565b5f8060408385031215615412575f80fd5b82516001600160401b0380821115615428575f80fd5b908401906060828703121561543b575f80fd5b615443614caf565b82518152602083015161545581614df8565b602082015260408301518281111561546b575f80fd5b61547788828601614d4f565b604083015250809450505050602083015161531d81614949565b5f80604083850312156154a2575f80fd5b82519150602083015161531d81614a43565b81810381811115610faa57610faa615076565b6001600160401b038181168382160280821691908281146154ea576154ea615076565b505092915050565b5f8235603e19833603018112614e94575f80fd5b5f808335601e1984360301811261551b575f80fd5b8301803591506001600160401b03821115615534575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614d96602083018486615117565b5f6040823603121561556b575f80fd5b615573614cd7565b61557c83614956565b81526020808401356001600160401b0380821115615598575f80fd5b9085019036601f8301126155aa575f80fd5b8135818111156155bc576155bc614c9b565b8060051b91506155cd848301614cf9565b81815291830184019184810190368411156155e6575f80fd5b938501935b83851015615610578435925061560083614df8565b82825293850193908501906155eb565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b03168252938301936001929092019190830190615654565b60208152815160208201525f602083015160e060408401526156a3610100840182614b45565b90506040840151601f19808584030160608601526156c18383614b45565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526156f18383615622565b925060a08601519150808584030160c08601525061570f8282615622565b91505060c084015161572c60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615745575f80fd5b8251915060208301516001600160401b03811115615761575f80fd5b61576d85828601614d4f565b9150509250929050565b5f60208284031215615787575f80fd5b6118fc82614a72565b5f602082840312156157a0575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150b5576150b561507656fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212209f3cab43aa8ccbdbcd55badf2a7bac018541e43a6b4bc1bf10bc573a1afbd60e64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040516159ee3803806159ee83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158a18061014d5f395ff3fe6080604052600436106101f1575f3560e01c806380dd672f11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b806380dd672f146104525780638280a25a1461047157806393e2459814610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360ad77841161015957806360ad7784146103b557806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d57806360305d621461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614969565b610615565b005b348015610221575f80fd5b506102146102303660046149a4565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614969565b6108d1565b34801561028a575f80fd5b506102146102993660046149bb565b6108dc565b3480156102a9575f80fd5b506102146102b8366004614a09565b610ee2565b3480156102c8575f80fd5b506102dc6102d73660046149a4565b610f56565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614969565b610fb0565b348015610378575f80fd5b50610214610387366004614a2a565b610fbb565b348015610397575f80fd5b506103a0601481565b60405163ffffffff9091168152602001610257565b3480156103c0575f80fd5b506102146103cf366004614a09565b61107c565b3480156103df575f80fd5b506103f36103ee366004614a57565b611354565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b3660046149a4565b61138b565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614969565b61139f565b34801561045d575f80fd5b5061021461046c366004614a09565b6113ca565b34801561047c575f80fd5b50610249603081565b348015610490575f80fd5b5061021461049f3660046149a4565b61160f565b3480156104af575f80fd5b506102146104be366004614a2a565b6116da565b6103f36104d1366004614a83565b6118cf565b3480156104e1575f80fd5b506103f35f805160206157cc83398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a3660046149a4565b611903565b34801561053a575f80fd5b506103f35f805160206157ec83398151915281565b34801561055a575f80fd5b506102146105693660046149a4565b611b6e565b348015610579575f80fd5b50610214610588366004614ae4565b611cab565b6103f361059b3660046149a4565b611d88565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce3660046149a4565b611db9565b6040516102579190614b70565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f3610610366004614bf0565b611f08565b610620838383611f63565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f8051602061584c8339815191526020526040808220815160e0810190925280545f805160206157ec83398151915293929190829060ff16600581111561069757610697614afb565b60058111156106a8576106a8614afb565b81526020016001820180546106bc90614c5b565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614c5b565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e614afb565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614d9e565b6040518263ffffffff1660e01b815260040161088b9190614dcf565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614de1565b50505050565b6108cb838383611f63565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206157ec8339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614de1565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614e0c565b6001600160a01b031614610a12576109ed6060840160408501614e0c565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614e27565b905090505f805b828163ffffffff161015610d08575f610a436060880188614e27565b8363ffffffff16818110610a5957610a59614e6c565b9050602002810190610a6b9190614e80565b610a7490614eeb565b80516040519192505f916008880191610a8c91614f66565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614dcf565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614f66565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614de1565b90508086600801835f0151604051610b5b9190614f66565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610bdd57610bdd614afb565b021790555060208201516001820190610bf69082614fbb565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610c9b91168561508a565b8251604051919550610cac91614f66565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610d019061509d565b9050610a27565b50600483018190556001830154606490610d2c90600160401b900460ff16836150bf565b1015610d4e57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610d72876122b4565b604001516040518263ffffffff1660e01b8152600401610d929190614dcf565b602060405180830381865af4158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd19190614de1565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610e0b9190615201565b5f60405180830381865af4158015610e25573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4c9190810190614d9e565b90505f600282604051610e5f9190614f66565b602060405180830381855afa158015610e7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e9d9190614de1565b9050828114610ec957604051631872fc8d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610eeb826123ca565b610f0b576040516330efa98b60e01b81526004810183905260240161063c565b5f610f1583611db9565b5190506002816005811115610f2c57610f2c614afb565b14610f4c578060405163170cc93360e21b815260040161063c9190614c8d565b6108cb8383612405565b5f805f805160206157cc83398151915260030154610f74908461528c565b9050801580610f8957506001600160401b0381115b15610faa5760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb8383836126eb565b610fc36128d7565b5f805160206157cc8339815191525f80610fdc8461290e565b91509150610fe9826123ca565b610ff557505050611063565b5f8281526005840160205260409020546001600160a01b031660048251600581111561102357611023614afb565b03611048575f838152600885016020526040812080549190556110468282612cc1565b505b61105e816110598460400151611354565b612d1f565b505050505b61107960015f8051602061582c83398151915255565b50565b5f8281525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff1660038111156110c9576110c9614afb565b60038111156110da576110da614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61115082611db9565b905060018351600381111561116757611167614afb565b14611188578251604051633b0d540d60e21b815261063c91906004016152ab565b60048151600581111561119d5761119d614afb565b036111b3576111ab86612d45565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d406111d8896122b4565b604001516040518263ffffffff1660e01b81526004016111f89190614dcf565b606060405180830381865af4158015611213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123791906152c5565b509150915081841461126457846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061129d5750806001600160401b03168560a001516001600160401b0316115b156112c657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610faa906001600160401b0384166150bf565b5f61139582611db9565b6080015192915050565b6113aa8383836126eb565b61064557604051635bff683f60e11b81526004810184905260240161063c565b6113d26128d7565b5f8281525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff16600381111561141f5761141f614afb565b600381111561143057611430614afb565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156114a9576114a9614afb565b146114ca578051604051633b0d540d60e21b815261063c91906004016152ab565b60046114d98260400151611db9565b5160058111156114eb576114eb614afb565b146115ea575f6114fa846122b4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__639de23d4084604001516040518263ffffffff1660e01b81526004016115399190614dcf565b606060405180830381865af4158015611554573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157891906152c5565b5091509150818460400151146115a45760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b031611156115e657604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b6115f384612d45565b505061160b60015f8051602061582c83398151915255565b5050565b5f805160206157cc8339815191525f61162783611db9565b519050600481600581111561163e5761163e614afb565b1461165e578060405163170cc93360e21b815260040161063c9190614c8d565b5f8381526005830160205260409020546001600160a01b031633146116a457335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612cc1565b5f805160206157ec8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561170d866122b4565b604001516040518263ffffffff1660e01b815260040161172d9190614dcf565b6040805180830381865af4158015611747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176b91906152fa565b915091508061179157604051632d07135360e01b8152811515600482015260240161063c565b5f828152600684016020526040902080546117ab90614c5b565b90505f036117cf5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff1660058111156117f5576117f5614afb565b14611828575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b5f8281526006840160205260408120611840916148bd565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6118d86128d7565b6118e484848434612f99565b90506118fc60015f8051602061582c83398151915255565b9392505050565b5f8181525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff16600381111561195057611950614afb565b600381111561196157611961614afb565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156119da576119da614afb565b141580156119fb57506003815160038111156119f8576119f8614afb565b14155b15611a1c578051604051633b0d540d60e21b815261063c91906004016152ab565b5f611a2a8260400151611db9565b905080606001516001600160401b03165f03611a5c576040516339b894f960e21b81526004810185905260240161063c565b6040808301516060830151608084015192516342a2e0b560e11b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__93638545c16a93611aca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ae4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b0b9190810190614d9e565b6040518263ffffffff1660e01b8152600401611b279190614dcf565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b679190614de1565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206157ec8339815191529190611bb590614c5b565b90505f03611bd95760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611bff57611bff614afb565b14611c32575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c6b9190600401615328565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614de1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611cf4575080546001600160401b03808416911610155b15611d125760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611d3c83613167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d916128d7565b611d9c823334613178565b9050611db460015f8051602061582c83398151915255565b919050565b611dc16148f4565b5f8281525f8051602061584c833981519152602052604090819020815160e0810190925280545f805160206157ec833981519152929190829060ff166005811115611e0e57611e0e614afb565b6005811115611e1f57611e1f614afb565b8152602001600182018054611e3390614c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5f90614c5b565b8015611eaa5780601f10611e8157610100808354040283529160200191611eaa565b820191905f5260205f20905b815481529060010190602001808311611e8d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f805160206157ec833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f4b90869086906153b2565b90815260200160405180910390205491505092915050565b5f8381525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc8339815191529284929091829060ff166003811115611fb157611fb1614afb565b6003811115611fc257611fc2614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61203882611db9565b905060028351600381111561204f5761204f614afb565b14612070578251604051633b0d540d60e21b815261063c91906004016152ab565b60208301516001600160a01b0316331461210c575f8281526005850160205260409020546001600160a01b031633146120a9573361167f565b5f82815260058501602052604090205460a08201516120d891600160b01b90046001600160401b0316906153c1565b6001600160401b031642101561210c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b60028151600581111561212157612121614afb565b0361224f5760028401546080840151612143916001600160401b0316906153c1565b6001600160401b03164210156121775760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612189576121878287612405565b505b5f8881526006850160205260409020805460ff19166003179055606083015160808201516121c29184916121bd91906153e1565b61344d565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561220384613624565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506118fc9350505050565b60048151600581111561226457612264614afb565b036122985761227283613624565b5f89815260078601602052604090205561228b88612d45565b60019450505050506118fc565b805160405163170cc93360e21b815261063c9190600401614c8d565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612318573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261233f9190810190615401565b915091508061236157604051636b2f19e960e01b815260040160405180910390fd5b815115612387578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156123c3576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612450573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124779190810190615401565b915091508061249957604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125009190614de1565b825114612526578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612562576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161259f9190614dcf565b6040805180830381865af41580156125b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd9190615491565b915091508187146126045760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f805160206157cc833981519152906001600160401b0390811690831611156126c1575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e0565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f805160206157cc83398151915281612704866137c1565b905061270f866123ca565b61271e576001925050506118fc565b5f8681526005830160205260409020546001600160a01b03163314612743573361167f565b5f86815260058301602052604090205460a082015161277291600160b01b90046001600160401b0316906153c1565b6001600160401b03168160c001516001600160401b031610156127b95760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f85156127d1576127ca8786612405565b90506127ef565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281490611354565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a19190614de1565b905080846008015f8a81526020019081526020015f205f8282546128c5919061508a565b90915550501515979650505050505050565b5f8051602061582c83398151915280546001190161290857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129176148f4565b5f805160206157ec8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561294a886122b4565b604001516040518263ffffffff1660e01b815260040161296a9190614dcf565b6040805180830381865af4158015612984573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a891906152fa565b9150915080156129cf57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a0057612a00614afb565b6005811115612a1157612a11614afb565b8152602001600182018054612a2590614c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5190614c5b565b8015612a9c5780601f10612a7357610100808354040283529160200191612a9c565b820191905f5260205f20905b815481529060010190602001808311612a7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b0757612b07614afb565b14158015612b285750600181516005811115612b2557612b25614afb565b14155b15612b4957805160405163170cc93360e21b815261063c9190600401614c8d565b600381516005811115612b5e57612b5e614afb565b03612b6c5760048152612b71565b600581525b836008018160200151604051612b879190614f66565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612bcb57612bcb614afb565b021790555060208201516001820190612be49082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c8a57612c8a614afb565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612d0d575f80fd5b505af11580156111ab573d5f803e3d5ffd5b61160b6001600160a01b03831682613aa5565b60015f8051602061582c83398151915255565b5f8181525f8051602061580c8339815191526020526040808220815160e0810190925280545f805160206157cc83398151915293929190829060ff166003811115612d9257612d92614afb565b6003811115612da357612da3614afb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e407fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e4f91906153c1565b6001600160401b0316421015612e835760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f3e575f84815260058701602052604090205461271090612ef090600160a01b900461ffff16856150bf565b612efa919061528c565b915081866008015f8681526020019081526020015f205f828254612f1e919061508a565b90915550612f2e905082846154b4565b9050612f3e856020015182612cc1565b612f5385602001516110598760600151611354565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f805160206157cc83398151915290600160401b900461ffff9081169086161080612fed575061271061ffff8616115b1561301157604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b03908116908516101561304d576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b805483108061305f5750806001015483115b156130805760405163222d164360e21b81526004810184905260240161063c565b825f61308b82610f56565b90505f6130988983613b38565b905060405180608001604052806130ac3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b03199094169516949094179190911798909816178155910151600190910180549190951667ffffffffffffffff19909116179093555090915050949350505050565b61316f614120565b6110798161416b565b5f5f805160206157cc8339815191528161319184610f56565b90505f61319d87611db9565b90506131a8876123ca565b6131c8576040516330efa98b60e01b81526004810188905260240161063c565b6002815160058111156131dd576131dd614afb565b146131fe57805160405163170cc93360e21b815261063c9190600401614c8d565b5f82826080015161320f91906153c1565b905083600201600a9054906101000a90046001600160401b0316826040015161323891906154c7565b6001600160401b0316816001600160401b0316111561327557604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806132818a8461344d565b915091505f8a836040516020016132af92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561334257613342614afb565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8281525f8051602061584c833981519152602052604081206002015481905f805160206157ec83398151915290600160801b90046001600160401b031661349585826141df565b5f61349f87614402565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015613548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261356f9190810190614d9e565b6040518263ffffffff1660e01b815260040161358b9190614dcf565b6020604051808303815f875af11580156135a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190614de1565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f805160206157cc83398151915290505f6136448460400151611db9565b90505f60038251600581111561365c5761365c614afb565b148061367a575060048251600581111561367857613678614afb565b145b1561368a575060c08101516136c7565b60028251600581111561369f5761369f614afb565b036136ab5750426136c7565b815160405163170cc93360e21b815261063c9190600401614c8d565b84608001516001600160401b0316816001600160401b0316116136ee57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061371390611354565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b89190614de1565b95945050505050565b6137c96148f4565b5f8281525f8051602061584c8339815191526020526040808220815160e0810190925280545f805160206157ec83398151915293929190829060ff16600581111561381657613816614afb565b600581111561382757613827614afb565b815260200160018201805461383b90614c5b565b80601f016020809104026020016040519081016040528092919081815260200182805461386790614c5b565b80156138b25780601f10613889576101008083540402835291602001916138b2565b820191905f5260205f20905b81548152906001019060200180831161389557829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561392057613920614afb565b14613953575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614c8d565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561399757613997614afb565b0217905550602082015160018201906139b09082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613a4e858261344d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613ac85760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613b11576040519150601f19603f3d011682016040523d82523d5f602084013e613b16565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b7c57604051637fab81e560e01b815260040160405180910390fd5b5f805160206157ec83398151915242613b9b6060860160408701614a57565b6001600160401b0316111580613bd55750613bb96202a3004261508a565b613bc96060860160408701614a57565b6001600160401b031610155b15613c0f57613bea6060850160408601614a57565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613c24613c1f60608601866154f2565b614477565b613c34613c1f60808601866154f2565b6030613c436020860186615506565b905014613c7557613c576020850185615506565b6040516326475b2f60e11b815261063c925060040190815260200190565b613c7f8480615506565b90505f03613cac57613c918480615506565b604051633e08a12560e11b815260040161063c929190615548565b5f60088201613cbb8680615506565b604051613cc99291906153b2565b90815260200160405180910390205414613d0257613ce78480615506565b60405163a41f772f60e01b815260040161063c929190615548565b613d0c835f6141df565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101613d498a80615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d91908b018b615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613dda60608b0160408c01614a57565b6001600160401b03168152602001613df560608b018b6154f2565b613dfe9061555b565b8152602001613e1060808b018b6154f2565b613e199061555b565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e47919061567d565b5f60405180830381865af4158015613e61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e889190810190615734565b5f82815260068601602052604090209193509150613ea68282614fbb565b508160088401613eb68880615506565b604051613ec49291906153b2565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f00908590600401614dcf565b6020604051808303815f875af1158015613f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614de1565b6040805160e081019091529091508060018152602001613f608980615506565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115613fef57613fef614afb565b0217905550602082015160018201906140089082614fbb565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055806140a68880615506565b6040516140b49291906153b2565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906140f29190614a57565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661416957604051631afcd79f60e31b815260040160405180910390fd5b565b614173614120565b61417c816145e0565b6141846145f9565b611079606082013560808301356141a160c0850160a08601614a57565b6141b160e0860160c08701615777565b6141c2610100870160e08801615790565b6101008701356141da61014089016101208a01614e0c565b614609565b5f805160206157ec8339815191525f6001600160401b0380841690851611156142135761420c83856153e1565b9050614220565b61421d84846153e1565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061428257506001840154815161427e916001600160401b03169061508a565b8210155b156142a8576001600160401b0383166060820152818152604081015160208201526142c7565b82816060018181516142ba91906153c1565b6001600160401b03169052505b60608101516142d79060646154c7565b602082015160018601546001600160401b0392909216916143029190600160401b900460ff166150bf565b101561433257606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b03168160400181815161434d919061508a565b9052506040810180516001600160401b038716919061436d9083906154b4565b9052506001840154604082015160649161439291600160401b90910460ff16906150bf565b10156143b9578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f8051602061584c8339815191526020526040812060020180545f805160206157ec833981519152919060089061444c90600160401b90046001600160401b03166157b0565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6144846020820182614a2a565b63ffffffff161580156144a4575061449f6020820182614e27565b151590505b156144eb576144b66020820182614a2a565b6144c36020830183614e27565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6144f86020820182614e27565b90506145076020830183614a2a565b63ffffffff161115614520576144b66020820182614a2a565b60015b6145306020830183614e27565b905081101561160b576145466020830183614e27565b6145516001846154b4565b81811061456057614560614e6c565b90506020020160208101906145759190614e0c565b6001600160a01b031661458b6020840184614e27565b8381811061459b5761459b614e6c565b90506020020160208101906145b09190614e0c565b6001600160a01b031610156145d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614523565b6145e8614120565b6145f06147c5565b611079816147cd565b614601614120565b6141696148b5565b614611614120565b5f805160206157cc83398151915261ffff85161580614635575061271061ffff8616115b1561465957604051635f12e6c360e11b815261ffff8616600482015260240161063c565b8688111561467d5760405163222d164360e21b81526004810189905260240161063c565b60ff841615806146905750600a60ff8516115b156146b35760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b0316101561471a576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f0361473a5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614169614120565b6147d5614120565b80355f805160206157ec83398151915290815560146147fa6060840160408501615790565b60ff16118061481957506148146060830160408401615790565b60ff16155b1561484d5761482e6060830160408401615790565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b61485d6060830160408401615790565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561488e6040830160208401614a57565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d32614120565b5080546148c990614c5b565b5f825580601f106148d8575050565b601f0160209004905f5260205f20908101906110799190614931565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614945575f8155600101614932565b5090565b8015158114611079575f80fd5b803563ffffffff81168114611db4575f80fd5b5f805f6060848603121561497b575f80fd5b83359250602084013561498d81614949565b915061499b60408501614956565b90509250925092565b5f602082840312156149b4575f80fd5b5035919050565b5f80604083850312156149cc575f80fd5b82356001600160401b038111156149e1575f80fd5b8301608081860312156149f2575f80fd5b9150614a0060208401614956565b90509250929050565b5f8060408385031215614a1a575f80fd5b82359150614a0060208401614956565b5f60208284031215614a3a575f80fd5b6118fc82614956565b6001600160401b0381168114611079575f80fd5b5f60208284031215614a67575f80fd5b81356118fc81614a43565b803561ffff81168114611db4575f80fd5b5f805f60608486031215614a95575f80fd5b83356001600160401b03811115614aaa575f80fd5b840160a08187031215614abb575f80fd5b9250614ac960208501614a72565b91506040840135614ad981614a43565b809150509250925092565b5f6101408284031215614af5575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614b1f57614b1f614afb565b9052565b5f5b83811015614b3d578181015183820152602001614b25565b50505f910152565b5f8151808452614b5c816020860160208601614b23565b601f01601f19169290920160200192915050565b60208152614b82602082018351614b0f565b5f602083015160e06040840152614b9d610100840182614b45565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614c01575f80fd5b82356001600160401b0380821115614c17575f80fd5b818501915085601f830112614c2a575f80fd5b813581811115614c38575f80fd5b866020828501011115614c49575f80fd5b60209290920196919550909350505050565b600181811c90821680614c6f57607f821691505b602082108103614af557634e487b7160e01b5f52602260045260245ffd5b60208101610faa8284614b0f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614cd157614cd1614c9b565b60405290565b604080519081016001600160401b0381118282101715614cd157614cd1614c9b565b604051601f8201601f191681016001600160401b0381118282101715614d2157614d21614c9b565b604052919050565b5f6001600160401b03821115614d4157614d41614c9b565b50601f01601f191660200190565b5f82601f830112614d5e575f80fd5b8151614d71614d6c82614d29565b614cf9565b818152846020838601011115614d85575f80fd5b614d96826020830160208701614b23565b949350505050565b5f60208284031215614dae575f80fd5b81516001600160401b03811115614dc3575f80fd5b614d9684828501614d4f565b602081525f6118fc6020830184614b45565b5f60208284031215614df1575f80fd5b5051919050565b6001600160a01b0381168114611079575f80fd5b5f60208284031215614e1c575f80fd5b81356118fc81614df8565b5f808335601e19843603018112614e3c575f80fd5b8301803591506001600160401b03821115614e55575f80fd5b6020019150600581901b360382131561361d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614e94575f80fd5b9190910192915050565b5f82601f830112614ead575f80fd5b8135614ebb614d6c82614d29565b818152846020838601011115614ecf575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614efb575f80fd5b614f03614caf565b82356001600160401b0380821115614f19575f80fd5b614f2536838701614e9e565b83526020850135915080821115614f3a575f80fd5b50614f4736828601614e9e565b6020830152506040830135614f5b81614a43565b604082015292915050565b5f8251614e94818460208701614b23565b601f82111561064557805f5260205f20601f840160051c81016020851015614f9c5750805b601f840160051c820191505b81811015611b67575f8155600101614fa8565b81516001600160401b03811115614fd457614fd4614c9b565b614fe881614fe28454614c5b565b84614f77565b602080601f83116001811461501b575f84156150045750858301515b5f19600386901b1c1916600185901b1785556111ab565b5f85815260208120601f198616915b828110156150495788860151825594840194600190910190840161502a565b508582101561506657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610faa57610faa615076565b5f63ffffffff8083168181036150b5576150b5615076565b6001019392505050565b8082028115828204841417610faa57610faa615076565b5f808335601e198436030181126150eb575f80fd5b83016020810192503590506001600160401b03811115615109575f80fd5b80360382131561361d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156151f457848303601f19018952813536889003605e1901811261517b575f80fd5b8701606061518982806150d6565b8287526151998388018284615117565b925050506151a9868301836150d6565b868303888801526151bb838284615117565b9250505060408083013592506151d083614a43565b6001600160401b039290921694909101939093529783019790830190600101615156565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561522581614df8565b6001600160a01b031660608381019190915283013536849003601e1901811261524c575f80fd5b83016020810190356001600160401b03811115615267575f80fd5b8060051b3603821315615278575f80fd5b6080808501526137b860a08501828461513f565b5f826152a657634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106152bf576152bf614afb565b91905290565b5f805f606084860312156152d7575f80fd5b8351925060208401516152e981614a43565b6040850151909250614ad981614a43565b5f806040838503121561530b575f80fd5b82519150602083015161531d81614949565b809150509250929050565b5f60208083525f845461533a81614c5b565b806020870152604060018084165f811461535b5760018114615377576153a4565b60ff19851660408a0152604084151560051b8a010195506153a4565b895f5260205f205f5b8581101561539b5781548b8201860152908301908801615380565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123c3576123c3615076565b6001600160401b038281168282160390808211156123c3576123c3615076565b5f8060408385031215615412575f80fd5b82516001600160401b0380821115615428575f80fd5b908401906060828703121561543b575f80fd5b615443614caf565b82518152602083015161545581614df8565b602082015260408301518281111561546b575f80fd5b61547788828601614d4f565b604083015250809450505050602083015161531d81614949565b5f80604083850312156154a2575f80fd5b82519150602083015161531d81614a43565b81810381811115610faa57610faa615076565b6001600160401b038181168382160280821691908281146154ea576154ea615076565b505092915050565b5f8235603e19833603018112614e94575f80fd5b5f808335601e1984360301811261551b575f80fd5b8301803591506001600160401b03821115615534575f80fd5b60200191503681900382131561361d575f80fd5b602081525f614d96602083018486615117565b5f6040823603121561556b575f80fd5b615573614cd7565b61557c83614956565b81526020808401356001600160401b0380821115615598575f80fd5b9085019036601f8301126155aa575f80fd5b8135818111156155bc576155bc614c9b565b8060051b91506155cd848301614cf9565b81815291830184019184810190368411156155e6575f80fd5b938501935b83851015615610578435925061560083614df8565b82825293850193908501906155eb565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156126e05784516001600160a01b03168252938301936001929092019190830190615654565b60208152815160208201525f602083015160e060408401526156a3610100840182614b45565b90506040840151601f19808584030160608601526156c18383614b45565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526156f18383615622565b925060a08601519150808584030160c08601525061570f8282615622565b91505060c084015161572c60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615745575f80fd5b8251915060208301516001600160401b03811115615761575f80fd5b61576d85828601614d4f565b9150509250929050565b5f60208284031215615787575f80fd5b6118fc82614a72565b5f602082840312156157a0575f80fd5b813560ff811681146118fc575f80fd5b5f6001600160401b038083168181036150b5576150b561507656fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212200faf48526cb8aa5e0ef7f33d69c067a27d88629665765cbe7a4951d944b81c5b64736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 15ca8ac79..eff50f54f 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -91,7 +91,7 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidSubnetConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structSubnetConversionData\",\"name\":\"subnetConversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516137da3803806137da83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61368d8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461287e565b610312565b005b6101496101593660046128ad565b6105a2565b61014961016c3660046128fb565b610ba8565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461287e565b610bb6565b6040516001600160401b03909116815260200161018a565b610149610bca565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461287e565b610bdd565b6101cd61025a36600461292a565b610bf2565b61014961026d3660046128fb565b610c0e565b6102216005600160991b0181565b6101cd5f8051602061361883398151915281565b6101496102a236600461287e565b610e03565b6101e3601481565b6101496102bd366004612983565b610f40565b6102d56102d036600461287e565b61104e565b60405161018a9190612a40565b6101a66202a30081565b6101496102fa366004612ac0565b61119d565b6101cd61030d366004612ae2565b6111da565b5f8181525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561035f5761035f6129bf565b6005811115610370576103706129bf565b815260200160018201805461038490612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612b4d565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610466576104666129bf565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60405180910390fd5b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c96565b6040518263ffffffff1660e01b815260040161055c9190612cc7565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612cd9565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206136188339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612cd9565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612ac0565b6001600160a01b0316146106d8576106b36060840160408501612ac0565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612cf0565b905090505f805b828163ffffffff1610156109ce575f6107096060880188612cf0565b8363ffffffff1681811061071f5761071f612d35565b90506020028101906107319190612d49565b61073a90612db4565b80516040519192505f91600888019161075291612e2d565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612cc7565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612e2d565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612cd9565b90508086600801835f01516040516108219190612e2d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156108a3576108a36129bf565b0217905550602082015160018201906108bc9082612e89565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610961911685612f5c565b825160405191955061097291612e2d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109c790612f6f565b90506106ed565b506004830181905560018301546064906109f290600160401b900460ff1683612f91565b1015610a1457604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610a3887611235565b604001516040518263ffffffff1660e01b8152600401610a589190612cc7565b602060405180830381865af4158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190612cd9565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ad191906130cb565b5f60405180830381865af4158015610aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b129190810190612c96565b90505f600282604051610b259190612e2d565b602060405180830381855afa158015610b40573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b639190612cd9565b9050828114610b8f57604051631872fc8d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610bb18161134b565b505050565b5f610bc08261104e565b6080015192915050565b610bd26116fe565b610bdb5f611759565b565b610be56116fe565b610bee816117c9565b5050565b5f610bfb6116fe565b610c058383611aad565b90505b92915050565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb5610c4186611235565b604001516040518263ffffffff1660e01b8152600401610c619190612cc7565b6040805180830381865af4158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f919061316e565b9150915080610cc557604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610cdf90612b4d565b90505f03610d035760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610d2957610d296129bf565b14610d5c575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f8281526006840160205260408120610d74916127f2565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206136188339815191529190610e4a90612b4d565b90505f03610e6e5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e9457610e946129bf565b14610ec7575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f00919060040161318f565b6020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190612cd9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f845750825b90505f826001600160401b03166001148015610f9f5750303b155b905081158015610fad575080155b15610fcb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ff557845460ff60401b1916600160401b1785555b610fff8787612095565b831561104557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611056612829565b5f8281525f80516020613638833981519152602052604090819020815160e0810190925280545f80516020613618833981519152929190829060ff1660058111156110a3576110a36129bf565b60058111156110b4576110b46129bf565b81526020016001820180546110c890612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546110f490612b4d565b801561113f5780601f106111165761010080835404028352916020019161113f565b820191905f5260205f20905b81548152906001019060200180831161112257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6111a56116fe565b6001600160a01b0381166111ce57604051631e4fbdf760e01b81525f6004820152602401610499565b6111d781611759565b50565b6040515f905f80516020613618833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061121d9086908690613219565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112c09190810190613228565b91509150806112e257604051636b2f19e960e01b815260040160405180910390fd5b815115611308578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b031615611344576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f611354612829565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561138788611235565b604001516040518263ffffffff1660e01b81526004016113a79190612cc7565b6040805180830381865af41580156113c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e5919061316e565b91509150801561140c57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561143d5761143d6129bf565b600581111561144e5761144e6129bf565b815260200160018201805461146290612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461148e90612b4d565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115611544576115446129bf565b141580156115655750600181516005811115611562576115626129bf565b14155b1561158657805160405163170cc93360e21b81526104999190600401612b85565b60038151600581111561159b5761159b6129bf565b036115a957600481526115ae565b600581525b8360080181602001516040516115c49190612e2d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115611608576116086129bf565b0217905550602082015160018201906116219082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116c7576116c76129bf565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bdb5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117d1612829565b5f8281525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561181e5761181e6129bf565b600581111561182f5761182f6129bf565b815260200160018201805461184390612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461186f90612b4d565b80156118ba5780601f10611891576101008083540402835291602001916118ba565b820191905f5260205f20905b81548152906001019060200180831161189d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611928576119286129bf565b1461195b575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561199f5761199f6129bf565b0217905550602082015160018201906119b89082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a5685826120af565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611af157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061361883398151915242611b1060608601604087016132b5565b6001600160401b0316111580611b4a5750611b2e6202a30042612f5c565b611b3e60608601604087016132b5565b6001600160401b031610155b15611b8457611b5f60608501604086016132b5565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b99611b9460608601866132ce565b612286565b611ba9611b9460808601866132ce565b6030611bb860208601866132e2565b905014611bea57611bcc60208501856132e2565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bf484806132e2565b90505f03611c2157611c0684806132e2565b604051633e08a12560e11b8152600401610499929190613324565b5f60088201611c3086806132e2565b604051611c3e929190613219565b90815260200160405180910390205414611c7757611c5c84806132e2565b60405163a41f772f60e01b8152600401610499929190613324565b611c81835f6123ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101611cbe8a806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d06908b018b6132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d4f60608b0160408c016132b5565b6001600160401b03168152602001611d6a60608b018b6132ce565b611d7390613337565b8152602001611d8560808b018b6132ce565b611d8e90613337565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dbc9190613464565b5f60405180830381865af4158015611dd6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dfd919081019061351b565b5f82815260068601602052604090209193509150611e1b8282612e89565b508160088401611e2b88806132e2565b604051611e39929190613219565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e75908590600401612cc7565b6020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190612cd9565b6040805160e081019091529091508060018152602001611ed589806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611f6457611f646129bf565b021790555060208201516001820190611f7d9082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558061201b88806132e2565b604051612029929190613219565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061206791906132b5565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61209d612612565b6120a68261265b565b610bee81612674565b5f8281525f80516020613638833981519152602052604081206002015481905f8051602061361883398151915290600160801b90046001600160401b03166120f785826123ef565b5f61210187612685565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156121aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d19190810190612c96565b6040518263ffffffff1660e01b81526004016121ed9190612cc7565b6020604051808303815f875af1158015612209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222d9190612cd9565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61229360208201826128fb565b63ffffffff161580156122b357506122ae6020820182612cf0565b151590505b156122fa576122c560208201826128fb565b6122d26020830183612cf0565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6123076020820182612cf0565b905061231660208301836128fb565b63ffffffff16111561232f576122c560208201826128fb565b60015b61233f6020830183612cf0565b9050811015610bee576123556020830183612cf0565b61236060018461355e565b81811061236f5761236f612d35565b90506020020160208101906123849190612ac0565b6001600160a01b031661239a6020840184612cf0565b838181106123aa576123aa612d35565b90506020020160208101906123bf9190612ac0565b6001600160a01b031610156123e757604051630dbc8d5f60e31b815260040160405180910390fd5b600101612332565b5f805160206136188339815191525f6001600160401b0380841690851611156124235761241c8385613571565b9050612430565b61242d8484613571565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061249257506001840154815161248e916001600160401b031690612f5c565b8210155b156124b8576001600160401b0383166060820152818152604081015160208201526124d7565b82816060018181516124ca9190613591565b6001600160401b03169052505b60608101516124e79060646135b1565b602082015160018601546001600160401b0392909216916125129190600160401b900460ff16612f91565b101561254257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b03168160400181815161255d9190612f5c565b9052506040810180516001600160401b038716919061257d90839061355e565b905250600184015460408201516064916125a291600160401b90910460ff1690612f91565b10156125c9578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610bdb57604051631afcd79f60e31b815260040160405180910390fd5b612663612612565b61266b6126fa565b6111d781612702565b61267c612612565b6111d7816127ea565b5f8181525f805160206136388339815191526020526040812060020180545f8051602061361883398151915291906008906126cf90600160401b90046001600160401b03166135dc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610bdb612612565b61270a612612565b80355f80516020613618833981519152908155601461272f60608401604085016135f7565b60ff16118061274e575061274960608301604084016135f7565b60ff16155b156127825761276360608301604084016135f7565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61279260608301604084016135f7565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556127c360408301602084016132b5565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111a5612612565b5080546127fe90612b4d565b5f825580601f1061280d575050565b601f0160209004905f5260205f20908101906111d79190612866565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561287a575f8155600101612867565b5090565b5f6020828403121561288e575f80fd5b5035919050565b803563ffffffff811681146128a8575f80fd5b919050565b5f80604083850312156128be575f80fd5b82356001600160401b038111156128d3575f80fd5b8301608081860312156128e4575f80fd5b91506128f260208401612895565b90509250929050565b5f6020828403121561290b575f80fd5b610c0582612895565b80356001600160401b03811681146128a8575f80fd5b5f806040838503121561293b575f80fd5b82356001600160401b03811115612950575f80fd5b830160a08186031215612961575f80fd5b91506128f260208401612914565b6001600160a01b03811681146111d7575f80fd5b5f808284036080811215612995575f80fd5b60608112156129a2575f80fd5b5082915060608301356129b48161296f565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106129ef57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612a0d5781810151838201526020016129f5565b50505f910152565b5f8151808452612a2c8160208601602086016129f3565b601f01601f19169290920160200192915050565b60208152612a526020820183516129d3565b5f602083015160e06040840152612a6d610100840182612a15565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612ad0575f80fd5b8135612adb8161296f565b9392505050565b5f8060208385031215612af3575f80fd5b82356001600160401b0380821115612b09575f80fd5b818501915085601f830112612b1c575f80fd5b813581811115612b2a575f80fd5b866020828501011115612b3b575f80fd5b60209290920196919550909350505050565b600181811c90821680612b6157607f821691505b602082108103612b7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c0882846129d3565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612bc957612bc9612b93565b60405290565b604080519081016001600160401b0381118282101715612bc957612bc9612b93565b604051601f8201601f191681016001600160401b0381118282101715612c1957612c19612b93565b604052919050565b5f6001600160401b03821115612c3957612c39612b93565b50601f01601f191660200190565b5f82601f830112612c56575f80fd5b8151612c69612c6482612c21565b612bf1565b818152846020838601011115612c7d575f80fd5b612c8e8260208301602087016129f3565b949350505050565b5f60208284031215612ca6575f80fd5b81516001600160401b03811115612cbb575f80fd5b612c8e84828501612c47565b602081525f610c056020830184612a15565b5f60208284031215612ce9575f80fd5b5051919050565b5f808335601e19843603018112612d05575f80fd5b8301803591506001600160401b03821115612d1e575f80fd5b6020019150600581901b360382131561227f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d5d575f80fd5b9190910192915050565b5f82601f830112612d76575f80fd5b8135612d84612c6482612c21565b818152846020838601011115612d98575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612dc4575f80fd5b612dcc612ba7565b82356001600160401b0380821115612de2575f80fd5b612dee36838701612d67565b83526020850135915080821115612e03575f80fd5b50612e1036828601612d67565b602083015250612e2260408401612914565b604082015292915050565b5f8251612d5d8184602087016129f3565b601f821115610bb157805f5260205f20601f840160051c81016020851015612e635750805b601f840160051c820191505b81811015612e82575f8155600101612e6f565b5050505050565b81516001600160401b03811115612ea257612ea2612b93565b612eb681612eb08454612b4d565b84612e3e565b602080601f831160018114612ee9575f8415612ed25750858301515b5f19600386901b1c1916600185901b178555612f40565b5f85815260208120601f198616915b82811015612f1757888601518255948401946001909101908401612ef8565b5085821015612f3457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0857610c08612f48565b5f63ffffffff808316818103612f8757612f87612f48565b6001019392505050565b8082028115828204841417610c0857610c08612f48565b5f808335601e19843603018112612fbd575f80fd5b83016020810192503590506001600160401b03811115612fdb575f80fd5b80360382131561227f575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156130be57848303601f19018952813536889003605e1901811261304d575f80fd5b8701606061305b8280612fa8565b82875261306b8388018284612fe9565b9250505061307b86830183612fa8565b8683038888015261308d838284612fe9565b9250505060406001600160401b036130a6828501612914565b16950194909452509783019790830190600101613028565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356130ef8161296f565b6001600160a01b031660608381019190915283013536849003601e19018112613116575f80fd5b83016020810190356001600160401b03811115613131575f80fd5b8060051b3603821315613142575f80fd5b60808085015261315660a085018284613011565b95945050505050565b805180151581146128a8575f80fd5b5f806040838503121561317f575f80fd5b825191506128f26020840161315f565b5f60208083525f84546131a181612b4d565b806020870152604060018084165f81146131c257600181146131de5761320b565b60ff19851660408a0152604084151560051b8a0101955061320b565b895f5260205f205f5b858110156132025781548b82018601529083019088016131e7565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f8060408385031215613239575f80fd5b82516001600160401b038082111561324f575f80fd5b9084019060608287031215613262575f80fd5b61326a612ba7565b82518152602083015161327c8161296f565b6020820152604083015182811115613292575f80fd5b61329e88828601612c47565b60408301525093506128f29150506020840161315f565b5f602082840312156132c5575f80fd5b610c0582612914565b5f8235603e19833603018112612d5d575f80fd5b5f808335601e198436030181126132f7575f80fd5b8301803591506001600160401b03821115613310575f80fd5b60200191503681900382131561227f575f80fd5b602081525f612c8e602083018486612fe9565b5f60408236031215613347575f80fd5b61334f612bcf565b61335883612895565b81526020808401356001600160401b0380821115613374575f80fd5b9085019036601f830112613386575f80fd5b81358181111561339857613398612b93565b8060051b91506133a9848301612bf1565b81815291830184019184810190368411156133c2575f80fd5b938501935b838510156133ec57843592506133dc8361296f565b82825293850193908501906133c7565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156134595784516001600160a01b03168252938301936001929092019190830190613430565b509695505050505050565b60208152815160208201525f602083015160e0604084015261348a610100840182612a15565b90506040840151601f19808584030160608601526134a88383612a15565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134d883836133fe565b925060a08601519150808584030160c0860152506134f682826133fe565b91505060c084015161351360e08501826001600160401b03169052565b509392505050565b5f806040838503121561352c575f80fd5b8251915060208301516001600160401b03811115613548575f80fd5b61355485828601612c47565b9150509250929050565b81810381811115610c0857610c08612f48565b6001600160401b0382811682821603908082111561134457611344612f48565b6001600160401b0381811683821601908082111561134457611344612f48565b6001600160401b038181168382160280821691908281146135d4576135d4612f48565b505092915050565b5f6001600160401b03808316818103612f8757612f87612f48565b5f60208284031215613607575f80fd5b813560ff81168114612adb575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212200dc58b43f7c5b3d7e1e4a5efa2639d967fff9e57b3fdf2e81a11f4dc03b6197864736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040516137da3803806137da83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61368d8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461287e565b610312565b005b6101496101593660046128ad565b6105a2565b61014961016c3660046128fb565b610ba8565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461287e565b610bb6565b6040516001600160401b03909116815260200161018a565b610149610bca565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461287e565b610bdd565b6101cd61025a36600461292a565b610bf2565b61014961026d3660046128fb565b610c0e565b6102216005600160991b0181565b6101cd5f8051602061361883398151915281565b6101496102a236600461287e565b610e03565b6101e3601481565b6101496102bd366004612983565b610f40565b6102d56102d036600461287e565b61104e565b60405161018a9190612a40565b6101a66202a30081565b6101496102fa366004612ac0565b61119d565b6101cd61030d366004612ae2565b6111da565b5f8181525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561035f5761035f6129bf565b6005811115610370576103706129bf565b815260200160018201805461038490612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612b4d565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610466576104666129bf565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60405180910390fd5b60608101516040516342a2e0b560e11b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c96565b6040518263ffffffff1660e01b815260040161055c9190612cc7565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612cd9565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f805160206136188339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612cd9565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612ac0565b6001600160a01b0316146106d8576106b36060840160408501612ac0565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612cf0565b905090505f805b828163ffffffff1610156109ce575f6107096060880188612cf0565b8363ffffffff1681811061071f5761071f612d35565b90506020028101906107319190612d49565b61073a90612db4565b80516040519192505f91600888019161075291612e2d565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612cc7565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612e2d565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612cd9565b90508086600801835f01516040516108219190612e2d565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156108a3576108a36129bf565b0217905550602082015160018201906108bc9082612e89565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155830151610961911685612f5c565b825160405191955061097291612e2d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109c790612f6f565b90506106ed565b506004830181905560018301546064906109f290600160401b900460ff1683612f91565b1015610a1457604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__631e6d9789610a3887611235565b604001516040518263ffffffff1660e01b8152600401610a589190612cc7565b602060405180830381865af4158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190612cd9565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__63862bfa63886040518263ffffffff1660e01b8152600401610ad191906130cb565b5f60405180830381865af4158015610aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b129190810190612c96565b90505f600282604051610b259190612e2d565b602060405180830381855afa158015610b40573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b639190612cd9565b9050828114610b8f57604051631872fc8d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610bb18161134b565b505050565b5f610bc08261104e565b6080015192915050565b610bd26116fe565b610bdb5f611759565b565b610be56116fe565b610bee816117c9565b5050565b5f610bfb6116fe565b610c058383611aad565b90505b92915050565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb5610c4186611235565b604001516040518263ffffffff1660e01b8152600401610c619190612cc7565b6040805180830381865af4158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f919061316e565b9150915080610cc557604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610cdf90612b4d565b90505f03610d035760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610d2957610d296129bf565b14610d5c575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f8281526006840160205260408120610d74916127f2565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f805160206136188339815191529190610e4a90612b4d565b90505f03610e6e5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e9457610e946129bf565b14610ec7575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f00919060040161318f565b6020604051808303815f875af1158015610f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190612cd9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f845750825b90505f826001600160401b03166001148015610f9f5750303b155b905081158015610fad575080155b15610fcb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ff557845460ff60401b1916600160401b1785555b610fff8787612095565b831561104557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611056612829565b5f8281525f80516020613638833981519152602052604090819020815160e0810190925280545f80516020613618833981519152929190829060ff1660058111156110a3576110a36129bf565b60058111156110b4576110b46129bf565b81526020016001820180546110c890612b4d565b80601f01602080910402602001604051908101604052809291908181526020018280546110f490612b4d565b801561113f5780601f106111165761010080835404028352916020019161113f565b820191905f5260205f20905b81548152906001019060200180831161112257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6111a56116fe565b6001600160a01b0381166111ce57604051631e4fbdf760e01b81525f6004820152602401610499565b6111d781611759565b50565b6040515f905f80516020613618833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061121d9086908690613219565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112c09190810190613228565b91509150806112e257604051636b2f19e960e01b815260040160405180910390fd5b815115611308578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b031615611344576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f611354612829565b5f805160206136188339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__632e43ceb561138788611235565b604001516040518263ffffffff1660e01b81526004016113a79190612cc7565b6040805180830381865af41580156113c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e5919061316e565b91509150801561140c57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561143d5761143d6129bf565b600581111561144e5761144e6129bf565b815260200160018201805461146290612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461148e90612b4d565b80156114d95780601f106114b0576101008083540402835291602001916114d9565b820191905f5260205f20905b8154815290600101906020018083116114bc57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115611544576115446129bf565b141580156115655750600181516005811115611562576115626129bf565b14155b1561158657805160405163170cc93360e21b81526104999190600401612b85565b60038151600581111561159b5761159b6129bf565b036115a957600481526115ae565b600581525b8360080181602001516040516115c49190612e2d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115611608576116086129bf565b0217905550602082015160018201906116219082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116c7576116c76129bf565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bdb5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117d1612829565b5f8281525f805160206136388339815191526020526040808220815160e0810190925280545f8051602061361883398151915293929190829060ff16600581111561181e5761181e6129bf565b600581111561182f5761182f6129bf565b815260200160018201805461184390612b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461186f90612b4d565b80156118ba5780601f10611891576101008083540402835291602001916118ba565b820191905f5260205f20905b81548152906001019060200180831161189d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611928576119286129bf565b1461195b575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b85565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561199f5761199f6129bf565b0217905550602082015160018201906119b89082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a5685826120af565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611af157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061361883398151915242611b1060608601604087016132b5565b6001600160401b0316111580611b4a5750611b2e6202a30042612f5c565b611b3e60608601604087016132b5565b6001600160401b031610155b15611b8457611b5f60608501604086016132b5565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b99611b9460608601866132ce565b612286565b611ba9611b9460808601866132ce565b6030611bb860208601866132e2565b905014611bea57611bcc60208501856132e2565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bf484806132e2565b90505f03611c2157611c0684806132e2565b604051633e08a12560e11b8152600401610499929190613324565b5f60088201611c3086806132e2565b604051611c3e929190613219565b90815260200160405180910390205414611c7757611c5c84806132e2565b60405163a41f772f60e01b8152600401610499929190613324565b611c81835f6123ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063e047b2839060208101611cbe8a806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d06908b018b6132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d4f60608b0160408c016132b5565b6001600160401b03168152602001611d6a60608b018b6132ce565b611d7390613337565b8152602001611d8560808b018b6132ce565b611d8e90613337565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dbc9190613464565b5f60405180830381865af4158015611dd6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dfd919081019061351b565b5f82815260068601602052604090209193509150611e1b8282612e89565b508160088401611e2b88806132e2565b604051611e39929190613219565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e75908590600401612cc7565b6020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190612cd9565b6040805160e081019091529091508060018152602001611ed589806132e2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611f6457611f646129bf565b021790555060208201516001820190611f7d9082612e89565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558061201b88806132e2565b604051612029929190613219565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061206791906132b5565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61209d612612565b6120a68261265b565b610bee81612674565b5f8281525f80516020613638833981519152602052604081206002015481905f8051602061361883398151915290600160801b90046001600160401b03166120f785826123ef565b5f61210187612685565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c81169182029290921790925591516342a2e0b560e11b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__90638545c16a906064015f60405180830381865af41580156121aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121d19190810190612c96565b6040518263ffffffff1660e01b81526004016121ed9190612cc7565b6020604051808303815f875af1158015612209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222d9190612cd9565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61229360208201826128fb565b63ffffffff161580156122b357506122ae6020820182612cf0565b151590505b156122fa576122c560208201826128fb565b6122d26020830183612cf0565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6123076020820182612cf0565b905061231660208301836128fb565b63ffffffff16111561232f576122c560208201826128fb565b60015b61233f6020830183612cf0565b9050811015610bee576123556020830183612cf0565b61236060018461355e565b81811061236f5761236f612d35565b90506020020160208101906123849190612ac0565b6001600160a01b031661239a6020840184612cf0565b838181106123aa576123aa612d35565b90506020020160208101906123bf9190612ac0565b6001600160a01b031610156123e757604051630dbc8d5f60e31b815260040160405180910390fd5b600101612332565b5f805160206136188339815191525f6001600160401b0380841690851611156124235761241c8385613571565b9050612430565b61242d8484613571565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061249257506001840154815161248e916001600160401b031690612f5c565b8210155b156124b8576001600160401b0383166060820152818152604081015160208201526124d7565b82816060018181516124ca9190613591565b6001600160401b03169052505b60608101516124e79060646135b1565b602082015160018601546001600160401b0392909216916125129190600160401b900460ff16612f91565b101561254257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b03168160400181815161255d9190612f5c565b9052506040810180516001600160401b038716919061257d90839061355e565b905250600184015460408201516064916125a291600160401b90910460ff1690612f91565b10156125c9578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610bdb57604051631afcd79f60e31b815260040160405180910390fd5b612663612612565b61266b6126fa565b6111d781612702565b61267c612612565b6111d7816127ea565b5f8181525f805160206136388339815191526020526040812060020180545f8051602061361883398151915291906008906126cf90600160401b90046001600160401b03166135dc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610bdb612612565b61270a612612565b80355f80516020613618833981519152908155601461272f60608401604085016135f7565b60ff16118061274e575061274960608301604084016135f7565b60ff16155b156127825761276360608301604084016135f7565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61279260608301604084016135f7565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556127c360408301602084016132b5565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111a5612612565b5080546127fe90612b4d565b5f825580601f1061280d575050565b601f0160209004905f5260205f20908101906111d79190612866565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561287a575f8155600101612867565b5090565b5f6020828403121561288e575f80fd5b5035919050565b803563ffffffff811681146128a8575f80fd5b919050565b5f80604083850312156128be575f80fd5b82356001600160401b038111156128d3575f80fd5b8301608081860312156128e4575f80fd5b91506128f260208401612895565b90509250929050565b5f6020828403121561290b575f80fd5b610c0582612895565b80356001600160401b03811681146128a8575f80fd5b5f806040838503121561293b575f80fd5b82356001600160401b03811115612950575f80fd5b830160a08186031215612961575f80fd5b91506128f260208401612914565b6001600160a01b03811681146111d7575f80fd5b5f808284036080811215612995575f80fd5b60608112156129a2575f80fd5b5082915060608301356129b48161296f565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106129ef57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612a0d5781810151838201526020016129f5565b50505f910152565b5f8151808452612a2c8160208601602086016129f3565b601f01601f19169290920160200192915050565b60208152612a526020820183516129d3565b5f602083015160e06040840152612a6d610100840182612a15565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612ad0575f80fd5b8135612adb8161296f565b9392505050565b5f8060208385031215612af3575f80fd5b82356001600160401b0380821115612b09575f80fd5b818501915085601f830112612b1c575f80fd5b813581811115612b2a575f80fd5b866020828501011115612b3b575f80fd5b60209290920196919550909350505050565b600181811c90821680612b6157607f821691505b602082108103612b7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c0882846129d3565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612bc957612bc9612b93565b60405290565b604080519081016001600160401b0381118282101715612bc957612bc9612b93565b604051601f8201601f191681016001600160401b0381118282101715612c1957612c19612b93565b604052919050565b5f6001600160401b03821115612c3957612c39612b93565b50601f01601f191660200190565b5f82601f830112612c56575f80fd5b8151612c69612c6482612c21565b612bf1565b818152846020838601011115612c7d575f80fd5b612c8e8260208301602087016129f3565b949350505050565b5f60208284031215612ca6575f80fd5b81516001600160401b03811115612cbb575f80fd5b612c8e84828501612c47565b602081525f610c056020830184612a15565b5f60208284031215612ce9575f80fd5b5051919050565b5f808335601e19843603018112612d05575f80fd5b8301803591506001600160401b03821115612d1e575f80fd5b6020019150600581901b360382131561227f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d5d575f80fd5b9190910192915050565b5f82601f830112612d76575f80fd5b8135612d84612c6482612c21565b818152846020838601011115612d98575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612dc4575f80fd5b612dcc612ba7565b82356001600160401b0380821115612de2575f80fd5b612dee36838701612d67565b83526020850135915080821115612e03575f80fd5b50612e1036828601612d67565b602083015250612e2260408401612914565b604082015292915050565b5f8251612d5d8184602087016129f3565b601f821115610bb157805f5260205f20601f840160051c81016020851015612e635750805b601f840160051c820191505b81811015612e82575f8155600101612e6f565b5050505050565b81516001600160401b03811115612ea257612ea2612b93565b612eb681612eb08454612b4d565b84612e3e565b602080601f831160018114612ee9575f8415612ed25750858301515b5f19600386901b1c1916600185901b178555612f40565b5f85815260208120601f198616915b82811015612f1757888601518255948401946001909101908401612ef8565b5085821015612f3457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0857610c08612f48565b5f63ffffffff808316818103612f8757612f87612f48565b6001019392505050565b8082028115828204841417610c0857610c08612f48565b5f808335601e19843603018112612fbd575f80fd5b83016020810192503590506001600160401b03811115612fdb575f80fd5b80360382131561227f575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156130be57848303601f19018952813536889003605e1901811261304d575f80fd5b8701606061305b8280612fa8565b82875261306b8388018284612fe9565b9250505061307b86830183612fa8565b8683038888015261308d838284612fe9565b9250505060406001600160401b036130a6828501612914565b16950194909452509783019790830190600101613028565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356130ef8161296f565b6001600160a01b031660608381019190915283013536849003601e19018112613116575f80fd5b83016020810190356001600160401b03811115613131575f80fd5b8060051b3603821315613142575f80fd5b60808085015261315660a085018284613011565b95945050505050565b805180151581146128a8575f80fd5b5f806040838503121561317f575f80fd5b825191506128f26020840161315f565b5f60208083525f84546131a181612b4d565b806020870152604060018084165f81146131c257600181146131de5761320b565b60ff19851660408a0152604084151560051b8a0101955061320b565b895f5260205f205f5b858110156132025781548b82018601529083019088016131e7565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f8060408385031215613239575f80fd5b82516001600160401b038082111561324f575f80fd5b9084019060608287031215613262575f80fd5b61326a612ba7565b82518152602083015161327c8161296f565b6020820152604083015182811115613292575f80fd5b61329e88828601612c47565b60408301525093506128f29150506020840161315f565b5f602082840312156132c5575f80fd5b610c0582612914565b5f8235603e19833603018112612d5d575f80fd5b5f808335601e198436030181126132f7575f80fd5b8301803591506001600160401b03821115613310575f80fd5b60200191503681900382131561227f575f80fd5b602081525f612c8e602083018486612fe9565b5f60408236031215613347575f80fd5b61334f612bcf565b61335883612895565b81526020808401356001600160401b0380821115613374575f80fd5b9085019036601f830112613386575f80fd5b81358181111561339857613398612b93565b8060051b91506133a9848301612bf1565b81815291830184019184810190368411156133c2575f80fd5b938501935b838510156133ec57843592506133dc8361296f565b82825293850193908501906133c7565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156134595784516001600160a01b03168252938301936001929092019190830190613430565b509695505050505050565b60208152815160208201525f602083015160e0604084015261348a610100840182612a15565b90506040840151601f19808584030160608601526134a88383612a15565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134d883836133fe565b925060a08601519150808584030160c0860152506134f682826133fe565b91505060c084015161351360e08501826001600160401b03169052565b509392505050565b5f806040838503121561352c575f80fd5b8251915060208301516001600160401b03811115613548575f80fd5b61355485828601612c47565b9150509250929050565b81810381811115610c0857610c08612f48565b6001600160401b0382811682821603908082111561134457611344612f48565b6001600160401b0381811683821601908082111561134457611344612f48565b6001600160401b038181168382160280821691908281146135d4576135d4612f48565b505092915050565b5f6001600160401b03808316818103612f8757612f87612f48565b5f60208284031215613607575f80fd5b813560ff81168114612adb575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212209b8c193d69fc4221012ea1441c28a7b912cf23d4b8a4abd4f9d4e8aa1a410f3864736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. From 3259f84e2a22f5cfc05295ea71b7c76801240149 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 29 Oct 2024 17:30:34 -0500 Subject: [PATCH 28/43] update to latest names in acp-77 spec --- .../ERC20TokenStakingManager.go | 38 +++--- .../NativeTokenStakingManager.go | 38 +++--- .../PoAValidatorManager.go | 38 +++--- .../validator-manager/PoSValidatorManager.sol | 6 +- .../validator-manager/ValidatorManager.sol | 53 ++++---- .../validator-manager/ValidatorMessages.sol | 120 +++++++++--------- .../interfaces/IValidatorManager.sol | 17 ++- .../tests/ERC20TokenStakingManagerTests.t.sol | 2 +- .../NativeTokenStakingManagerTests.t.sol | 2 +- .../tests/PoAValidatorManagerTests.t.sol | 2 +- .../tests/PoSValidatorManagerTests.t.sol | 28 ++-- .../tests/ValidatorManagerTests.t.sol | 46 +++---- .../tests/ValidatorMessagesTests.t.sol | 18 +-- 13 files changed, 197 insertions(+), 211 deletions(-) diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 513f1beee..35706932d 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -29,6 +29,14 @@ var ( _ = abi.ConvertType ) +// ConversionData is an auto generated low-level Go binding around an user-defined struct. +type ConversionData struct { + SubnetID [32]byte + ValidatorManagerBlockchainID [32]byte + ValidatorManagerAddress common.Address + InitialValidators []InitialValidator +} + // InitialValidator is an auto generated low-level Go binding around an user-defined struct. type InitialValidator struct { NodeID []byte @@ -54,14 +62,6 @@ type PoSValidatorManagerSettings struct { RewardCalculator common.Address } -// SubnetConversionData is an auto generated low-level Go binding around an user-defined struct. -type SubnetConversionData struct { - SubnetID [32]byte - ValidatorManagerBlockchainID [32]byte - ValidatorManagerAddress common.Address - InitialValidators []InitialValidator -} - // Validator is an auto generated low-level Go binding around an user-defined struct. type Validator struct { Status uint8 @@ -91,8 +91,8 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTokenAddress\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615f31380380615f3183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615de48061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101c1575f3560e01c80638280a25a116100f6578063ba3a4b971161009a578063ba3a4b97146103d9578063bc5fbfec146103ec578063bee0a03f14610413578063c974d1b614610426578063d5f20ff61461042e578063df93d8de1461044e578063e4a63c4014610458578063f74c607b1461047f578063fd7ac5e714610492575f80fd5b80638280a25a1461034357806393e245981461034b57806398f3e2b41461035e5780639e1bc4ef14610371578063a3a65e4814610384578063a9778a7a14610270578063afb9809614610397578063b771b3bc146103be575f80fd5b80633a1cfff6116101685780633a1cfff61461028c578063467ef06f1461029f5780634bee0040146102b25780635297fae6146102d357806360305d62146102e6578063620658561461030357806366435abf14610316578063732214f81461032957806376f7862114610330575f80fd5b80630118acc4146101c55780630322ed98146101da578063151d30d1146101ed5780631ec447241461020c57806320d91b7a1461021f57806325e1c776146102325780632e2194d81461024557806335455ded14610270575b5f80fd5b6101d86101d3366004615085565b6104a5565b005b6101d86101e83660046150c0565b6104da565b6101f5600a81565b60405160ff90911681526020015b60405180910390f35b6101d861021a366004615085565b6106dd565b6101d861022d3660046150d7565b6106e8565b6101d8610240366004615125565b610be6565b6102586102533660046150c0565b610c5a565b6040516001600160401b039091168152602001610203565b61027961271081565b60405161ffff9091168152602001610203565b6101d861029a366004615085565b610cae565b6101d86102ad366004615146565b610cb9565b6102c56102c0366004615186565b610d69565b604051908152602001610203565b6101d86102e13660046151eb565b610d90565b6102ee601481565b60405163ffffffff9091168152602001610203565b6102c5610311366004615213565b610feb565b6102586103243660046150c0565b61100b565b6102c55f81565b6101d861033e366004615085565b61101f565b6101f5603081565b6101d86103593660046150c0565b61104a565b6101d861036c3660046151eb565b611107565b6102c561037f36600461522c565b6112c6565b6101d8610392366004615146565b6112e4565b6102c57f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6103cc6005600160991b0181565b604051610203919061524c565b6101d86103e73660046150c0565b61146a565b6102c57fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b6101d86104213660046150c0565b611648565b6101f5601481565b61044161043c3660046150c0565b611765565b60405161020391906152d5565b6102586202a30081565b6102c57f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0081565b6101d861048d366004615369565b6118a7565b6102c56104a03660046153a7565b611986565b6104b08383836119be565b6104d557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f6104e3611d0b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561051c5761051c615260565b600581111561052d5761052d615260565b815260200160018201805461054190615412565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90615412565b80156105b85780601f1061058f576101008083540402835291602001916105b8565b820191905f5260205f20905b81548152906001019060200180831161059b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561062357610623615260565b14610656575f8381526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b6005600160991b016001600160a01b031663ee5b48eb61067b8584606001515f611d2f565b6040518263ffffffff1660e01b81526004016106979190615458565b6020604051808303815f875af11580156106b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d7919061546a565b50505050565b6106d78383836119be565b5f6106f1611d0b565b600981015490915060ff161561071a57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610781919061546a565b8360200135146107aa576040516372b0a7e760e11b8152602084013560048201526024016104cc565b306107bb6060850160408601615481565b6001600160a01b0316146107f3576107d96060840160408501615481565b604051632f88120d60e21b81526004016104cc919061524c565b5f610801606085018561549c565b905090505f805b828163ffffffff161015610ae8575f610824606088018861549c565b8363ffffffff1681811061083a5761083a6154e1565b905060200281019061084c91906154f5565b61085590615619565b80516040519192505f91600888019161086d91615692565b9081526020016040518091039020541461089d57805160405163a41f772f60e01b81526104cc9190600401615458565b5f6002885f0135846040516020016108cc92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526108e691615692565b602060405180830381855afa158015610901573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610924919061546a565b90508086600801835f015160405161093c9190615692565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156109be576109be615260565b0217905550602082015160018201906109d790826156e7565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610a7b9116856157b6565b8251604051919550610a8c91615692565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610ae1906157c9565b9050610808565b50600483018190556001830154606490610b0c90600160401b900460ff16836157eb565b1015610b2e57604051635943317f60e01b8152600481018290526024016104cc565b5f610b44610b3b86611d7e565b60400151611e89565b90505f610b5087612016565b90505f600282604051610b639190615692565b602060405180830381855afa158015610b7e573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ba1919061546a565b9050828114610bcd57604051631872fc8d60e01b815260048101829052602481018490526044016104cc565b5050506009909201805460ff1916600117905550505050565b610bef826121eb565b610c0f576040516330efa98b60e01b8152600481018390526024016104cc565b5f610c1983611765565b5190506002816005811115610c3057610c30615260565b14610c50578060405163170cc93360e21b81526004016104cc919061544a565b6106d78383612214565b5f80610c64612462565b60030154610c729084615802565b9050801580610c8757506001600160401b0381115b15610ca85760405163222d164360e21b8152600481018490526024016104cc565b92915050565b6106d7838383612486565b610cc1612651565b5f610cca612462565b90505f80610cd78461269b565b91509150610ce4826121eb565b610cf057505050610d5e565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610d1e57610d1e615260565b03610d43575f83815260088501602052604081208054919055610d4182826129d5565b505b610d5981610d548460400151610feb565b612a45565b505050505b610d66612a63565b50565b5f610d72612651565b610d7e85858585612a89565b9050610d88612a63565b949350505050565b5f610d99612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610dd257610dd2615260565b6003811115610de357610de3615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610e5982611765565b9050600183516003811115610e7057610e70615260565b14610e91578251604051633b0d540d60e21b81526104cc9190600401615821565b600481516005811115610ea657610ea6615260565b03610ebc57610eb485612c40565b505050505050565b5f80610ed3610eca89611d7e565b60400151612e60565b5091509150818414610f0057846040015160405163089938b360e11b81526004016104cc91815260200190565b806001600160401b031683606001516001600160401b03161080610f395750806001600160401b03168560a001516001600160401b0316115b15610f6257604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610ff4612462565b60030154610ca8906001600160401b0384166157eb565b5f61101582611765565b6080015192915050565b61102a838383612486565b6104d557604051635bff683f60e11b8152600481018490526024016104cc565b5f611053612462565b90505f61105f83611765565b519050600481600581111561107657611076615260565b14611096578060405163170cc93360e21b81526004016104cc919061544a565b5f8381526005830160205260409020546001600160a01b031633146110d157335b604051636e2ccd7560e11b81526004016104cc919061524c565b5f838152600883016020908152604080832080549084905560058601909252909120546106d7906001600160a01b0316826129d5565b61110f612651565b5f611118612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561115157611151615260565b600381111561116257611162615260565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156111db576111db615260565b146111fc578051604051633b0d540d60e21b81526104cc9190600401615821565b600461120b8260400151611765565b51600581111561121d5761121d615260565b146112af575f61122c85611d7e565b90505f8061123d8360400151612e60565b5091509150818460400151146112695760405163089938b360e11b8152600481018390526024016104cc565b806001600160401b03168460c001516001600160401b031611156112ab57604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5050505b6112b883612c40565b50506112c2612a63565b5050565b5f6112cf612651565b6112da8333846130b6565b9050610ca8612a63565b5f6112ed611d0b565b90505f806113066112fd85611d7e565b6040015161338b565b915091508061132c57604051632d07135360e01b815281151560048201526024016104cc565b5f8281526006840160205260409020805461134690615412565b90505f0361136a5760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078501602052604090205460ff16600581111561139057611390615260565b146113c3575f8281526007840160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068401602052604081206113db91614fd4565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611473612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114ac576114ac615260565b60038111156114bd576114bd615260565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561153657611536615260565b14158015611557575060038151600381111561155457611554615260565b14155b15611578578051604051633b0d540d60e21b81526104cc9190600401615821565b5f6115868260400151611765565b905080606001516001600160401b03165f036115b8576040516339b894f960e21b8152600481018590526024016104cc565b6005600160991b016001600160a01b031663ee5b48eb6115e5846040015184606001518560800151611d2f565b6040518263ffffffff1660e01b81526004016116019190615458565b6020604051808303815f875af115801561161d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611641919061546a565b5050505050565b5f611651611d0b565b5f838152600682016020526040902080549192509061166f90615412565b90505f036116935760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078301602052604090205460ff1660058111156116b9576116b9615260565b146116ec575f8281526007820160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611725919060040161583b565b6020604051808303815f875af1158015611741573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d5919061546a565b61176d61500b565b5f611776611d0b565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156117ad576117ad615260565b60058111156117be576117be615260565b81526020016001820180546117d290615412565b80601f01602080910402602001604051908101604052809291908181526020018280546117fe90615412565b80156118495780601f1061182057610100808354040283529160200191611849565b820191905f5260205f20905b81548152906001019060200180831161182c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118f0575080546001600160401b03808416911610155b1561190e5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556119398484613547565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80611990611d0b565b90508060080184846040516119a69291906158c5565b90815260200160405180910390205491505092915050565b5f806119c8612462565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a0157611a01615260565b6003811115611a1257611a12615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611a8882611765565b9050600283516003811115611a9f57611a9f615260565b14611ac0578251604051633b0d540d60e21b81526104cc9190600401615821565b60208301516001600160a01b03163314611b5c575f8281526005850160205260409020546001600160a01b03163314611af957336110b7565b5f82815260058501602052604090205460a0820151611b2891600160b01b90046001600160401b0316906158d4565b6001600160401b0316421015611b5c5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b600281516005811115611b7157611b71615260565b03611c9f5760028401546080840151611b93916001600160401b0316906158d4565b6001600160401b0316421015611bc75760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b8615611bd957611bd78287612214565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611c12918491611c0d91906158f4565b613561565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611c53846136ab565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a315159450611d049350505050565b600481516005811115611cb457611cb4615260565b03611ce857611cc2836136ab565b5f898152600786016020526040902055611cdb88612c40565b6001945050505050611d04565b805160405163170cc93360e21b81526104cc919060040161544a565b9392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611de2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e09919081019061591f565b9150915080611e2b57604051636b2f19e960e01b815260040160405180910390fd5b815115611e51578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615611e82578160200151604051624de75d60e31b81526004016104cc919061524c565b5092915050565b5f8151602614611ebe57815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016104cc565b5f805b6002811015611f0d57611ed58160016159f1565b611ee09060086157eb565b61ffff16848281518110611ef657611ef66154e1565b016020015160f81c901b9190911790600101611ec1565b5061ffff811615611f375760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015611f9257611f4e8160036159f1565b611f599060086157eb565b63ffffffff1685611f6b8360026157b6565b81518110611f7b57611f7b6154e1565b016020015160f81c901b9190911790600101611f3a565b5063ffffffff811615611fb857604051635b60892f60e01b815260040160405180910390fd5b5f805b602081101561200d57611fcf81601f6159f1565b611fda9060086157eb565b86611fe68360066157b6565b81518110611ff657611ff66154e1565b016020015160f81c901b9190911790600101611fbb565b50949350505050565b60605f8083356020850135601461203287870160408901615481565b61203f606089018961549c565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6120c0606085018561549c565b9050811015611e8257816120d7606086018661549c565b838181106120e7576120e76154e1565b90506020028101906120f991906154f5565b6121039080615a04565b9050612112606087018761549c565b84818110612122576121226154e1565b905060200281019061213491906154f5565b61213e9080615a04565b61214b606089018961549c565b8681811061215b5761215b6154e1565b905060200281019061216d91906154f5565b61217b906020810190615a04565b61218860608b018b61549c565b88818110612198576121986154e1565b90506020028101906121aa91906154f5565b6121bb906060810190604001615213565b6040516020016121d19796959493929190615a46565b60408051601f1981840301815291905291506001016120b3565b5f806121f5612462565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561225f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612286919081019061591f565b91509150806122a857604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230f919061546a565b825114612335578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615612366578160200151604051624de75d60e31b81526004016104cc919061524c565b5f80612375846040015161382e565b9150915081871461239c5760405163089938b360e11b8152600481018890526024016104cc565b5f6123a5612462565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612438575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612457565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f80612490612462565b90505f61249c86613a1f565b90506124a7866121eb565b6124b657600192505050611d04565b5f8681526005830160205260409020546001600160a01b031633146124db57336110b7565b5f86815260058301602052604090205460a082015161250a91600160b01b90046001600160401b0316906158d4565b6001600160401b03168160c001516001600160401b031610156125515760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104cc565b5f8515612569576125628786612214565b9050612587565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906125ac90610feb565b60a086015160c08701516040516001600160e01b031960e086901b1681526125dc93929182918990600401615aaf565b602060405180830381865afa1580156125f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261b919061546a565b905080846008015f8a81526020019081526020015f205f82825461263f91906157b6565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161269557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6126a461500b565b5f6126ad611d0b565b90505f806126bd6112fd87611d7e565b9150915080156126e457604051632d07135360e01b815281151560048201526024016104cc565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561271557612715615260565b600581111561272657612726615260565b815260200160018201805461273a90615412565b80601f016020809104026020016040519081016040528092919081815260200182805461276690615412565b80156127b15780601f10612788576101008083540402835291602001916127b1565b820191905f5260205f20905b81548152906001019060200180831161279457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561281c5761281c615260565b1415801561283d575060018151600581111561283a5761283a615260565b14155b1561285e57805160405163170cc93360e21b81526104cc919060040161544a565b60038151600581111561287357612873615260565b036128815760048152612886565b600581525b83600801816020015160405161289c9190615692565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156128e0576128e0615260565b0217905550602082015160018201906128f990826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558051600581111561299e5761299e615260565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f6129de613cf7565b80546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612a2a575f80fd5b505af1158015612a3c573d5f803e3d5ffd5b50505050505050565b6112c28282612a52613cf7565b546001600160a01b03169190613d1b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f80612a93612462565b600281015490915061ffff600160401b90910481169086161080612abc575061271061ffff8616115b15612ae057604051635f12e6c360e11b815261ffff861660048201526024016104cc565b60028101546001600160401b039081169085161015612b1c576040516202a06d60e11b81526001600160401b03851660048201526024016104cc565b8054831080612b2e5750806001015483115b15612b4f5760405163222d164360e21b8152600481018490526024016104cc565b5f612b5984613d7a565b90505f612b6582610c5a565b90505f612b728983613d97565b90506040518060800160405280612b863390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b5f612c49612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612c8257612c82615260565b6003811115612c9357612c93615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612d076142f4565b8260800151612d1691906158d4565b6001600160401b0316421015612d4a5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612e05575f84815260058701602052604090205461271090612db790600160a01b900461ffff16856157eb565b612dc19190615802565b915081866008015f8681526020019081526020015f205f828254612de591906157b6565b90915550612df5905082846159f1565b9050612e058560200151826129d5565b612e1a8560200151610d548760600151610feb565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e9757835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016104cc565b5f805b6002811015612ee657612eae8160016159f1565b612eb99060086157eb565b61ffff16868281518110612ecf57612ecf6154e1565b016020015160f81c901b9190911790600101612e9a565b5061ffff811615612f105760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015612f6b57612f278160036159f1565b612f329060086157eb565b63ffffffff1687612f448360026157b6565b81518110612f5457612f546154e1565b016020015160f81c901b9190911790600101612f13565b5063ffffffff8116600314612f9357604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612fe857612faa81601f6159f1565b612fb59060086157eb565b88612fc18360066157b6565b81518110612fd157612fd16154e1565b016020015160f81c901b9190911790600101612f96565b505f805b6008811015613047576130008160076159f1565b61300b9060086157eb565b6001600160401b0316896130208360266157b6565b81518110613030576130306154e1565b016020015160f81c901b9190911790600101612fec565b505f805b60088110156130a65761305f8160076159f1565b61306a9060086157eb565b6001600160401b03168a61307f83602e6157b6565b8151811061308f5761308f6154e1565b016020015160f81c901b919091179060010161304b565b5091989097509095509350505050565b5f806130c0612462565b90505f6130cf61025385613d7a565b90505f6130db87611765565b90506130e6876121eb565b613106576040516330efa98b60e01b8152600481018890526024016104cc565b60028151600581111561311b5761311b615260565b1461313c57805160405163170cc93360e21b81526104cc919060040161544a565b5f82826080015161314d91906158d4565b905083600201600a9054906101000a90046001600160401b031682604001516131769190615add565b6001600160401b0316816001600160401b031611156131b357604051636d51fe0560e11b81526001600160401b03821660048201526024016104cc565b5f806131bf8a84613561565b915091505f8a836040516020016131ed92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561328057613280615260565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8082516027146133c157825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016104cc565b5f805b6002811015613410576133d88160016159f1565b6133e39060086157eb565b61ffff168582815181106133f9576133f96154e1565b016020015160f81c901b91909117906001016133c4565b5061ffff81161561343a5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613495576134518160036159f1565b61345c9060086157eb565b63ffffffff168661346e8360026157b6565b8151811061347e5761347e6154e1565b016020015160f81c901b919091179060010161343d565b5063ffffffff81166002146134bd57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613512576134d481601f6159f1565b6134df9060086157eb565b876134eb8360066157b6565b815181106134fb576134fb6154e1565b016020015160f81c901b91909117906001016134c0565b505f86602681518110613527576135276154e1565b016020015191976001600160f81b03199092161515965090945050505050565b61354f61430f565b6135588261435a565b6112c2816143ce565b5f805f61356c611d0b565b5f868152600782016020526040902060020154909150600160801b90046001600160401b031661359c858261442a565b5f6135a68761464f565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6135f68a858b611d2f565b6040518263ffffffff1660e01b81526004016136129190615458565b6020604051808303815f875af115801561362e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613652919061546a565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806136b5612462565b90505f6136c58460400151611765565b90505f6003825160058111156136dd576136dd615260565b14806136fb57506004825160058111156136f9576136f9615260565b145b1561370b575060c0810151613748565b60028251600581111561372057613720615260565b0361372c575042613748565b815160405163170cc93360e21b81526104cc919060040161544a565b84608001516001600160401b0316816001600160401b03161161376f57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061379490610feb565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526137e69493929188916001600160401b0390911690600401615aaf565b602060405180830381865afa158015613801573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613825919061546a565b95945050505050565b5f808251602e1461386457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016104cc565b5f805b60028110156138b35761387b8160016159f1565b6138869060086157eb565b61ffff1685828151811061389c5761389c6154e1565b016020015160f81c901b9190911790600101613867565b5061ffff8116156138dd5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613938576138f48160036159f1565b6138ff9060086157eb565b63ffffffff16866139118360026157b6565b81518110613921576139216154e1565b016020015160f81c901b91909117906001016138e0565b5063ffffffff81161561395e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156139b35761397581601f6159f1565b6139809060086157eb565b8761398c8360066157b6565b8151811061399c5761399c6154e1565b016020015160f81c901b9190911790600101613961565b505f805b6008811015613a12576139cb8160076159f1565b6139d69060086157eb565b6001600160401b0316886139eb8360266157b6565b815181106139fb576139fb6154e1565b016020015160f81c901b91909117906001016139b7565b5090969095509350505050565b613a2761500b565b5f613a30611d0b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613a6957613a69615260565b6005811115613a7a57613a7a615260565b8152602001600182018054613a8e90615412565b80601f0160208091040260200160405190810160405280929190818152602001828054613aba90615412565b8015613b055780601f10613adc57610100808354040283529160200191613b05565b820191905f5260205f20905b815481529060010190602001808311613ae857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613b7357613b73615260565b14613ba6575f8481526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613bea57613bea615260565b021790555060208201516001820190613c0390826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613ca08582613561565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0090565b6040516001600160a01b038381166024830152604482018390526104d591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506146b8565b5f610ca882613d87613cf7565b546001600160a01b031690614710565b5f613da0611d0b565b6009015460ff16613dc457604051637fab81e560e01b815260040160405180910390fd5b5f613dcd611d0b565b905042613de06060860160408701615213565b6001600160401b0316111580613e1a5750613dfe6202a300426157b6565b613e0e6060860160408701615213565b6001600160401b031610155b15613e5457613e2f6060850160408601615213565b604051635879da1360e11b81526001600160401b0390911660048201526024016104cc565b613e69613e646060860186615b08565b614871565b613e79613e646080860186615b08565b6030613e886020860186615a04565b905014613eba57613e9c6020850185615a04565b6040516326475b2f60e11b81526104cc925060040190815260200190565b613ec48480615a04565b90505f03613ef157613ed68480615a04565b604051633e08a12560e11b81526004016104cc929190615b1c565b5f60088201613f008680615a04565b604051613f0e9291906158c5565b90815260200160405180910390205414613f4757613f2c8480615a04565b60405163a41f772f60e01b81526004016104cc929190615b1c565b613f51835f61442a565b6040805160e08101909152815481525f90819061405d9060208101613f768980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613fbe908a018a615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161400760608a0160408b01615213565b6001600160401b0316815260200161402260608a018a615b08565b61402b90615b4a565b815260200161403d60808a018a615b08565b61404690615b4a565b8152602001876001600160401b03168152506149da565b5f8281526006860160205260409020919350915061407b82826156e7565b50816008840161408b8880615a04565b6040516140999291906158c5565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906140d5908590600401615458565b6020604051808303815f875af11580156140f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614115919061546a565b6040805160e0810190915290915080600181526020016141358980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156141c4576141c4615260565b0217905550602082015160018201906141dd90826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061427a8880615a04565b6040516142889291906158c5565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906142c69190615213565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f6142fd611d0b565b600101546001600160401b0316919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661435857604051631afcd79f60e31b815260040160405180910390fd5b565b61436261430f565b61436b81614bc7565b614373614be0565b610d666060820135608083013561439060c0850160a08601615213565b6143a060e0860160c08701615c11565b6143b1610100870160e08801615c2a565b6101008701356143c961014089016101208a01615481565b614bf0565b6143d661430f565b5f6143df613cf7565b90506001600160a01b03821661440a5781604051637330680360e01b81526004016104cc919061524c565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f614433611d0b565b90505f826001600160401b0316846001600160401b031611156144615761445a83856158f4565b905061446e565b61446b84846158f4565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806144d05750600184015481516144cc916001600160401b0316906157b6565b8210155b156144f6576001600160401b038316606082015281815260408101516020820152614515565b828160600181815161450891906158d4565b6001600160401b03169052505b6060810151614525906064615add565b602082015160018601546001600160401b0392909216916145509190600160401b900460ff166157eb565b101561458057606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104cc565b856001600160401b03168160400181815161459b91906157b6565b9052506040810180516001600160401b03871691906145bb9083906159f1565b905250600184015460408201516064916145e091600160401b90910460ff16906157eb565b1015614607578060400151604051635943317f60e01b81526004016104cc91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614659611d0b565b5f848152600782016020526040902060020180549192509060089061468d90600160401b90046001600160401b0316615c4a565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6146cc6001600160a01b03841683614d86565b905080515f141580156146f05750808060200190518101906146ee9190615c65565b155b156104d55782604051635274afe760e01b81526004016104cc919061524c565b5f80836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161473e919061524c565b602060405180830381865afa158015614759573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061477d919061546a565b90506147946001600160a01b038516333086614d93565b6040516370a0823160e01b81525f906001600160a01b038616906370a08231906147c290309060040161524c565b602060405180830381865afa1580156147dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614801919061546a565b90508181116148675760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104cc565b61382582826159f1565b61487e6020820182615146565b63ffffffff1615801561489e5750614899602082018261549c565b151590505b156148e5576148b06020820182615146565b6148bd602083018361549c565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104cc565b6148f2602082018261549c565b90506149016020830183615146565b63ffffffff16111561491a576148b06020820182615146565b60015b61492a602083018361549c565b90508110156112c257614940602083018361549c565b61494b6001846159f1565b81811061495a5761495a6154e1565b905060200201602081019061496f9190615481565b6001600160a01b0316614985602084018461549c565b83818110614995576149956154e1565b90506020020160208101906149aa9190615481565b6001600160a01b031610156149d257604051630dbc8d5f60e31b815260040160405180910390fd5b60010161491d565b5f6060826040015151603014614a035760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614a44988a986001989297929690959094909390929101615c80565b60405160208183030381529060405290505f5b84608001516020015151811015614ab657818560800151602001518281518110614a8357614a836154e1565b6020026020010151604051602001614a9c929190615d3a565b60408051601f198184030181529190529150600101614a57565b5060a0840151805160209182015151604051614ad6938593929101615d6b565b60405160208183030381529060405290505f5b8460a001516020015151811015614b4857818560a00151602001518281518110614b1557614b156154e1565b6020026020010151604051602001614b2e929190615d3a565b60408051601f198184030181529190529150600101614ae9565b5060c0840151604051614b5f918391602001615da6565b6040516020818303038152906040529050600281604051614b809190615692565b602060405180830381855afa158015614b9b573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614bbe919061546a565b94909350915050565b614bcf61430f565b614bd7614dcc565b610d6681614dd4565b614be861430f565b614358614eb7565b614bf861430f565b5f614c01612462565b905061ffff85161580614c19575061271061ffff8616115b15614c3d57604051635f12e6c360e11b815261ffff861660048201526024016104cc565b86881115614c615760405163222d164360e21b8152600481018990526024016104cc565b60ff84161580614c745750600a60ff8516115b15614c975760405163170db35960e31b815260ff851660048201526024016104cc565b614c9f6142f4565b6001600160401b0316866001600160401b03161015614cdb576040516202a06d60e11b81526001600160401b03871660048201526024016104cc565b825f03614cfb5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b6060611d0483835f614ebf565b6040516001600160a01b0384811660248301528381166044830152606482018390526106d79186918216906323b872dd90608401613d48565b61435861430f565b614ddc61430f565b5f614de5611d0b565b8235815590506014614dfd6060840160408501615c2a565b60ff161180614e1c5750614e176060830160408401615c2a565b60ff16155b15614e5057614e316060830160408401615c2a565b604051634a59bbff60e11b815260ff90911660048201526024016104cc565b614e606060830160408401615c2a565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614e916040830160208401615213565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612a6361430f565b606081471015614ee4573060405163cd78605960e01b81526004016104cc919061524c565b5f80856001600160a01b03168486604051614eff9190615692565b5f6040518083038185875af1925050503d805f8114614f39576040519150601f19603f3d011682016040523d82523d5f602084013e614f3e565b606091505b5091509150614f4e868383614f58565b9695505050505050565b606082614f6d57614f6882614fab565b611d04565b8151158015614f8457506001600160a01b0384163b155b15614fa45783604051639996b31560e01b81526004016104cc919061524c565b5080611d04565b805115614fbb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614fe090615412565b5f825580601f10614fef575050565b601f0160209004905f5260205f2090810190610d669190615048565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561505c575f8155600101615049565b5090565b8015158114610d66575f80fd5b803563ffffffff81168114615080575f80fd5b919050565b5f805f60608486031215615097575f80fd5b8335925060208401356150a981615060565b91506150b76040850161506d565b90509250925092565b5f602082840312156150d0575f80fd5b5035919050565b5f80604083850312156150e8575f80fd5b82356001600160401b038111156150fd575f80fd5b83016080818603121561510e575f80fd5b915061511c6020840161506d565b90509250929050565b5f8060408385031215615136575f80fd5b8235915061511c6020840161506d565b5f60208284031215615156575f80fd5b611d048261506d565b803561ffff81168114615080575f80fd5b80356001600160401b0381168114615080575f80fd5b5f805f8060808587031215615199575f80fd5b84356001600160401b038111156151ae575f80fd5b850160a081880312156151bf575f80fd5b93506151cd6020860161515f565b92506151db60408601615170565b9396929550929360600135925050565b5f80604083850312156151fc575f80fd5b6152058361506d565b946020939093013593505050565b5f60208284031215615223575f80fd5b611d0482615170565b5f806040838503121561523d575f80fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52602160045260245ffd5b6006811061528457615284615260565b9052565b5f5b838110156152a257818101518382015260200161528a565b50505f910152565b5f81518084526152c1816020860160208601615288565b601f01601f19169290920160200192915050565b602081526152e7602082018351615274565b5f602083015160e060408401526153026101008401826152aa565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610d66575f80fd5b5f8082840361016081121561537c575f80fd5b6101408082121561538b575f80fd5b849350830135905061539c81615355565b809150509250929050565b5f80602083850312156153b8575f80fd5b82356001600160401b03808211156153ce575f80fd5b818501915085601f8301126153e1575f80fd5b8135818111156153ef575f80fd5b866020828501011115615400575f80fd5b60209290920196919550909350505050565b600181811c9082168061542657607f821691505b60208210810361544457634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610ca88284615274565b602081525f611d0460208301846152aa565b5f6020828403121561547a575f80fd5b5051919050565b5f60208284031215615491575f80fd5b8135611d0481615355565b5f808335601e198436030181126154b1575f80fd5b8301803591506001600160401b038211156154ca575f80fd5b6020019150600581901b36038213156136a4575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615509575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561554957615549615513565b60405290565b604080519081016001600160401b038111828210171561554957615549615513565b604051601f8201601f191681016001600160401b038111828210171561559957615599615513565b604052919050565b5f6001600160401b038211156155b9576155b9615513565b50601f01601f191660200190565b5f82601f8301126155d6575f80fd5b81356155e96155e4826155a1565b615571565b8181528460208386010111156155fd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615629575f80fd5b615631615527565b82356001600160401b0380821115615647575f80fd5b615653368387016155c7565b83526020850135915080821115615668575f80fd5b50615675368286016155c7565b60208301525061568760408401615170565b604082015292915050565b5f8251615509818460208701615288565b601f8211156104d557805f5260205f20601f840160051c810160208510156156c85750805b601f840160051c820191505b81811015611641575f81556001016156d4565b81516001600160401b0381111561570057615700615513565b6157148161570e8454615412565b846156a3565b602080601f831160018114615747575f84156157305750858301515b5f19600386901b1c1916600185901b178555610eb4565b5f85815260208120601f198616915b8281101561577557888601518255948401946001909101908401615756565b508582101561579257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca857610ca86157a2565b5f63ffffffff8083168181036157e1576157e16157a2565b6001019392505050565b8082028115828204841417610ca857610ca86157a2565b5f8261581c57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061583557615835615260565b91905290565b5f60208083525f845461584d81615412565b806020870152604060018084165f811461586e576001811461588a576158b7565b60ff19851660408a0152604084151560051b8a010195506158b7565b895f5260205f205f5b858110156158ae5781548b8201860152908301908801615893565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611e8257611e826157a2565b6001600160401b03828116828216039080821115611e8257611e826157a2565b805161508081615060565b5f8060408385031215615930575f80fd5b82516001600160401b0380821115615946575f80fd5b9084019060608287031215615959575f80fd5b615961615527565b8251815260208084015161597481615355565b82820152604084015183811115615989575f80fd5b80850194505087601f85011261599d575f80fd5b835192506159ad6155e4846155a1565b83815288828587010111156159c0575f80fd5b6159cf84838301848801615288565b806040840152508195506159e4818801615914565b9450505050509250929050565b81810381811115610ca857610ca86157a2565b5f808335601e19843603018112615a19575f80fd5b8301803591506001600160401b03821115615a32575f80fd5b6020019150368190038213156136a4575f80fd5b5f8851615a57818460208d01615288565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615b0057615b006157a2565b505092915050565b5f8235603e19833603018112615509575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615b5a575f80fd5b615b6261554f565b615b6b8361506d565b81526020808401356001600160401b0380821115615b87575f80fd5b9085019036601f830112615b99575f80fd5b813581811115615bab57615bab615513565b8060051b9150615bbc848301615571565b8181529183018401918481019036841115615bd5575f80fd5b938501935b83851015615bff5784359250615bef83615355565b8282529385019390850190615bda565b94860194909452509295945050505050565b5f60208284031215615c21575f80fd5b611d048261515f565b5f60208284031215615c3a575f80fd5b813560ff81168114611d04575f80fd5b5f6001600160401b038083168181036157e1576157e16157a2565b5f60208284031215615c75575f80fd5b8151611d0481615060565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651615cc681602a850160208b01615288565b865190830190615cdd81602a840160208b01615288565b60c087901b6001600160c01b031916602a9290910191820152615d0f603282018660e01b6001600160e01b0319169052565b615d28603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615d4b818460208801615288565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615d7c818460208901615288565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615db7818460208801615288565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"conversionData\",\"type\":\"tuple\",\"internalType\":\"structConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidConversionID\",\"inputs\":[{\"name\":\"encodedConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidTokenAddress\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615f31380380615f3183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615de48061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101c1575f3560e01c80638280a25a116100f6578063ba3a4b971161009a578063ba3a4b97146103d9578063bc5fbfec146103ec578063bee0a03f14610413578063c974d1b614610426578063d5f20ff61461042e578063df93d8de1461044e578063e4a63c4014610458578063f74c607b1461047f578063fd7ac5e714610492575f80fd5b80638280a25a1461034357806393e245981461034b57806398f3e2b41461035e5780639e1bc4ef14610371578063a3a65e4814610384578063a9778a7a14610270578063afb9809614610397578063b771b3bc146103be575f80fd5b80633a1cfff6116101685780633a1cfff61461028c578063467ef06f1461029f5780634bee0040146102b25780635297fae6146102d357806360305d62146102e6578063620658561461030357806366435abf14610316578063732214f81461032957806376f7862114610330575f80fd5b80630118acc4146101c55780630322ed98146101da578063151d30d1146101ed5780631ec447241461020c57806320d91b7a1461021f57806325e1c776146102325780632e2194d81461024557806335455ded14610270575b5f80fd5b6101d86101d3366004615085565b6104a5565b005b6101d86101e83660046150c0565b6104da565b6101f5600a81565b60405160ff90911681526020015b60405180910390f35b6101d861021a366004615085565b6106dd565b6101d861022d3660046150d7565b6106e8565b6101d8610240366004615125565b610be6565b6102586102533660046150c0565b610c5a565b6040516001600160401b039091168152602001610203565b61027961271081565b60405161ffff9091168152602001610203565b6101d861029a366004615085565b610cae565b6101d86102ad366004615146565b610cb9565b6102c56102c0366004615186565b610d69565b604051908152602001610203565b6101d86102e13660046151eb565b610d90565b6102ee601481565b60405163ffffffff9091168152602001610203565b6102c5610311366004615213565b610feb565b6102586103243660046150c0565b61100b565b6102c55f81565b6101d861033e366004615085565b61101f565b6101f5603081565b6101d86103593660046150c0565b61104a565b6101d861036c3660046151eb565b611107565b6102c561037f36600461522c565b6112c6565b6101d8610392366004615146565b6112e4565b6102c57f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6103cc6005600160991b0181565b604051610203919061524c565b6101d86103e73660046150c0565b61146a565b6102c57fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b6101d86104213660046150c0565b611648565b6101f5601481565b61044161043c3660046150c0565b611765565b60405161020391906152d5565b6102586202a30081565b6102c57f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0081565b6101d861048d366004615369565b6118a7565b6102c56104a03660046153a7565b611986565b6104b08383836119be565b6104d557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f6104e3611d0b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561051c5761051c615260565b600581111561052d5761052d615260565b815260200160018201805461054190615412565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90615412565b80156105b85780601f1061058f576101008083540402835291602001916105b8565b820191905f5260205f20905b81548152906001019060200180831161059b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561062357610623615260565b14610656575f8381526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b6005600160991b016001600160a01b031663ee5b48eb61067b8584606001515f611d2f565b6040518263ffffffff1660e01b81526004016106979190615458565b6020604051808303815f875af11580156106b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d7919061546a565b50505050565b6106d78383836119be565b5f6106f1611d0b565b600981015490915060ff161561071a57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610781919061546a565b8360200135146107aa576040516372b0a7e760e11b8152602084013560048201526024016104cc565b306107bb6060850160408601615481565b6001600160a01b0316146107f3576107d96060840160408501615481565b604051632f88120d60e21b81526004016104cc919061524c565b5f610801606085018561549c565b905090505f805b828163ffffffff161015610ae8575f610824606088018861549c565b8363ffffffff1681811061083a5761083a6154e1565b905060200281019061084c91906154f5565b61085590615619565b80516040519192505f91600888019161086d91615692565b9081526020016040518091039020541461089d57805160405163a41f772f60e01b81526104cc9190600401615458565b5f6002885f0135846040516020016108cc92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526108e691615692565b602060405180830381855afa158015610901573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610924919061546a565b90508086600801835f015160405161093c9190615692565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156109be576109be615260565b0217905550602082015160018201906109d790826156e7565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610a7b9116856157b6565b8251604051919550610a8c91615692565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610ae1906157c9565b9050610808565b50600483018190556001830154606490610b0c90600160401b900460ff16836157eb565b1015610b2e57604051635943317f60e01b8152600481018290526024016104cc565b5f610b44610b3b86611d7e565b60400151611e89565b90505f610b5087612016565b90505f600282604051610b639190615692565b602060405180830381855afa158015610b7e573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ba1919061546a565b9050828114610bcd5760405163baaea89d60e01b815260048101829052602481018490526044016104cc565b5050506009909201805460ff1916600117905550505050565b610bef826121eb565b610c0f576040516330efa98b60e01b8152600481018390526024016104cc565b5f610c1983611765565b5190506002816005811115610c3057610c30615260565b14610c50578060405163170cc93360e21b81526004016104cc919061544a565b6106d78383612214565b5f80610c64612462565b60030154610c729084615802565b9050801580610c8757506001600160401b0381115b15610ca85760405163222d164360e21b8152600481018490526024016104cc565b92915050565b6106d7838383612486565b610cc1612651565b5f610cca612462565b90505f80610cd78461269b565b91509150610ce4826121eb565b610cf057505050610d5e565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610d1e57610d1e615260565b03610d43575f83815260088501602052604081208054919055610d4182826129d5565b505b610d5981610d548460400151610feb565b612a45565b505050505b610d66612a63565b50565b5f610d72612651565b610d7e85858585612a89565b9050610d88612a63565b949350505050565b5f610d99612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610dd257610dd2615260565b6003811115610de357610de3615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610e5982611765565b9050600183516003811115610e7057610e70615260565b14610e91578251604051633b0d540d60e21b81526104cc9190600401615821565b600481516005811115610ea657610ea6615260565b03610ebc57610eb485612c40565b505050505050565b5f80610ed3610eca89611d7e565b60400151612e60565b5091509150818414610f0057846040015160405163089938b360e11b81526004016104cc91815260200190565b806001600160401b031683606001516001600160401b03161080610f395750806001600160401b03168560a001516001600160401b0316115b15610f6257604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610ff4612462565b60030154610ca8906001600160401b0384166157eb565b5f61101582611765565b6080015192915050565b61102a838383612486565b6104d557604051635bff683f60e11b8152600481018490526024016104cc565b5f611053612462565b90505f61105f83611765565b519050600481600581111561107657611076615260565b14611096578060405163170cc93360e21b81526004016104cc919061544a565b5f8381526005830160205260409020546001600160a01b031633146110d157335b604051636e2ccd7560e11b81526004016104cc919061524c565b5f838152600883016020908152604080832080549084905560058601909252909120546106d7906001600160a01b0316826129d5565b61110f612651565b5f611118612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561115157611151615260565b600381111561116257611162615260565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156111db576111db615260565b146111fc578051604051633b0d540d60e21b81526104cc9190600401615821565b600461120b8260400151611765565b51600581111561121d5761121d615260565b146112af575f61122c85611d7e565b90505f8061123d8360400151612e60565b5091509150818460400151146112695760405163089938b360e11b8152600481018390526024016104cc565b806001600160401b03168460c001516001600160401b031611156112ab57604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5050505b6112b883612c40565b50506112c2612a63565b5050565b5f6112cf612651565b6112da8333846130b6565b9050610ca8612a63565b5f6112ed611d0b565b90505f806113066112fd85611d7e565b6040015161338b565b915091508061132c57604051632d07135360e01b815281151560048201526024016104cc565b5f8281526006840160205260409020805461134690615412565b90505f0361136a5760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078501602052604090205460ff16600581111561139057611390615260565b146113c3575f8281526007840160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068401602052604081206113db91614fd4565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611473612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114ac576114ac615260565b60038111156114bd576114bd615260565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561153657611536615260565b14158015611557575060038151600381111561155457611554615260565b14155b15611578578051604051633b0d540d60e21b81526104cc9190600401615821565b5f6115868260400151611765565b905080606001516001600160401b03165f036115b8576040516339b894f960e21b8152600481018590526024016104cc565b6005600160991b016001600160a01b031663ee5b48eb6115e5846040015184606001518560800151611d2f565b6040518263ffffffff1660e01b81526004016116019190615458565b6020604051808303815f875af115801561161d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611641919061546a565b5050505050565b5f611651611d0b565b5f838152600682016020526040902080549192509061166f90615412565b90505f036116935760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078301602052604090205460ff1660058111156116b9576116b9615260565b146116ec575f8281526007820160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611725919060040161583b565b6020604051808303815f875af1158015611741573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d5919061546a565b61176d61500b565b5f611776611d0b565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156117ad576117ad615260565b60058111156117be576117be615260565b81526020016001820180546117d290615412565b80601f01602080910402602001604051908101604052809291908181526020018280546117fe90615412565b80156118495780601f1061182057610100808354040283529160200191611849565b820191905f5260205f20905b81548152906001019060200180831161182c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118f0575080546001600160401b03808416911610155b1561190e5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556119398484613547565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80611990611d0b565b90508060080184846040516119a69291906158c5565b90815260200160405180910390205491505092915050565b5f806119c8612462565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a0157611a01615260565b6003811115611a1257611a12615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611a8882611765565b9050600283516003811115611a9f57611a9f615260565b14611ac0578251604051633b0d540d60e21b81526104cc9190600401615821565b60208301516001600160a01b03163314611b5c575f8281526005850160205260409020546001600160a01b03163314611af957336110b7565b5f82815260058501602052604090205460a0820151611b2891600160b01b90046001600160401b0316906158d4565b6001600160401b0316421015611b5c5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b600281516005811115611b7157611b71615260565b03611c9f5760028401546080840151611b93916001600160401b0316906158d4565b6001600160401b0316421015611bc75760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b8615611bd957611bd78287612214565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611c12918491611c0d91906158f4565b613561565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611c53846136ab565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a315159450611d049350505050565b600481516005811115611cb457611cb4615260565b03611ce857611cc2836136ab565b5f898152600786016020526040902055611cdb88612c40565b6001945050505050611d04565b805160405163170cc93360e21b81526104cc919060040161544a565b9392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611de2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e09919081019061591f565b9150915080611e2b57604051636b2f19e960e01b815260040160405180910390fd5b815115611e51578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615611e82578160200151604051624de75d60e31b81526004016104cc919061524c565b5092915050565b5f8151602614611ebe57815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016104cc565b5f805b6002811015611f0d57611ed58160016159f1565b611ee09060086157eb565b61ffff16848281518110611ef657611ef66154e1565b016020015160f81c901b9190911790600101611ec1565b5061ffff811615611f375760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015611f9257611f4e8160036159f1565b611f599060086157eb565b63ffffffff1685611f6b8360026157b6565b81518110611f7b57611f7b6154e1565b016020015160f81c901b9190911790600101611f3a565b5063ffffffff811615611fb857604051635b60892f60e01b815260040160405180910390fd5b5f805b602081101561200d57611fcf81601f6159f1565b611fda9060086157eb565b86611fe68360066157b6565b81518110611ff657611ff66154e1565b016020015160f81c901b9190911790600101611fbb565b50949350505050565b60605f8083356020850135601461203287870160408901615481565b61203f606089018961549c565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6120c0606085018561549c565b9050811015611e8257816120d7606086018661549c565b838181106120e7576120e76154e1565b90506020028101906120f991906154f5565b6121039080615a04565b9050612112606087018761549c565b84818110612122576121226154e1565b905060200281019061213491906154f5565b61213e9080615a04565b61214b606089018961549c565b8681811061215b5761215b6154e1565b905060200281019061216d91906154f5565b61217b906020810190615a04565b61218860608b018b61549c565b88818110612198576121986154e1565b90506020028101906121aa91906154f5565b6121bb906060810190604001615213565b6040516020016121d19796959493929190615a46565b60408051601f1981840301815291905291506001016120b3565b5f806121f5612462565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561225f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612286919081019061591f565b91509150806122a857604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230f919061546a565b825114612335578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615612366578160200151604051624de75d60e31b81526004016104cc919061524c565b5f80612375846040015161382e565b9150915081871461239c5760405163089938b360e11b8152600481018890526024016104cc565b5f6123a5612462565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612438575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612457565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f80612490612462565b90505f61249c86613a1f565b90506124a7866121eb565b6124b657600192505050611d04565b5f8681526005830160205260409020546001600160a01b031633146124db57336110b7565b5f86815260058301602052604090205460a082015161250a91600160b01b90046001600160401b0316906158d4565b6001600160401b03168160c001516001600160401b031610156125515760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104cc565b5f8515612569576125628786612214565b9050612587565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906125ac90610feb565b60a086015160c08701516040516001600160e01b031960e086901b1681526125dc93929182918990600401615aaf565b602060405180830381865afa1580156125f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261b919061546a565b905080846008015f8a81526020019081526020015f205f82825461263f91906157b6565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161269557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6126a461500b565b5f6126ad611d0b565b90505f806126bd6112fd87611d7e565b9150915080156126e457604051632d07135360e01b815281151560048201526024016104cc565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561271557612715615260565b600581111561272657612726615260565b815260200160018201805461273a90615412565b80601f016020809104026020016040519081016040528092919081815260200182805461276690615412565b80156127b15780601f10612788576101008083540402835291602001916127b1565b820191905f5260205f20905b81548152906001019060200180831161279457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561281c5761281c615260565b1415801561283d575060018151600581111561283a5761283a615260565b14155b1561285e57805160405163170cc93360e21b81526104cc919060040161544a565b60038151600581111561287357612873615260565b036128815760048152612886565b600581525b83600801816020015160405161289c9190615692565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156128e0576128e0615260565b0217905550602082015160018201906128f990826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558051600581111561299e5761299e615260565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f6129de613cf7565b80546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612a2a575f80fd5b505af1158015612a3c573d5f803e3d5ffd5b50505050505050565b6112c28282612a52613cf7565b546001600160a01b03169190613d1b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f80612a93612462565b600281015490915061ffff600160401b90910481169086161080612abc575061271061ffff8616115b15612ae057604051635f12e6c360e11b815261ffff861660048201526024016104cc565b60028101546001600160401b039081169085161015612b1c576040516202a06d60e11b81526001600160401b03851660048201526024016104cc565b8054831080612b2e5750806001015483115b15612b4f5760405163222d164360e21b8152600481018490526024016104cc565b5f612b5984613d7a565b90505f612b6582610c5a565b90505f612b728983613d97565b90506040518060800160405280612b863390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b5f612c49612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612c8257612c82615260565b6003811115612c9357612c93615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612d076142f4565b8260800151612d1691906158d4565b6001600160401b0316421015612d4a5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612e05575f84815260058701602052604090205461271090612db790600160a01b900461ffff16856157eb565b612dc19190615802565b915081866008015f8681526020019081526020015f205f828254612de591906157b6565b90915550612df5905082846159f1565b9050612e058560200151826129d5565b612e1a8560200151610d548760600151610feb565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e9757835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016104cc565b5f805b6002811015612ee657612eae8160016159f1565b612eb99060086157eb565b61ffff16868281518110612ecf57612ecf6154e1565b016020015160f81c901b9190911790600101612e9a565b5061ffff811615612f105760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015612f6b57612f278160036159f1565b612f329060086157eb565b63ffffffff1687612f448360026157b6565b81518110612f5457612f546154e1565b016020015160f81c901b9190911790600101612f13565b5063ffffffff8116600314612f9357604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612fe857612faa81601f6159f1565b612fb59060086157eb565b88612fc18360066157b6565b81518110612fd157612fd16154e1565b016020015160f81c901b9190911790600101612f96565b505f805b6008811015613047576130008160076159f1565b61300b9060086157eb565b6001600160401b0316896130208360266157b6565b81518110613030576130306154e1565b016020015160f81c901b9190911790600101612fec565b505f805b60088110156130a65761305f8160076159f1565b61306a9060086157eb565b6001600160401b03168a61307f83602e6157b6565b8151811061308f5761308f6154e1565b016020015160f81c901b919091179060010161304b565b5091989097509095509350505050565b5f806130c0612462565b90505f6130cf61025385613d7a565b90505f6130db87611765565b90506130e6876121eb565b613106576040516330efa98b60e01b8152600481018890526024016104cc565b60028151600581111561311b5761311b615260565b1461313c57805160405163170cc93360e21b81526104cc919060040161544a565b5f82826080015161314d91906158d4565b905083600201600a9054906101000a90046001600160401b031682604001516131769190615add565b6001600160401b0316816001600160401b031611156131b357604051636d51fe0560e11b81526001600160401b03821660048201526024016104cc565b5f806131bf8a84613561565b915091505f8a836040516020016131ed92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561328057613280615260565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8082516027146133c157825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016104cc565b5f805b6002811015613410576133d88160016159f1565b6133e39060086157eb565b61ffff168582815181106133f9576133f96154e1565b016020015160f81c901b91909117906001016133c4565b5061ffff81161561343a5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613495576134518160036159f1565b61345c9060086157eb565b63ffffffff168661346e8360026157b6565b8151811061347e5761347e6154e1565b016020015160f81c901b919091179060010161343d565b5063ffffffff81166002146134bd57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613512576134d481601f6159f1565b6134df9060086157eb565b876134eb8360066157b6565b815181106134fb576134fb6154e1565b016020015160f81c901b91909117906001016134c0565b505f86602681518110613527576135276154e1565b016020015191976001600160f81b03199092161515965090945050505050565b61354f61430f565b6135588261435a565b6112c2816143ce565b5f805f61356c611d0b565b5f868152600782016020526040902060020154909150600160801b90046001600160401b031661359c858261442a565b5f6135a68761464f565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6135f68a858b611d2f565b6040518263ffffffff1660e01b81526004016136129190615458565b6020604051808303815f875af115801561362e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613652919061546a565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806136b5612462565b90505f6136c58460400151611765565b90505f6003825160058111156136dd576136dd615260565b14806136fb57506004825160058111156136f9576136f9615260565b145b1561370b575060c0810151613748565b60028251600581111561372057613720615260565b0361372c575042613748565b815160405163170cc93360e21b81526104cc919060040161544a565b84608001516001600160401b0316816001600160401b03161161376f57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061379490610feb565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526137e69493929188916001600160401b0390911690600401615aaf565b602060405180830381865afa158015613801573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613825919061546a565b95945050505050565b5f808251602e1461386457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016104cc565b5f805b60028110156138b35761387b8160016159f1565b6138869060086157eb565b61ffff1685828151811061389c5761389c6154e1565b016020015160f81c901b9190911790600101613867565b5061ffff8116156138dd5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613938576138f48160036159f1565b6138ff9060086157eb565b63ffffffff16866139118360026157b6565b81518110613921576139216154e1565b016020015160f81c901b91909117906001016138e0565b5063ffffffff81161561395e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156139b35761397581601f6159f1565b6139809060086157eb565b8761398c8360066157b6565b8151811061399c5761399c6154e1565b016020015160f81c901b9190911790600101613961565b505f805b6008811015613a12576139cb8160076159f1565b6139d69060086157eb565b6001600160401b0316886139eb8360266157b6565b815181106139fb576139fb6154e1565b016020015160f81c901b91909117906001016139b7565b5090969095509350505050565b613a2761500b565b5f613a30611d0b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613a6957613a69615260565b6005811115613a7a57613a7a615260565b8152602001600182018054613a8e90615412565b80601f0160208091040260200160405190810160405280929190818152602001828054613aba90615412565b8015613b055780601f10613adc57610100808354040283529160200191613b05565b820191905f5260205f20905b815481529060010190602001808311613ae857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613b7357613b73615260565b14613ba6575f8481526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613bea57613bea615260565b021790555060208201516001820190613c0390826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613ca08582613561565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0090565b6040516001600160a01b038381166024830152604482018390526104d591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506146b8565b5f610ca882613d87613cf7565b546001600160a01b031690614710565b5f613da0611d0b565b6009015460ff16613dc457604051637fab81e560e01b815260040160405180910390fd5b5f613dcd611d0b565b905042613de06060860160408701615213565b6001600160401b0316111580613e1a5750613dfe6202a300426157b6565b613e0e6060860160408701615213565b6001600160401b031610155b15613e5457613e2f6060850160408601615213565b604051635879da1360e11b81526001600160401b0390911660048201526024016104cc565b613e69613e646060860186615b08565b614871565b613e79613e646080860186615b08565b6030613e886020860186615a04565b905014613eba57613e9c6020850185615a04565b6040516326475b2f60e11b81526104cc925060040190815260200190565b613ec48480615a04565b90505f03613ef157613ed68480615a04565b604051633e08a12560e11b81526004016104cc929190615b1c565b5f60088201613f008680615a04565b604051613f0e9291906158c5565b90815260200160405180910390205414613f4757613f2c8480615a04565b60405163a41f772f60e01b81526004016104cc929190615b1c565b613f51835f61442a565b6040805160e08101909152815481525f90819061405d9060208101613f768980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613fbe908a018a615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161400760608a0160408b01615213565b6001600160401b0316815260200161402260608a018a615b08565b61402b90615b4a565b815260200161403d60808a018a615b08565b61404690615b4a565b8152602001876001600160401b03168152506149da565b5f8281526006860160205260409020919350915061407b82826156e7565b50816008840161408b8880615a04565b6040516140999291906158c5565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906140d5908590600401615458565b6020604051808303815f875af11580156140f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614115919061546a565b6040805160e0810190915290915080600181526020016141358980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156141c4576141c4615260565b0217905550602082015160018201906141dd90826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061427a8880615a04565b6040516142889291906158c5565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906142c69190615213565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f6142fd611d0b565b600101546001600160401b0316919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661435857604051631afcd79f60e31b815260040160405180910390fd5b565b61436261430f565b61436b81614bc7565b614373614be0565b610d666060820135608083013561439060c0850160a08601615213565b6143a060e0860160c08701615c11565b6143b1610100870160e08801615c2a565b6101008701356143c961014089016101208a01615481565b614bf0565b6143d661430f565b5f6143df613cf7565b90506001600160a01b03821661440a5781604051637330680360e01b81526004016104cc919061524c565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f614433611d0b565b90505f826001600160401b0316846001600160401b031611156144615761445a83856158f4565b905061446e565b61446b84846158f4565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806144d05750600184015481516144cc916001600160401b0316906157b6565b8210155b156144f6576001600160401b038316606082015281815260408101516020820152614515565b828160600181815161450891906158d4565b6001600160401b03169052505b6060810151614525906064615add565b602082015160018601546001600160401b0392909216916145509190600160401b900460ff166157eb565b101561458057606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104cc565b856001600160401b03168160400181815161459b91906157b6565b9052506040810180516001600160401b03871691906145bb9083906159f1565b905250600184015460408201516064916145e091600160401b90910460ff16906157eb565b1015614607578060400151604051635943317f60e01b81526004016104cc91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614659611d0b565b5f848152600782016020526040902060020180549192509060089061468d90600160401b90046001600160401b0316615c4a565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6146cc6001600160a01b03841683614d86565b905080515f141580156146f05750808060200190518101906146ee9190615c65565b155b156104d55782604051635274afe760e01b81526004016104cc919061524c565b5f80836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161473e919061524c565b602060405180830381865afa158015614759573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061477d919061546a565b90506147946001600160a01b038516333086614d93565b6040516370a0823160e01b81525f906001600160a01b038616906370a08231906147c290309060040161524c565b602060405180830381865afa1580156147dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614801919061546a565b90508181116148675760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104cc565b61382582826159f1565b61487e6020820182615146565b63ffffffff1615801561489e5750614899602082018261549c565b151590505b156148e5576148b06020820182615146565b6148bd602083018361549c565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104cc565b6148f2602082018261549c565b90506149016020830183615146565b63ffffffff16111561491a576148b06020820182615146565b60015b61492a602083018361549c565b90508110156112c257614940602083018361549c565b61494b6001846159f1565b81811061495a5761495a6154e1565b905060200201602081019061496f9190615481565b6001600160a01b0316614985602084018461549c565b83818110614995576149956154e1565b90506020020160208101906149aa9190615481565b6001600160a01b031610156149d257604051630dbc8d5f60e31b815260040160405180910390fd5b60010161491d565b5f6060826040015151603014614a035760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614a44988a986001989297929690959094909390929101615c80565b60405160208183030381529060405290505f5b84608001516020015151811015614ab657818560800151602001518281518110614a8357614a836154e1565b6020026020010151604051602001614a9c929190615d3a565b60408051601f198184030181529190529150600101614a57565b5060a0840151805160209182015151604051614ad6938593929101615d6b565b60405160208183030381529060405290505f5b8460a001516020015151811015614b4857818560a00151602001518281518110614b1557614b156154e1565b6020026020010151604051602001614b2e929190615d3a565b60408051601f198184030181529190529150600101614ae9565b5060c0840151604051614b5f918391602001615da6565b6040516020818303038152906040529050600281604051614b809190615692565b602060405180830381855afa158015614b9b573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614bbe919061546a565b94909350915050565b614bcf61430f565b614bd7614dcc565b610d6681614dd4565b614be861430f565b614358614eb7565b614bf861430f565b5f614c01612462565b905061ffff85161580614c19575061271061ffff8616115b15614c3d57604051635f12e6c360e11b815261ffff861660048201526024016104cc565b86881115614c615760405163222d164360e21b8152600481018990526024016104cc565b60ff84161580614c745750600a60ff8516115b15614c975760405163170db35960e31b815260ff851660048201526024016104cc565b614c9f6142f4565b6001600160401b0316866001600160401b03161015614cdb576040516202a06d60e11b81526001600160401b03871660048201526024016104cc565b825f03614cfb5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b6060611d0483835f614ebf565b6040516001600160a01b0384811660248301528381166044830152606482018390526106d79186918216906323b872dd90608401613d48565b61435861430f565b614ddc61430f565b5f614de5611d0b565b8235815590506014614dfd6060840160408501615c2a565b60ff161180614e1c5750614e176060830160408401615c2a565b60ff16155b15614e5057614e316060830160408401615c2a565b604051634a59bbff60e11b815260ff90911660048201526024016104cc565b614e606060830160408401615c2a565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614e916040830160208401615213565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612a6361430f565b606081471015614ee4573060405163cd78605960e01b81526004016104cc919061524c565b5f80856001600160a01b03168486604051614eff9190615692565b5f6040518083038185875af1925050503d805f8114614f39576040519150601f19603f3d011682016040523d82523d5f602084013e614f3e565b606091505b5091509150614f4e868383614f58565b9695505050505050565b606082614f6d57614f6882614fab565b611d04565b8151158015614f8457506001600160a01b0384163b155b15614fa45783604051639996b31560e01b81526004016104cc919061524c565b5080611d04565b805115614fbb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614fe090615412565b5f825580601f10614fef575050565b601f0160209004905f5260205f2090810190610d669190615048565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561505c575f8155600101615049565b5090565b8015158114610d66575f80fd5b803563ffffffff81168114615080575f80fd5b919050565b5f805f60608486031215615097575f80fd5b8335925060208401356150a981615060565b91506150b76040850161506d565b90509250925092565b5f602082840312156150d0575f80fd5b5035919050565b5f80604083850312156150e8575f80fd5b82356001600160401b038111156150fd575f80fd5b83016080818603121561510e575f80fd5b915061511c6020840161506d565b90509250929050565b5f8060408385031215615136575f80fd5b8235915061511c6020840161506d565b5f60208284031215615156575f80fd5b611d048261506d565b803561ffff81168114615080575f80fd5b80356001600160401b0381168114615080575f80fd5b5f805f8060808587031215615199575f80fd5b84356001600160401b038111156151ae575f80fd5b850160a081880312156151bf575f80fd5b93506151cd6020860161515f565b92506151db60408601615170565b9396929550929360600135925050565b5f80604083850312156151fc575f80fd5b6152058361506d565b946020939093013593505050565b5f60208284031215615223575f80fd5b611d0482615170565b5f806040838503121561523d575f80fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52602160045260245ffd5b6006811061528457615284615260565b9052565b5f5b838110156152a257818101518382015260200161528a565b50505f910152565b5f81518084526152c1816020860160208601615288565b601f01601f19169290920160200192915050565b602081526152e7602082018351615274565b5f602083015160e060408401526153026101008401826152aa565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610d66575f80fd5b5f8082840361016081121561537c575f80fd5b6101408082121561538b575f80fd5b849350830135905061539c81615355565b809150509250929050565b5f80602083850312156153b8575f80fd5b82356001600160401b03808211156153ce575f80fd5b818501915085601f8301126153e1575f80fd5b8135818111156153ef575f80fd5b866020828501011115615400575f80fd5b60209290920196919550909350505050565b600181811c9082168061542657607f821691505b60208210810361544457634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610ca88284615274565b602081525f611d0460208301846152aa565b5f6020828403121561547a575f80fd5b5051919050565b5f60208284031215615491575f80fd5b8135611d0481615355565b5f808335601e198436030181126154b1575f80fd5b8301803591506001600160401b038211156154ca575f80fd5b6020019150600581901b36038213156136a4575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615509575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561554957615549615513565b60405290565b604080519081016001600160401b038111828210171561554957615549615513565b604051601f8201601f191681016001600160401b038111828210171561559957615599615513565b604052919050565b5f6001600160401b038211156155b9576155b9615513565b50601f01601f191660200190565b5f82601f8301126155d6575f80fd5b81356155e96155e4826155a1565b615571565b8181528460208386010111156155fd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615629575f80fd5b615631615527565b82356001600160401b0380821115615647575f80fd5b615653368387016155c7565b83526020850135915080821115615668575f80fd5b50615675368286016155c7565b60208301525061568760408401615170565b604082015292915050565b5f8251615509818460208701615288565b601f8211156104d557805f5260205f20601f840160051c810160208510156156c85750805b601f840160051c820191505b81811015611641575f81556001016156d4565b81516001600160401b0381111561570057615700615513565b6157148161570e8454615412565b846156a3565b602080601f831160018114615747575f84156157305750858301515b5f19600386901b1c1916600185901b178555610eb4565b5f85815260208120601f198616915b8281101561577557888601518255948401946001909101908401615756565b508582101561579257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca857610ca86157a2565b5f63ffffffff8083168181036157e1576157e16157a2565b6001019392505050565b8082028115828204841417610ca857610ca86157a2565b5f8261581c57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061583557615835615260565b91905290565b5f60208083525f845461584d81615412565b806020870152604060018084165f811461586e576001811461588a576158b7565b60ff19851660408a0152604084151560051b8a010195506158b7565b895f5260205f205f5b858110156158ae5781548b8201860152908301908801615893565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611e8257611e826157a2565b6001600160401b03828116828216039080821115611e8257611e826157a2565b805161508081615060565b5f8060408385031215615930575f80fd5b82516001600160401b0380821115615946575f80fd5b9084019060608287031215615959575f80fd5b615961615527565b8251815260208084015161597481615355565b82820152604084015183811115615989575f80fd5b80850194505087601f85011261599d575f80fd5b835192506159ad6155e4846155a1565b83815288828587010111156159c0575f80fd5b6159cf84838301848801615288565b806040840152508195506159e4818801615914565b9450505050509250929050565b81810381811115610ca857610ca86157a2565b5f808335601e19843603018112615a19575f80fd5b8301803591506001600160401b03821115615a32575f80fd5b6020019150368190038213156136a4575f80fd5b5f8851615a57818460208d01615288565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615b0057615b006157a2565b505092915050565b5f8235603e19833603018112615509575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615b5a575f80fd5b615b6261554f565b615b6b8361506d565b81526020808401356001600160401b0380821115615b87575f80fd5b9085019036601f830112615b99575f80fd5b813581811115615bab57615bab615513565b8060051b9150615bbc848301615571565b8181529183018401918481019036841115615bd5575f80fd5b938501935b83851015615bff5784359250615bef83615355565b8282529385019390850190615bda565b94860194909452509295945050505050565b5f60208284031215615c21575f80fd5b611d048261515f565b5f60208284031215615c3a575f80fd5b813560ff81168114611d04575f80fd5b5f6001600160401b038083168181036157e1576157e16157a2565b5f60208284031215615c75575f80fd5b8151611d0481615060565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651615cc681602a850160208b01615288565b865190830190615cdd81602a840160208b01615288565b60c087901b6001600160c01b031916602a9290910191820152615d0f603282018660e01b6001600160e01b0319169052565b615d28603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615d4b818460208801615288565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615d7c818460208901615288565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615db7818460208801615288565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -1043,23 +1043,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Init // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) } // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, conversionData, messageIndex) } // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, conversionData, messageIndex) } // ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index eb53a49c9..1de002693 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -29,6 +29,14 @@ var ( _ = abi.ConvertType ) +// ConversionData is an auto generated low-level Go binding around an user-defined struct. +type ConversionData struct { + SubnetID [32]byte + ValidatorManagerBlockchainID [32]byte + ValidatorManagerAddress common.Address + InitialValidators []InitialValidator +} + // InitialValidator is an auto generated low-level Go binding around an user-defined struct. type InitialValidator struct { NodeID []byte @@ -54,14 +62,6 @@ type PoSValidatorManagerSettings struct { RewardCalculator common.Address } -// SubnetConversionData is an auto generated low-level Go binding around an user-defined struct. -type SubnetConversionData struct { - SubnetID [32]byte - ValidatorManagerBlockchainID [32]byte - ValidatorManagerAddress common.Address - InitialValidators []InitialValidator -} - // Validator is an auto generated low-level Go binding around an user-defined struct. type Validator struct { Status uint8 @@ -91,8 +91,8 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615c4c380380615c4c83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615aff8061014d5f395ff3fe6080604052600436106101b5575f3560e01c80638280a25a116100ea578063ba3a4b971161008e578063ba3a4b97146104dc578063bc5fbfec146104fb578063bee0a03f1461052e578063c257a0f51461054d578063c599e24f1461056c578063c974d1b61461057f578063d5f20ff614610593578063df93d8de146105bf578063fd7ac5e7146105d5575f80fd5b80638280a25a1461040b57806393e245981461041f57806398f3e2b41461043e578063a3a65e481461045d578063a9778a7a146102df578063af2f5feb1461047c578063afb980961461048f578063b771b3bc146104c2575f80fd5b806335455ded1161015c57806335455ded146102df5780633a1cfff614610307578063467ef06f146103265780635297fae61461034557806360305d6214610364578063620658561461038d57806366435abf146103ba578063732214f8146103d957806376f78621146103ec575f80fd5b80630118acc4146101b95780630322ed98146101da578063151d30d1146101f95780631ec447241461022457806320d91b7a1461024357806325e1c776146102625780632e2194d814610281578063329c3e12146102b8575b5f80fd5b3480156101c4575f80fd5b506101d86101d3366004614e19565b6105f4565b005b3480156101e5575f80fd5b506101d86101f4366004614e54565b610629565b348015610204575f80fd5b5061020d600a81565b60405160ff90911681526020015b60405180910390f35b34801561022f575f80fd5b506101d861023e366004614e19565b61082c565b34801561024e575f80fd5b506101d861025d366004614e6b565b610837565b34801561026d575f80fd5b506101d861027c366004614eb9565b610d35565b34801561028c575f80fd5b506102a061029b366004614e54565b610da9565b6040516001600160401b03909116815260200161021b565b3480156102c3575f80fd5b506102d26001600160991b0181565b60405161021b9190614eda565b3480156102ea575f80fd5b506102f461271081565b60405161ffff909116815260200161021b565b348015610312575f80fd5b506101d8610321366004614e19565b610dfd565b348015610331575f80fd5b506101d8610340366004614eee565b610e08565b348015610350575f80fd5b506101d861035f366004614f07565b610eb8565b34801561036f575f80fd5b50610378601481565b60405163ffffffff909116815260200161021b565b348015610398575f80fd5b506103ac6103a7366004614f45565b611113565b60405190815260200161021b565b3480156103c5575f80fd5b506102a06103d4366004614e54565b611133565b3480156103e4575f80fd5b506103ac5f81565b3480156103f7575f80fd5b506101d8610406366004614e19565b611147565b348015610416575f80fd5b5061020d603081565b34801561042a575f80fd5b506101d8610439366004614e54565b611172565b348015610449575f80fd5b506101d8610458366004614f07565b61122f565b348015610468575f80fd5b506101d8610477366004614eee565b6113ee565b6103ac61048a366004614f6f565b611574565b34801561049a575f80fd5b506103ac7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104cd575f80fd5b506102d26005600160991b0181565b3480156104e7575f80fd5b506101d86104f6366004614e54565b61159a565b348015610506575f80fd5b506103ac7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b348015610539575f80fd5b506101d8610548366004614e54565b611778565b348015610558575f80fd5b506101d8610567366004614fc3565b611895565b6103ac61057a366004614e54565b611972565b34801561058a575f80fd5b5061020d601481565b34801561059e575f80fd5b506105b26105ad366004614e54565b611995565b60405161021b919061504f565b3480156105ca575f80fd5b506102a06202a30081565b3480156105e0575f80fd5b506103ac6105ef3660046150cf565b611ad7565b6105ff838383611b0f565b61062457604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f610632611e55565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561066b5761066b614fda565b600581111561067c5761067c614fda565b81526020016001820180546106909061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc9061513a565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561077257610772614fda565b146107a5575f8381526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b6005600160991b016001600160a01b031663ee5b48eb6107ca8584606001515f611e79565b6040518263ffffffff1660e01b81526004016107e6919061517a565b6020604051808303815f875af1158015610802573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610826919061518c565b50505050565b610826838383611b0f565b5f610840611e55565b600981015490915060ff161561086957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d0919061518c565b8360200135146108f9576040516372b0a7e760e11b81526020840135600482015260240161061b565b3061090a60608501604086016151b7565b6001600160a01b0316146109425761092860608401604085016151b7565b604051632f88120d60e21b815260040161061b9190614eda565b5f61095060608501856151d2565b905090505f805b828163ffffffff161015610c37575f61097360608801886151d2565b8363ffffffff1681811061098957610989615217565b905060200281019061099b919061522b565b6109a49061534f565b80516040519192505f9160088801916109bc916153c8565b908152602001604051809103902054146109ec57805160405163a41f772f60e01b815261061b919060040161517a565b5f6002885f013584604051602001610a1b92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a35916153c8565b602060405180830381855afa158015610a50573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a73919061518c565b90508086600801835f0151604051610a8b91906153c8565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610b0d57610b0d614fda565b021790555060208201516001820190610b26908261541d565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610bca9116856154ec565b8251604051919550610bdb916153c8565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610c30906154ff565b9050610957565b50600483018190556001830154606490610c5b90600160401b900460ff1683615521565b1015610c7d57604051635943317f60e01b81526004810182905260240161061b565b5f610c93610c8a86611ec8565b60400151611fd3565b90505f610c9f87612160565b90505f600282604051610cb291906153c8565b602060405180830381855afa158015610ccd573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cf0919061518c565b9050828114610d1c57604051631872fc8d60e01b8152600481018290526024810184905260440161061b565b5050506009909201805460ff1916600117905550505050565b610d3e82612335565b610d5e576040516330efa98b60e01b81526004810183905260240161061b565b5f610d6883611995565b5190506002816005811115610d7f57610d7f614fda565b14610d9f578060405163170cc93360e21b815260040161061b919061516c565b610826838361235e565b5f80610db36125ac565b60030154610dc19084615538565b9050801580610dd657506001600160401b0381115b15610df75760405163222d164360e21b81526004810184905260240161061b565b92915050565b6108268383836125d0565b610e1061279b565b5f610e196125ac565b90505f80610e26846127e5565b91509150610e3382612335565b610e3f57505050610ead565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610e6d57610e6d614fda565b03610e92575f83815260088501602052604081208054919055610e908282612b1f565b505b610ea881610ea38460400151611113565b612b7d565b505050505b610eb5612b90565b50565b5f610ec16125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610efa57610efa614fda565b6003811115610f0b57610f0b614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610f8182611995565b9050600183516003811115610f9857610f98614fda565b14610fb9578251604051633b0d540d60e21b815261061b9190600401615557565b600481516005811115610fce57610fce614fda565b03610fe457610fdc85612bb6565b505050505050565b5f80610ffb610ff289611ec8565b60400151612dd6565b509150915081841461102857846040015160405163089938b360e11b815260040161061b91815260200190565b806001600160401b031683606001516001600160401b031610806110615750806001600160401b03168560a001516001600160401b0316115b1561108a57604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61111c6125ac565b60030154610df7906001600160401b038416615521565b5f61113d82611995565b6080015192915050565b6111528383836125d0565b61062457604051635bff683f60e11b81526004810184905260240161061b565b5f61117b6125ac565b90505f61118783611995565b519050600481600581111561119e5761119e614fda565b146111be578060405163170cc93360e21b815260040161061b919061516c565b5f8381526005830160205260409020546001600160a01b031633146111f957335b604051636e2ccd7560e11b815260040161061b9190614eda565b5f83815260088301602090815260408083208054908490556005860190925290912054610826906001600160a01b031682612b1f565b61123761279b565b5f6112406125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561127957611279614fda565b600381111561128a5761128a614fda565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561130357611303614fda565b14611324578051604051633b0d540d60e21b815261061b9190600401615557565b60046113338260400151611995565b51600581111561134557611345614fda565b146113d7575f61135485611ec8565b90505f806113658360400151612dd6565b5091509150818460400151146113915760405163089938b360e11b81526004810183905260240161061b565b806001600160401b03168460c001516001600160401b031611156113d357604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5050505b6113e083612bb6565b50506113ea612b90565b5050565b5f6113f7611e55565b90505f8061141061140785611ec8565b6040015161302c565b915091508061143657604051632d07135360e01b8152811515600482015260240161061b565b5f828152600684016020526040902080546114509061513a565b90505f036114745760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078501602052604090205460ff16600581111561149a5761149a614fda565b146114cd575f8281526007840160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068401602052604081206114e591614d6d565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f61157d61279b565b611589848484346131e8565b9050611593612b90565b9392505050565b5f6115a36125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156115dc576115dc614fda565b60038111156115ed576115ed614fda565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561166657611666614fda565b14158015611687575060038151600381111561168457611684614fda565b14155b156116a8578051604051633b0d540d60e21b815261061b9190600401615557565b5f6116b68260400151611995565b905080606001516001600160401b03165f036116e8576040516339b894f960e21b81526004810185905260240161061b565b6005600160991b016001600160a01b031663ee5b48eb611715846040015184606001518560800151611e79565b6040518263ffffffff1660e01b8152600401611731919061517a565b6020604051808303815f875af115801561174d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611771919061518c565b5050505050565b5f611781611e55565b5f838152600682016020526040902080549192509061179f9061513a565b90505f036117c35760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078301602052604090205460ff1660058111156117e9576117e9614fda565b1461181c575f8281526007820160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916118559190600401615571565b6020604051808303815f875af1158015611871573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610624919061518c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118de575080546001600160401b03808416911610155b156118fc5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561192683613394565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f61197b61279b565b6119868233346133a5565b9050611990612b90565b919050565b61199d614da4565b5f6119a6611e55565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156119dd576119dd614fda565b60058111156119ee576119ee614fda565b8152602001600182018054611a029061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2e9061513a565b8015611a795780601f10611a5057610100808354040283529160200191611a79565b820191905f5260205f20905b815481529060010190602001808311611a5c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b5f80611ae1611e55565b9050806008018484604051611af79291906155fb565b90815260200160405180910390205491505092915050565b5f80611b196125ac565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b5257611b52614fda565b6003811115611b6357611b63614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611bd982611995565b9050600283516003811115611bf057611bf0614fda565b14611c11578251604051633b0d540d60e21b815261061b9190600401615557565b60208301516001600160a01b03163314611cad575f8281526005850160205260409020546001600160a01b03163314611c4a57336111df565b5f82815260058501602052604090205460a0820151611c7991600160b01b90046001600160401b03169061560a565b6001600160401b0316421015611cad5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b600281516005811115611cc257611cc2614fda565b03611df05760028401546080840151611ce4916001600160401b03169061560a565b6001600160401b0316421015611d185760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b8615611d2a57611d28828761235e565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611d63918491611d5e919061562a565b613677565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611da4846137c1565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506115939350505050565b600481516005811115611e0557611e05614fda565b03611e3957611e13836137c1565b5f898152600786016020526040902055611e2c88612bb6565b6001945050505050611593565b805160405163170cc93360e21b815261061b919060040161516c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611f2c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f539190810190615655565b9150915080611f7557604051636b2f19e960e01b815260040160405180910390fd5b815115611f9b578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b031615611fcc578160200151604051624de75d60e31b815260040161061b9190614eda565b5092915050565b5f815160261461200857815160405163cc92daa160e01b815263ffffffff90911660048201526026602482015260440161061b565b5f805b60028110156120575761201f816001615727565b61202a906008615521565b61ffff1684828151811061204057612040615217565b016020015160f81c901b919091179060010161200b565b5061ffff8116156120815760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b60048110156120dc57612098816003615727565b6120a3906008615521565b63ffffffff16856120b58360026154ec565b815181106120c5576120c5615217565b016020015160f81c901b9190911790600101612084565b5063ffffffff81161561210257604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156121575761211981601f615727565b612124906008615521565b866121308360066154ec565b8151811061214057612140615217565b016020015160f81c901b9190911790600101612105565b50949350505050565b60605f8083356020850135601461217c878701604089016151b7565b61218960608901896151d2565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b61220a60608501856151d2565b9050811015611fcc578161222160608601866151d2565b8381811061223157612231615217565b9050602002810190612243919061522b565b61224d908061573a565b905061225c60608701876151d2565b8481811061226c5761226c615217565b905060200281019061227e919061522b565b612288908061573a565b61229560608901896151d2565b868181106122a5576122a5615217565b90506020028101906122b7919061522b565b6122c590602081019061573a565b6122d260608b018b6151d2565b888181106122e2576122e2615217565b90506020028101906122f4919061522b565b612305906060810190604001614f45565b60405160200161231b979695949392919061577c565b60408051601f1981840301815291905291506001016121fd565b5f8061233f6125ac565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156123a9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123d09190810190615655565b91509150806123f257604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612459919061518c565b82511461247f578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b0316156124b0578160200151604051624de75d60e31b815260040161061b9190614eda565b5f806124bf8460400151613944565b915091508187146124e65760405163089938b360e11b81526004810188905260240161061b565b5f6124ef6125ac565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612582575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26125a1565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806125da6125ac565b90505f6125e686613b35565b90506125f186612335565b61260057600192505050611593565b5f8681526005830160205260409020546001600160a01b0316331461262557336111df565b5f86815260058301602052604090205460a082015161265491600160b01b90046001600160401b03169061560a565b6001600160401b03168160c001516001600160401b0316101561269b5760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161061b565b5f85156126b3576126ac878661235e565b90506126d1565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126f690611113565b60a086015160c08701516040516001600160e01b031960e086901b168152612726939291829189906004016157e5565b602060405180830381865afa158015612741573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612765919061518c565b905080846008015f8a81526020019081526020015f205f82825461278991906154ec565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016127df57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ee614da4565b5f6127f7611e55565b90505f8061280761140787611ec8565b91509150801561282e57604051632d07135360e01b8152811515600482015260240161061b565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561285f5761285f614fda565b600581111561287057612870614fda565b81526020016001820180546128849061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546128b09061513a565b80156128fb5780601f106128d2576101008083540402835291602001916128fb565b820191905f5260205f20905b8154815290600101906020018083116128de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561296657612966614fda565b14158015612987575060018151600581111561298457612984614fda565b14155b156129a857805160405163170cc93360e21b815261061b919060040161516c565b6003815160058111156129bd576129bd614fda565b036129cb57600481526129d0565b600581525b8360080181602001516040516129e691906153c8565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a2a57612a2a614fda565b021790555060208201516001820190612a43908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b0319169190921617905580516005811115612ae857612ae8614fda565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612b6b575f80fd5b505af1158015610fdc573d5f803e3d5ffd5b6113ea6001600160a01b03831682613e0d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612bbf6125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612bf857612bf8614fda565b6003811115612c0957612c09614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612c7d613ea0565b8260800151612c8c919061560a565b6001600160401b0316421015612cc05760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612d7b575f84815260058701602052604090205461271090612d2d90600160a01b900461ffff1685615521565b612d379190615538565b915081866008015f8681526020019081526020015f205f828254612d5b91906154ec565b90915550612d6b90508284615727565b9050612d7b856020015182612b1f565b612d908560200151610ea38760600151611113565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e0d57835160405163cc92daa160e01b815263ffffffff90911660048201526036602482015260440161061b565b5f805b6002811015612e5c57612e24816001615727565b612e2f906008615521565b61ffff16868281518110612e4557612e45615217565b016020015160f81c901b9190911790600101612e10565b5061ffff811615612e865760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015612ee157612e9d816003615727565b612ea8906008615521565b63ffffffff1687612eba8360026154ec565b81518110612eca57612eca615217565b016020015160f81c901b9190911790600101612e89565b5063ffffffff8116600314612f0957604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612f5e57612f2081601f615727565b612f2b906008615521565b88612f378360066154ec565b81518110612f4757612f47615217565b016020015160f81c901b9190911790600101612f0c565b505f805b6008811015612fbd57612f76816007615727565b612f81906008615521565b6001600160401b031689612f968360266154ec565b81518110612fa657612fa6615217565b016020015160f81c901b9190911790600101612f62565b505f805b600881101561301c57612fd5816007615727565b612fe0906008615521565b6001600160401b03168a612ff583602e6154ec565b8151811061300557613005615217565b016020015160f81c901b9190911790600101612fc1565b5091989097509095509350505050565b5f80825160271461306257825160405163cc92daa160e01b815263ffffffff90911660048201526027602482015260440161061b565b5f805b60028110156130b157613079816001615727565b613084906008615521565b61ffff1685828151811061309a5761309a615217565b016020015160f81c901b9190911790600101613065565b5061ffff8116156130db5760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613136576130f2816003615727565b6130fd906008615521565b63ffffffff168661310f8360026154ec565b8151811061311f5761311f615217565b016020015160f81c901b91909117906001016130de565b5063ffffffff811660021461315e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156131b35761317581601f615727565b613180906008615521565b8761318c8360066154ec565b8151811061319c5761319c615217565b016020015160f81c901b9190911790600101613161565b505f866026815181106131c8576131c8615217565b016020015191976001600160f81b03199092161515965090945050505050565b5f806131f26125ac565b600281015490915061ffff600160401b9091048116908616108061321b575061271061ffff8616115b1561323f57604051635f12e6c360e11b815261ffff8616600482015260240161061b565b60028101546001600160401b03908116908516101561327b576040516202a06d60e11b81526001600160401b038516600482015260240161061b565b805483108061328d5750806001015483115b156132ae5760405163222d164360e21b81526004810184905260240161061b565b825f6132b982610da9565b90505f6132c68983613ebb565b905060405180608001604052806132da3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b61339c614418565b610eb581614463565b5f806133af6125ac565b90505f6133bb84610da9565b90505f6133c787611995565b90506133d287612335565b6133f2576040516330efa98b60e01b81526004810188905260240161061b565b60028151600581111561340757613407614fda565b1461342857805160405163170cc93360e21b815261061b919060040161516c565b5f828260800151613439919061560a565b905083600201600a9054906101000a90046001600160401b031682604001516134629190615813565b6001600160401b0316816001600160401b0316111561349f57604051636d51fe0560e11b81526001600160401b038216600482015260240161061b565b5f806134ab8a84613677565b915091505f8a836040516020016134d992919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561356c5761356c614fda565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f805f613682611e55565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166136b285826144d7565b5f6136bc876146fc565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb61370c8a858b611e79565b6040518263ffffffff1660e01b8152600401613728919061517a565b6020604051808303815f875af1158015613744573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613768919061518c565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806137cb6125ac565b90505f6137db8460400151611995565b90505f6003825160058111156137f3576137f3614fda565b1480613811575060048251600581111561380f5761380f614fda565b145b15613821575060c081015161385e565b60028251600581111561383657613836614fda565b0361384257504261385e565b815160405163170cc93360e21b815261061b919060040161516c565b84608001516001600160401b0316816001600160401b03161161388557505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906138aa90611113565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526138fc9493929188916001600160401b03909116906004016157e5565b602060405180830381865afa158015613917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061393b919061518c565b95945050505050565b5f808251602e1461397a57825160405163cc92daa160e01b815263ffffffff9091166004820152602e602482015260440161061b565b5f805b60028110156139c957613991816001615727565b61399c906008615521565b61ffff168582815181106139b2576139b2615217565b016020015160f81c901b919091179060010161397d565b5061ffff8116156139f35760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613a4e57613a0a816003615727565b613a15906008615521565b63ffffffff1686613a278360026154ec565b81518110613a3757613a37615217565b016020015160f81c901b91909117906001016139f6565b5063ffffffff811615613a7457604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613ac957613a8b81601f615727565b613a96906008615521565b87613aa28360066154ec565b81518110613ab257613ab2615217565b016020015160f81c901b9190911790600101613a77565b505f805b6008811015613b2857613ae1816007615727565b613aec906008615521565b6001600160401b031688613b018360266154ec565b81518110613b1157613b11615217565b016020015160f81c901b9190911790600101613acd565b5090969095509350505050565b613b3d614da4565b5f613b46611e55565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613b7f57613b7f614fda565b6005811115613b9057613b90614fda565b8152602001600182018054613ba49061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054613bd09061513a565b8015613c1b5780601f10613bf257610100808354040283529160200191613c1b565b820191905f5260205f20905b815481529060010190602001808311613bfe57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613c8957613c89614fda565b14613cbc575f8481526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613d0057613d00614fda565b021790555060208201516001820190613d19908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613db68582613677565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613e30573060405163cd78605960e01b815260040161061b9190614eda565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613e79576040519150601f19603f3d011682016040523d82523d5f602084013e613e7e565b606091505b505090508061062457604051630a12f52160e11b815260040160405180910390fd5b5f613ea9611e55565b600101546001600160401b0316919050565b5f613ec4611e55565b6009015460ff16613ee857604051637fab81e560e01b815260040160405180910390fd5b5f613ef1611e55565b905042613f046060860160408701614f45565b6001600160401b0316111580613f3e5750613f226202a300426154ec565b613f326060860160408701614f45565b6001600160401b031610155b15613f7857613f536060850160408601614f45565b604051635879da1360e11b81526001600160401b03909116600482015260240161061b565b613f8d613f88606086018661583e565b614765565b613f9d613f88608086018661583e565b6030613fac602086018661573a565b905014613fde57613fc0602085018561573a565b6040516326475b2f60e11b815261061b925060040190815260200190565b613fe8848061573a565b90505f0361401557613ffa848061573a565b604051633e08a12560e11b815260040161061b929190615852565b5f60088201614024868061573a565b6040516140329291906155fb565b9081526020016040518091039020541461406b57614050848061573a565b60405163a41f772f60e01b815260040161061b929190615852565b614075835f6144d7565b6040805160e08101909152815481525f908190614181906020810161409a898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906140e2908a018a61573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161412b60608a0160408b01614f45565b6001600160401b0316815260200161414660608a018a61583e565b61414f90615880565b815260200161416160808a018a61583e565b61416a90615880565b8152602001876001600160401b03168152506148ce565b5f8281526006860160205260409020919350915061419f828261541d565b5081600884016141af888061573a565b6040516141bd9291906155fb565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906141f990859060040161517a565b6020604051808303815f875af1158015614215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614239919061518c565b6040805160e081019091529091508060018152602001614259898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156142e8576142e8614fda565b021790555060208201516001820190614301908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061439e888061573a565b6040516143ac9291906155fb565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906143ea9190614f45565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661446157604051631afcd79f60e31b815260040160405180910390fd5b565b61446b614418565b61447481614abb565b61447c614ad4565b610eb56060820135608083013561449960c0850160a08601614f45565b6144a960e0860160c08701615947565b6144ba610100870160e08801615960565b6101008701356144d261014089016101208a016151b7565b614ae4565b5f6144e0611e55565b90505f826001600160401b0316846001600160401b0316111561450e57614507838561562a565b905061451b565b614518848461562a565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061457d575060018401548151614579916001600160401b0316906154ec565b8210155b156145a3576001600160401b0383166060820152818152604081015160208201526145c2565b82816060018181516145b5919061560a565b6001600160401b03169052505b60608101516145d2906064615813565b602082015160018601546001600160401b0392909216916145fd9190600160401b900460ff16615521565b101561462d57606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161061b565b856001600160401b03168160400181815161464891906154ec565b9052506040810180516001600160401b0387169190614668908390615727565b9052506001840154604082015160649161468d91600160401b90910460ff1690615521565b10156146b4578060400151604051635943317f60e01b815260040161061b91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614706611e55565b5f848152600782016020526040902060020180549192509060089061473a90600160401b90046001600160401b0316615980565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6147726020820182614eee565b63ffffffff16158015614792575061478d60208201826151d2565b151590505b156147d9576147a46020820182614eee565b6147b160208301836151d2565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161061b565b6147e660208201826151d2565b90506147f56020830183614eee565b63ffffffff16111561480e576147a46020820182614eee565b60015b61481e60208301836151d2565b90508110156113ea5761483460208301836151d2565b61483f600184615727565b81811061484e5761484e615217565b905060200201602081019061486391906151b7565b6001600160a01b031661487960208401846151d2565b8381811061488957614889615217565b905060200201602081019061489e91906151b7565b6001600160a01b031610156148c657604051630dbc8d5f60e31b815260040160405180910390fd5b600101614811565b5f60608260400151516030146148f75760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614938988a98600198929792969095909490939092910161599b565b60405160208183030381529060405290505f5b846080015160200151518110156149aa5781856080015160200151828151811061497757614977615217565b6020026020010151604051602001614990929190615a55565b60408051601f19818403018152919052915060010161494b565b5060a08401518051602091820151516040516149ca938593929101615a86565b60405160208183030381529060405290505f5b8460a001516020015151811015614a3c57818560a00151602001518281518110614a0957614a09615217565b6020026020010151604051602001614a22929190615a55565b60408051601f1981840301815291905291506001016149dd565b5060c0840151604051614a53918391602001615ac1565b6040516020818303038152906040529050600281604051614a7491906153c8565b602060405180830381855afa158015614a8f573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614ab2919061518c565b94909350915050565b614ac3614418565b614acb614c7a565b610eb581614c82565b614adc614418565b614461614d65565b614aec614418565b5f614af56125ac565b905061ffff85161580614b0d575061271061ffff8616115b15614b3157604051635f12e6c360e11b815261ffff8616600482015260240161061b565b86881115614b555760405163222d164360e21b81526004810189905260240161061b565b60ff84161580614b685750600a60ff8516115b15614b8b5760405163170db35960e31b815260ff8516600482015260240161061b565b614b93613ea0565b6001600160401b0316866001600160401b03161015614bcf576040516202a06d60e11b81526001600160401b038716600482015260240161061b565b825f03614bef5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614461614418565b614c8a614418565b5f614c93611e55565b8235815590506014614cab6060840160408501615960565b60ff161180614cca5750614cc56060830160408401615960565b60ff16155b15614cfe57614cdf6060830160408401615960565b604051634a59bbff60e11b815260ff909116600482015260240161061b565b614d0e6060830160408401615960565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614d3f6040830160208401614f45565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612b90614418565b508054614d799061513a565b5f825580601f10614d88575050565b601f0160209004905f5260205f2090810190610eb59190614de1565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614df5575f8155600101614de2565b5090565b8015158114610eb5575f80fd5b803563ffffffff81168114611990575f80fd5b5f805f60608486031215614e2b575f80fd5b833592506020840135614e3d81614df9565b9150614e4b60408501614e06565b90509250925092565b5f60208284031215614e64575f80fd5b5035919050565b5f8060408385031215614e7c575f80fd5b82356001600160401b03811115614e91575f80fd5b830160808186031215614ea2575f80fd5b9150614eb060208401614e06565b90509250929050565b5f8060408385031215614eca575f80fd5b82359150614eb060208401614e06565b6001600160a01b0391909116815260200190565b5f60208284031215614efe575f80fd5b61159382614e06565b5f8060408385031215614f18575f80fd5b614f2183614e06565b946020939093013593505050565b80356001600160401b0381168114611990575f80fd5b5f60208284031215614f55575f80fd5b61159382614f2f565b803561ffff81168114611990575f80fd5b5f805f60608486031215614f81575f80fd5b83356001600160401b03811115614f96575f80fd5b840160a08187031215614fa7575f80fd5b9250614fb560208501614f5e565b9150614e4b60408501614f2f565b5f6101408284031215614fd4575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614ffe57614ffe614fda565b9052565b5f5b8381101561501c578181015183820152602001615004565b50505f910152565b5f815180845261503b816020860160208601615002565b601f01601f19169290920160200192915050565b60208152615061602082018351614fee565b5f602083015160e0604084015261507c610100840182615024565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156150e0575f80fd5b82356001600160401b03808211156150f6575f80fd5b818501915085601f830112615109575f80fd5b813581811115615117575f80fd5b866020828501011115615128575f80fd5b60209290920196919550909350505050565b600181811c9082168061514e57607f821691505b602082108103614fd457634e487b7160e01b5f52602260045260245ffd5b60208101610df78284614fee565b602081525f6115936020830184615024565b5f6020828403121561519c575f80fd5b5051919050565b6001600160a01b0381168114610eb5575f80fd5b5f602082840312156151c7575f80fd5b8135611593816151a3565b5f808335601e198436030181126151e7575f80fd5b8301803591506001600160401b03821115615200575f80fd5b6020019150600581901b36038213156137ba575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261523f575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561527f5761527f615249565b60405290565b604080519081016001600160401b038111828210171561527f5761527f615249565b604051601f8201601f191681016001600160401b03811182821017156152cf576152cf615249565b604052919050565b5f6001600160401b038211156152ef576152ef615249565b50601f01601f191660200190565b5f82601f83011261530c575f80fd5b813561531f61531a826152d7565b6152a7565b818152846020838601011115615333575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561535f575f80fd5b61536761525d565b82356001600160401b038082111561537d575f80fd5b615389368387016152fd565b8352602085013591508082111561539e575f80fd5b506153ab368286016152fd565b6020830152506153bd60408401614f2f565b604082015292915050565b5f825161523f818460208701615002565b601f82111561062457805f5260205f20601f840160051c810160208510156153fe5750805b601f840160051c820191505b81811015611771575f815560010161540a565b81516001600160401b0381111561543657615436615249565b61544a81615444845461513a565b846153d9565b602080601f83116001811461547d575f84156154665750858301515b5f19600386901b1c1916600185901b178555610fdc565b5f85815260208120601f198616915b828110156154ab5788860151825594840194600190910190840161548c565b50858210156154c857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610df757610df76154d8565b5f63ffffffff808316818103615517576155176154d8565b6001019392505050565b8082028115828204841417610df757610df76154d8565b5f8261555257634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061556b5761556b614fda565b91905290565b5f60208083525f84546155838161513a565b806020870152604060018084165f81146155a457600181146155c0576155ed565b60ff19851660408a0152604084151560051b8a010195506155ed565b895f5260205f205f5b858110156155e45781548b82018601529083019088016155c9565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611fcc57611fcc6154d8565b6001600160401b03828116828216039080821115611fcc57611fcc6154d8565b805161199081614df9565b5f8060408385031215615666575f80fd5b82516001600160401b038082111561567c575f80fd5b908401906060828703121561568f575f80fd5b61569761525d565b825181526020808401516156aa816151a3565b828201526040840151838111156156bf575f80fd5b80850194505087601f8501126156d3575f80fd5b835192506156e361531a846152d7565b83815288828587010111156156f6575f80fd5b61570584838301848801615002565b8060408401525081955061571a81880161564a565b9450505050509250929050565b81810381811115610df757610df76154d8565b5f808335601e1984360301811261574f575f80fd5b8301803591506001600160401b03821115615768575f80fd5b6020019150368190038213156137ba575f80fd5b5f885161578d818460208d01615002565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615836576158366154d8565b505092915050565b5f8235603e1983360301811261523f575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615890575f80fd5b615898615285565b6158a183614e06565b81526020808401356001600160401b03808211156158bd575f80fd5b9085019036601f8301126158cf575f80fd5b8135818111156158e1576158e1615249565b8060051b91506158f28483016152a7565b818152918301840191848101903684111561590b575f80fd5b938501935b838510156159355784359250615925836151a3565b8282529385019390850190615910565b94860194909452509295945050505050565b5f60208284031215615957575f80fd5b61159382614f5e565b5f60208284031215615970575f80fd5b813560ff81168114611593575f80fd5b5f6001600160401b03808316818103615517576155176154d8565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516159e181602a850160208b01615002565b8651908301906159f881602a840160208b01615002565b60c087901b6001600160c01b031916602a9290910191820152615a2a603282018660e01b6001600160e01b0319169052565b615a43603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615a66818460208801615002565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615a97818460208901615002565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615ad2818460208801615002565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"conversionData\",\"type\":\"tuple\",\"internalType\":\"structConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidConversionID\",\"inputs\":[{\"name\":\"encodedConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615c4c380380615c4c83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615aff8061014d5f395ff3fe6080604052600436106101b5575f3560e01c80638280a25a116100ea578063ba3a4b971161008e578063ba3a4b97146104dc578063bc5fbfec146104fb578063bee0a03f1461052e578063c257a0f51461054d578063c599e24f1461056c578063c974d1b61461057f578063d5f20ff614610593578063df93d8de146105bf578063fd7ac5e7146105d5575f80fd5b80638280a25a1461040b57806393e245981461041f57806398f3e2b41461043e578063a3a65e481461045d578063a9778a7a146102df578063af2f5feb1461047c578063afb980961461048f578063b771b3bc146104c2575f80fd5b806335455ded1161015c57806335455ded146102df5780633a1cfff614610307578063467ef06f146103265780635297fae61461034557806360305d6214610364578063620658561461038d57806366435abf146103ba578063732214f8146103d957806376f78621146103ec575f80fd5b80630118acc4146101b95780630322ed98146101da578063151d30d1146101f95780631ec447241461022457806320d91b7a1461024357806325e1c776146102625780632e2194d814610281578063329c3e12146102b8575b5f80fd5b3480156101c4575f80fd5b506101d86101d3366004614e19565b6105f4565b005b3480156101e5575f80fd5b506101d86101f4366004614e54565b610629565b348015610204575f80fd5b5061020d600a81565b60405160ff90911681526020015b60405180910390f35b34801561022f575f80fd5b506101d861023e366004614e19565b61082c565b34801561024e575f80fd5b506101d861025d366004614e6b565b610837565b34801561026d575f80fd5b506101d861027c366004614eb9565b610d35565b34801561028c575f80fd5b506102a061029b366004614e54565b610da9565b6040516001600160401b03909116815260200161021b565b3480156102c3575f80fd5b506102d26001600160991b0181565b60405161021b9190614eda565b3480156102ea575f80fd5b506102f461271081565b60405161ffff909116815260200161021b565b348015610312575f80fd5b506101d8610321366004614e19565b610dfd565b348015610331575f80fd5b506101d8610340366004614eee565b610e08565b348015610350575f80fd5b506101d861035f366004614f07565b610eb8565b34801561036f575f80fd5b50610378601481565b60405163ffffffff909116815260200161021b565b348015610398575f80fd5b506103ac6103a7366004614f45565b611113565b60405190815260200161021b565b3480156103c5575f80fd5b506102a06103d4366004614e54565b611133565b3480156103e4575f80fd5b506103ac5f81565b3480156103f7575f80fd5b506101d8610406366004614e19565b611147565b348015610416575f80fd5b5061020d603081565b34801561042a575f80fd5b506101d8610439366004614e54565b611172565b348015610449575f80fd5b506101d8610458366004614f07565b61122f565b348015610468575f80fd5b506101d8610477366004614eee565b6113ee565b6103ac61048a366004614f6f565b611574565b34801561049a575f80fd5b506103ac7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104cd575f80fd5b506102d26005600160991b0181565b3480156104e7575f80fd5b506101d86104f6366004614e54565b61159a565b348015610506575f80fd5b506103ac7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b348015610539575f80fd5b506101d8610548366004614e54565b611778565b348015610558575f80fd5b506101d8610567366004614fc3565b611895565b6103ac61057a366004614e54565b611972565b34801561058a575f80fd5b5061020d601481565b34801561059e575f80fd5b506105b26105ad366004614e54565b611995565b60405161021b919061504f565b3480156105ca575f80fd5b506102a06202a30081565b3480156105e0575f80fd5b506103ac6105ef3660046150cf565b611ad7565b6105ff838383611b0f565b61062457604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f610632611e55565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561066b5761066b614fda565b600581111561067c5761067c614fda565b81526020016001820180546106909061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc9061513a565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561077257610772614fda565b146107a5575f8381526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b6005600160991b016001600160a01b031663ee5b48eb6107ca8584606001515f611e79565b6040518263ffffffff1660e01b81526004016107e6919061517a565b6020604051808303815f875af1158015610802573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610826919061518c565b50505050565b610826838383611b0f565b5f610840611e55565b600981015490915060ff161561086957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d0919061518c565b8360200135146108f9576040516372b0a7e760e11b81526020840135600482015260240161061b565b3061090a60608501604086016151b7565b6001600160a01b0316146109425761092860608401604085016151b7565b604051632f88120d60e21b815260040161061b9190614eda565b5f61095060608501856151d2565b905090505f805b828163ffffffff161015610c37575f61097360608801886151d2565b8363ffffffff1681811061098957610989615217565b905060200281019061099b919061522b565b6109a49061534f565b80516040519192505f9160088801916109bc916153c8565b908152602001604051809103902054146109ec57805160405163a41f772f60e01b815261061b919060040161517a565b5f6002885f013584604051602001610a1b92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a35916153c8565b602060405180830381855afa158015610a50573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a73919061518c565b90508086600801835f0151604051610a8b91906153c8565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610b0d57610b0d614fda565b021790555060208201516001820190610b26908261541d565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610bca9116856154ec565b8251604051919550610bdb916153c8565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610c30906154ff565b9050610957565b50600483018190556001830154606490610c5b90600160401b900460ff1683615521565b1015610c7d57604051635943317f60e01b81526004810182905260240161061b565b5f610c93610c8a86611ec8565b60400151611fd3565b90505f610c9f87612160565b90505f600282604051610cb291906153c8565b602060405180830381855afa158015610ccd573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cf0919061518c565b9050828114610d1c5760405163baaea89d60e01b8152600481018290526024810184905260440161061b565b5050506009909201805460ff1916600117905550505050565b610d3e82612335565b610d5e576040516330efa98b60e01b81526004810183905260240161061b565b5f610d6883611995565b5190506002816005811115610d7f57610d7f614fda565b14610d9f578060405163170cc93360e21b815260040161061b919061516c565b610826838361235e565b5f80610db36125ac565b60030154610dc19084615538565b9050801580610dd657506001600160401b0381115b15610df75760405163222d164360e21b81526004810184905260240161061b565b92915050565b6108268383836125d0565b610e1061279b565b5f610e196125ac565b90505f80610e26846127e5565b91509150610e3382612335565b610e3f57505050610ead565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610e6d57610e6d614fda565b03610e92575f83815260088501602052604081208054919055610e908282612b1f565b505b610ea881610ea38460400151611113565b612b7d565b505050505b610eb5612b90565b50565b5f610ec16125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610efa57610efa614fda565b6003811115610f0b57610f0b614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610f8182611995565b9050600183516003811115610f9857610f98614fda565b14610fb9578251604051633b0d540d60e21b815261061b9190600401615557565b600481516005811115610fce57610fce614fda565b03610fe457610fdc85612bb6565b505050505050565b5f80610ffb610ff289611ec8565b60400151612dd6565b509150915081841461102857846040015160405163089938b360e11b815260040161061b91815260200190565b806001600160401b031683606001516001600160401b031610806110615750806001600160401b03168560a001516001600160401b0316115b1561108a57604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61111c6125ac565b60030154610df7906001600160401b038416615521565b5f61113d82611995565b6080015192915050565b6111528383836125d0565b61062457604051635bff683f60e11b81526004810184905260240161061b565b5f61117b6125ac565b90505f61118783611995565b519050600481600581111561119e5761119e614fda565b146111be578060405163170cc93360e21b815260040161061b919061516c565b5f8381526005830160205260409020546001600160a01b031633146111f957335b604051636e2ccd7560e11b815260040161061b9190614eda565b5f83815260088301602090815260408083208054908490556005860190925290912054610826906001600160a01b031682612b1f565b61123761279b565b5f6112406125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561127957611279614fda565b600381111561128a5761128a614fda565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561130357611303614fda565b14611324578051604051633b0d540d60e21b815261061b9190600401615557565b60046113338260400151611995565b51600581111561134557611345614fda565b146113d7575f61135485611ec8565b90505f806113658360400151612dd6565b5091509150818460400151146113915760405163089938b360e11b81526004810183905260240161061b565b806001600160401b03168460c001516001600160401b031611156113d357604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5050505b6113e083612bb6565b50506113ea612b90565b5050565b5f6113f7611e55565b90505f8061141061140785611ec8565b6040015161302c565b915091508061143657604051632d07135360e01b8152811515600482015260240161061b565b5f828152600684016020526040902080546114509061513a565b90505f036114745760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078501602052604090205460ff16600581111561149a5761149a614fda565b146114cd575f8281526007840160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068401602052604081206114e591614d6d565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f61157d61279b565b611589848484346131e8565b9050611593612b90565b9392505050565b5f6115a36125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156115dc576115dc614fda565b60038111156115ed576115ed614fda565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561166657611666614fda565b14158015611687575060038151600381111561168457611684614fda565b14155b156116a8578051604051633b0d540d60e21b815261061b9190600401615557565b5f6116b68260400151611995565b905080606001516001600160401b03165f036116e8576040516339b894f960e21b81526004810185905260240161061b565b6005600160991b016001600160a01b031663ee5b48eb611715846040015184606001518560800151611e79565b6040518263ffffffff1660e01b8152600401611731919061517a565b6020604051808303815f875af115801561174d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611771919061518c565b5050505050565b5f611781611e55565b5f838152600682016020526040902080549192509061179f9061513a565b90505f036117c35760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078301602052604090205460ff1660058111156117e9576117e9614fda565b1461181c575f8281526007820160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916118559190600401615571565b6020604051808303815f875af1158015611871573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610624919061518c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118de575080546001600160401b03808416911610155b156118fc5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561192683613394565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f61197b61279b565b6119868233346133a5565b9050611990612b90565b919050565b61199d614da4565b5f6119a6611e55565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156119dd576119dd614fda565b60058111156119ee576119ee614fda565b8152602001600182018054611a029061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2e9061513a565b8015611a795780601f10611a5057610100808354040283529160200191611a79565b820191905f5260205f20905b815481529060010190602001808311611a5c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b5f80611ae1611e55565b9050806008018484604051611af79291906155fb565b90815260200160405180910390205491505092915050565b5f80611b196125ac565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b5257611b52614fda565b6003811115611b6357611b63614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611bd982611995565b9050600283516003811115611bf057611bf0614fda565b14611c11578251604051633b0d540d60e21b815261061b9190600401615557565b60208301516001600160a01b03163314611cad575f8281526005850160205260409020546001600160a01b03163314611c4a57336111df565b5f82815260058501602052604090205460a0820151611c7991600160b01b90046001600160401b03169061560a565b6001600160401b0316421015611cad5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b600281516005811115611cc257611cc2614fda565b03611df05760028401546080840151611ce4916001600160401b03169061560a565b6001600160401b0316421015611d185760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b8615611d2a57611d28828761235e565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611d63918491611d5e919061562a565b613677565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611da4846137c1565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506115939350505050565b600481516005811115611e0557611e05614fda565b03611e3957611e13836137c1565b5f898152600786016020526040902055611e2c88612bb6565b6001945050505050611593565b805160405163170cc93360e21b815261061b919060040161516c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611f2c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f539190810190615655565b9150915080611f7557604051636b2f19e960e01b815260040160405180910390fd5b815115611f9b578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b031615611fcc578160200151604051624de75d60e31b815260040161061b9190614eda565b5092915050565b5f815160261461200857815160405163cc92daa160e01b815263ffffffff90911660048201526026602482015260440161061b565b5f805b60028110156120575761201f816001615727565b61202a906008615521565b61ffff1684828151811061204057612040615217565b016020015160f81c901b919091179060010161200b565b5061ffff8116156120815760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b60048110156120dc57612098816003615727565b6120a3906008615521565b63ffffffff16856120b58360026154ec565b815181106120c5576120c5615217565b016020015160f81c901b9190911790600101612084565b5063ffffffff81161561210257604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156121575761211981601f615727565b612124906008615521565b866121308360066154ec565b8151811061214057612140615217565b016020015160f81c901b9190911790600101612105565b50949350505050565b60605f8083356020850135601461217c878701604089016151b7565b61218960608901896151d2565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b61220a60608501856151d2565b9050811015611fcc578161222160608601866151d2565b8381811061223157612231615217565b9050602002810190612243919061522b565b61224d908061573a565b905061225c60608701876151d2565b8481811061226c5761226c615217565b905060200281019061227e919061522b565b612288908061573a565b61229560608901896151d2565b868181106122a5576122a5615217565b90506020028101906122b7919061522b565b6122c590602081019061573a565b6122d260608b018b6151d2565b888181106122e2576122e2615217565b90506020028101906122f4919061522b565b612305906060810190604001614f45565b60405160200161231b979695949392919061577c565b60408051601f1981840301815291905291506001016121fd565b5f8061233f6125ac565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156123a9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123d09190810190615655565b91509150806123f257604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612459919061518c565b82511461247f578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b0316156124b0578160200151604051624de75d60e31b815260040161061b9190614eda565b5f806124bf8460400151613944565b915091508187146124e65760405163089938b360e11b81526004810188905260240161061b565b5f6124ef6125ac565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612582575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26125a1565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806125da6125ac565b90505f6125e686613b35565b90506125f186612335565b61260057600192505050611593565b5f8681526005830160205260409020546001600160a01b0316331461262557336111df565b5f86815260058301602052604090205460a082015161265491600160b01b90046001600160401b03169061560a565b6001600160401b03168160c001516001600160401b0316101561269b5760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161061b565b5f85156126b3576126ac878661235e565b90506126d1565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126f690611113565b60a086015160c08701516040516001600160e01b031960e086901b168152612726939291829189906004016157e5565b602060405180830381865afa158015612741573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612765919061518c565b905080846008015f8a81526020019081526020015f205f82825461278991906154ec565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016127df57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ee614da4565b5f6127f7611e55565b90505f8061280761140787611ec8565b91509150801561282e57604051632d07135360e01b8152811515600482015260240161061b565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561285f5761285f614fda565b600581111561287057612870614fda565b81526020016001820180546128849061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546128b09061513a565b80156128fb5780601f106128d2576101008083540402835291602001916128fb565b820191905f5260205f20905b8154815290600101906020018083116128de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561296657612966614fda565b14158015612987575060018151600581111561298457612984614fda565b14155b156129a857805160405163170cc93360e21b815261061b919060040161516c565b6003815160058111156129bd576129bd614fda565b036129cb57600481526129d0565b600581525b8360080181602001516040516129e691906153c8565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a2a57612a2a614fda565b021790555060208201516001820190612a43908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b0319169190921617905580516005811115612ae857612ae8614fda565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612b6b575f80fd5b505af1158015610fdc573d5f803e3d5ffd5b6113ea6001600160a01b03831682613e0d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612bbf6125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612bf857612bf8614fda565b6003811115612c0957612c09614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612c7d613ea0565b8260800151612c8c919061560a565b6001600160401b0316421015612cc05760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612d7b575f84815260058701602052604090205461271090612d2d90600160a01b900461ffff1685615521565b612d379190615538565b915081866008015f8681526020019081526020015f205f828254612d5b91906154ec565b90915550612d6b90508284615727565b9050612d7b856020015182612b1f565b612d908560200151610ea38760600151611113565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e0d57835160405163cc92daa160e01b815263ffffffff90911660048201526036602482015260440161061b565b5f805b6002811015612e5c57612e24816001615727565b612e2f906008615521565b61ffff16868281518110612e4557612e45615217565b016020015160f81c901b9190911790600101612e10565b5061ffff811615612e865760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015612ee157612e9d816003615727565b612ea8906008615521565b63ffffffff1687612eba8360026154ec565b81518110612eca57612eca615217565b016020015160f81c901b9190911790600101612e89565b5063ffffffff8116600314612f0957604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612f5e57612f2081601f615727565b612f2b906008615521565b88612f378360066154ec565b81518110612f4757612f47615217565b016020015160f81c901b9190911790600101612f0c565b505f805b6008811015612fbd57612f76816007615727565b612f81906008615521565b6001600160401b031689612f968360266154ec565b81518110612fa657612fa6615217565b016020015160f81c901b9190911790600101612f62565b505f805b600881101561301c57612fd5816007615727565b612fe0906008615521565b6001600160401b03168a612ff583602e6154ec565b8151811061300557613005615217565b016020015160f81c901b9190911790600101612fc1565b5091989097509095509350505050565b5f80825160271461306257825160405163cc92daa160e01b815263ffffffff90911660048201526027602482015260440161061b565b5f805b60028110156130b157613079816001615727565b613084906008615521565b61ffff1685828151811061309a5761309a615217565b016020015160f81c901b9190911790600101613065565b5061ffff8116156130db5760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613136576130f2816003615727565b6130fd906008615521565b63ffffffff168661310f8360026154ec565b8151811061311f5761311f615217565b016020015160f81c901b91909117906001016130de565b5063ffffffff811660021461315e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156131b35761317581601f615727565b613180906008615521565b8761318c8360066154ec565b8151811061319c5761319c615217565b016020015160f81c901b9190911790600101613161565b505f866026815181106131c8576131c8615217565b016020015191976001600160f81b03199092161515965090945050505050565b5f806131f26125ac565b600281015490915061ffff600160401b9091048116908616108061321b575061271061ffff8616115b1561323f57604051635f12e6c360e11b815261ffff8616600482015260240161061b565b60028101546001600160401b03908116908516101561327b576040516202a06d60e11b81526001600160401b038516600482015260240161061b565b805483108061328d5750806001015483115b156132ae5760405163222d164360e21b81526004810184905260240161061b565b825f6132b982610da9565b90505f6132c68983613ebb565b905060405180608001604052806132da3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b61339c614418565b610eb581614463565b5f806133af6125ac565b90505f6133bb84610da9565b90505f6133c787611995565b90506133d287612335565b6133f2576040516330efa98b60e01b81526004810188905260240161061b565b60028151600581111561340757613407614fda565b1461342857805160405163170cc93360e21b815261061b919060040161516c565b5f828260800151613439919061560a565b905083600201600a9054906101000a90046001600160401b031682604001516134629190615813565b6001600160401b0316816001600160401b0316111561349f57604051636d51fe0560e11b81526001600160401b038216600482015260240161061b565b5f806134ab8a84613677565b915091505f8a836040516020016134d992919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561356c5761356c614fda565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f805f613682611e55565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166136b285826144d7565b5f6136bc876146fc565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb61370c8a858b611e79565b6040518263ffffffff1660e01b8152600401613728919061517a565b6020604051808303815f875af1158015613744573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613768919061518c565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806137cb6125ac565b90505f6137db8460400151611995565b90505f6003825160058111156137f3576137f3614fda565b1480613811575060048251600581111561380f5761380f614fda565b145b15613821575060c081015161385e565b60028251600581111561383657613836614fda565b0361384257504261385e565b815160405163170cc93360e21b815261061b919060040161516c565b84608001516001600160401b0316816001600160401b03161161388557505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906138aa90611113565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526138fc9493929188916001600160401b03909116906004016157e5565b602060405180830381865afa158015613917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061393b919061518c565b95945050505050565b5f808251602e1461397a57825160405163cc92daa160e01b815263ffffffff9091166004820152602e602482015260440161061b565b5f805b60028110156139c957613991816001615727565b61399c906008615521565b61ffff168582815181106139b2576139b2615217565b016020015160f81c901b919091179060010161397d565b5061ffff8116156139f35760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613a4e57613a0a816003615727565b613a15906008615521565b63ffffffff1686613a278360026154ec565b81518110613a3757613a37615217565b016020015160f81c901b91909117906001016139f6565b5063ffffffff811615613a7457604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613ac957613a8b81601f615727565b613a96906008615521565b87613aa28360066154ec565b81518110613ab257613ab2615217565b016020015160f81c901b9190911790600101613a77565b505f805b6008811015613b2857613ae1816007615727565b613aec906008615521565b6001600160401b031688613b018360266154ec565b81518110613b1157613b11615217565b016020015160f81c901b9190911790600101613acd565b5090969095509350505050565b613b3d614da4565b5f613b46611e55565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613b7f57613b7f614fda565b6005811115613b9057613b90614fda565b8152602001600182018054613ba49061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054613bd09061513a565b8015613c1b5780601f10613bf257610100808354040283529160200191613c1b565b820191905f5260205f20905b815481529060010190602001808311613bfe57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613c8957613c89614fda565b14613cbc575f8481526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613d0057613d00614fda565b021790555060208201516001820190613d19908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613db68582613677565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613e30573060405163cd78605960e01b815260040161061b9190614eda565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613e79576040519150601f19603f3d011682016040523d82523d5f602084013e613e7e565b606091505b505090508061062457604051630a12f52160e11b815260040160405180910390fd5b5f613ea9611e55565b600101546001600160401b0316919050565b5f613ec4611e55565b6009015460ff16613ee857604051637fab81e560e01b815260040160405180910390fd5b5f613ef1611e55565b905042613f046060860160408701614f45565b6001600160401b0316111580613f3e5750613f226202a300426154ec565b613f326060860160408701614f45565b6001600160401b031610155b15613f7857613f536060850160408601614f45565b604051635879da1360e11b81526001600160401b03909116600482015260240161061b565b613f8d613f88606086018661583e565b614765565b613f9d613f88608086018661583e565b6030613fac602086018661573a565b905014613fde57613fc0602085018561573a565b6040516326475b2f60e11b815261061b925060040190815260200190565b613fe8848061573a565b90505f0361401557613ffa848061573a565b604051633e08a12560e11b815260040161061b929190615852565b5f60088201614024868061573a565b6040516140329291906155fb565b9081526020016040518091039020541461406b57614050848061573a565b60405163a41f772f60e01b815260040161061b929190615852565b614075835f6144d7565b6040805160e08101909152815481525f908190614181906020810161409a898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906140e2908a018a61573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161412b60608a0160408b01614f45565b6001600160401b0316815260200161414660608a018a61583e565b61414f90615880565b815260200161416160808a018a61583e565b61416a90615880565b8152602001876001600160401b03168152506148ce565b5f8281526006860160205260409020919350915061419f828261541d565b5081600884016141af888061573a565b6040516141bd9291906155fb565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906141f990859060040161517a565b6020604051808303815f875af1158015614215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614239919061518c565b6040805160e081019091529091508060018152602001614259898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156142e8576142e8614fda565b021790555060208201516001820190614301908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061439e888061573a565b6040516143ac9291906155fb565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906143ea9190614f45565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661446157604051631afcd79f60e31b815260040160405180910390fd5b565b61446b614418565b61447481614abb565b61447c614ad4565b610eb56060820135608083013561449960c0850160a08601614f45565b6144a960e0860160c08701615947565b6144ba610100870160e08801615960565b6101008701356144d261014089016101208a016151b7565b614ae4565b5f6144e0611e55565b90505f826001600160401b0316846001600160401b0316111561450e57614507838561562a565b905061451b565b614518848461562a565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061457d575060018401548151614579916001600160401b0316906154ec565b8210155b156145a3576001600160401b0383166060820152818152604081015160208201526145c2565b82816060018181516145b5919061560a565b6001600160401b03169052505b60608101516145d2906064615813565b602082015160018601546001600160401b0392909216916145fd9190600160401b900460ff16615521565b101561462d57606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161061b565b856001600160401b03168160400181815161464891906154ec565b9052506040810180516001600160401b0387169190614668908390615727565b9052506001840154604082015160649161468d91600160401b90910460ff1690615521565b10156146b4578060400151604051635943317f60e01b815260040161061b91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614706611e55565b5f848152600782016020526040902060020180549192509060089061473a90600160401b90046001600160401b0316615980565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6147726020820182614eee565b63ffffffff16158015614792575061478d60208201826151d2565b151590505b156147d9576147a46020820182614eee565b6147b160208301836151d2565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161061b565b6147e660208201826151d2565b90506147f56020830183614eee565b63ffffffff16111561480e576147a46020820182614eee565b60015b61481e60208301836151d2565b90508110156113ea5761483460208301836151d2565b61483f600184615727565b81811061484e5761484e615217565b905060200201602081019061486391906151b7565b6001600160a01b031661487960208401846151d2565b8381811061488957614889615217565b905060200201602081019061489e91906151b7565b6001600160a01b031610156148c657604051630dbc8d5f60e31b815260040160405180910390fd5b600101614811565b5f60608260400151516030146148f75760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614938988a98600198929792969095909490939092910161599b565b60405160208183030381529060405290505f5b846080015160200151518110156149aa5781856080015160200151828151811061497757614977615217565b6020026020010151604051602001614990929190615a55565b60408051601f19818403018152919052915060010161494b565b5060a08401518051602091820151516040516149ca938593929101615a86565b60405160208183030381529060405290505f5b8460a001516020015151811015614a3c57818560a00151602001518281518110614a0957614a09615217565b6020026020010151604051602001614a22929190615a55565b60408051601f1981840301815291905291506001016149dd565b5060c0840151604051614a53918391602001615ac1565b6040516020818303038152906040529050600281604051614a7491906153c8565b602060405180830381855afa158015614a8f573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614ab2919061518c565b94909350915050565b614ac3614418565b614acb614c7a565b610eb581614c82565b614adc614418565b614461614d65565b614aec614418565b5f614af56125ac565b905061ffff85161580614b0d575061271061ffff8616115b15614b3157604051635f12e6c360e11b815261ffff8616600482015260240161061b565b86881115614b555760405163222d164360e21b81526004810189905260240161061b565b60ff84161580614b685750600a60ff8516115b15614b8b5760405163170db35960e31b815260ff8516600482015260240161061b565b614b93613ea0565b6001600160401b0316866001600160401b03161015614bcf576040516202a06d60e11b81526001600160401b038716600482015260240161061b565b825f03614bef5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614461614418565b614c8a614418565b5f614c93611e55565b8235815590506014614cab6060840160408501615960565b60ff161180614cca5750614cc56060830160408401615960565b60ff16155b15614cfe57614cdf6060830160408401615960565b604051634a59bbff60e11b815260ff909116600482015260240161061b565b614d0e6060830160408401615960565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614d3f6040830160208401614f45565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612b90614418565b508054614d799061513a565b5f825580601f10614d88575050565b601f0160209004905f5260205f2090810190610eb59190614de1565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614df5575f8155600101614de2565b5090565b8015158114610eb5575f80fd5b803563ffffffff81168114611990575f80fd5b5f805f60608486031215614e2b575f80fd5b833592506020840135614e3d81614df9565b9150614e4b60408501614e06565b90509250925092565b5f60208284031215614e64575f80fd5b5035919050565b5f8060408385031215614e7c575f80fd5b82356001600160401b03811115614e91575f80fd5b830160808186031215614ea2575f80fd5b9150614eb060208401614e06565b90509250929050565b5f8060408385031215614eca575f80fd5b82359150614eb060208401614e06565b6001600160a01b0391909116815260200190565b5f60208284031215614efe575f80fd5b61159382614e06565b5f8060408385031215614f18575f80fd5b614f2183614e06565b946020939093013593505050565b80356001600160401b0381168114611990575f80fd5b5f60208284031215614f55575f80fd5b61159382614f2f565b803561ffff81168114611990575f80fd5b5f805f60608486031215614f81575f80fd5b83356001600160401b03811115614f96575f80fd5b840160a08187031215614fa7575f80fd5b9250614fb560208501614f5e565b9150614e4b60408501614f2f565b5f6101408284031215614fd4575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614ffe57614ffe614fda565b9052565b5f5b8381101561501c578181015183820152602001615004565b50505f910152565b5f815180845261503b816020860160208601615002565b601f01601f19169290920160200192915050565b60208152615061602082018351614fee565b5f602083015160e0604084015261507c610100840182615024565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156150e0575f80fd5b82356001600160401b03808211156150f6575f80fd5b818501915085601f830112615109575f80fd5b813581811115615117575f80fd5b866020828501011115615128575f80fd5b60209290920196919550909350505050565b600181811c9082168061514e57607f821691505b602082108103614fd457634e487b7160e01b5f52602260045260245ffd5b60208101610df78284614fee565b602081525f6115936020830184615024565b5f6020828403121561519c575f80fd5b5051919050565b6001600160a01b0381168114610eb5575f80fd5b5f602082840312156151c7575f80fd5b8135611593816151a3565b5f808335601e198436030181126151e7575f80fd5b8301803591506001600160401b03821115615200575f80fd5b6020019150600581901b36038213156137ba575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261523f575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561527f5761527f615249565b60405290565b604080519081016001600160401b038111828210171561527f5761527f615249565b604051601f8201601f191681016001600160401b03811182821017156152cf576152cf615249565b604052919050565b5f6001600160401b038211156152ef576152ef615249565b50601f01601f191660200190565b5f82601f83011261530c575f80fd5b813561531f61531a826152d7565b6152a7565b818152846020838601011115615333575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561535f575f80fd5b61536761525d565b82356001600160401b038082111561537d575f80fd5b615389368387016152fd565b8352602085013591508082111561539e575f80fd5b506153ab368286016152fd565b6020830152506153bd60408401614f2f565b604082015292915050565b5f825161523f818460208701615002565b601f82111561062457805f5260205f20601f840160051c810160208510156153fe5750805b601f840160051c820191505b81811015611771575f815560010161540a565b81516001600160401b0381111561543657615436615249565b61544a81615444845461513a565b846153d9565b602080601f83116001811461547d575f84156154665750858301515b5f19600386901b1c1916600185901b178555610fdc565b5f85815260208120601f198616915b828110156154ab5788860151825594840194600190910190840161548c565b50858210156154c857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610df757610df76154d8565b5f63ffffffff808316818103615517576155176154d8565b6001019392505050565b8082028115828204841417610df757610df76154d8565b5f8261555257634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061556b5761556b614fda565b91905290565b5f60208083525f84546155838161513a565b806020870152604060018084165f81146155a457600181146155c0576155ed565b60ff19851660408a0152604084151560051b8a010195506155ed565b895f5260205f205f5b858110156155e45781548b82018601529083019088016155c9565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611fcc57611fcc6154d8565b6001600160401b03828116828216039080821115611fcc57611fcc6154d8565b805161199081614df9565b5f8060408385031215615666575f80fd5b82516001600160401b038082111561567c575f80fd5b908401906060828703121561568f575f80fd5b61569761525d565b825181526020808401516156aa816151a3565b828201526040840151838111156156bf575f80fd5b80850194505087601f8501126156d3575f80fd5b835192506156e361531a846152d7565b83815288828587010111156156f6575f80fd5b61570584838301848801615002565b8060408401525081955061571a81880161564a565b9450505050509250929050565b81810381811115610df757610df76154d8565b5f808335601e1984360301811261574f575f80fd5b8301803591506001600160401b03821115615768575f80fd5b6020019150368190038213156137ba575f80fd5b5f885161578d818460208d01615002565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615836576158366154d8565b505092915050565b5f8235603e1983360301811261523f575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615890575f80fd5b615898615285565b6158a183614e06565b81526020808401356001600160401b03808211156158bd575f80fd5b9085019036601f8301126158cf575f80fd5b8135818111156158e1576158e1615249565b8060051b91506158f28483016152a7565b818152918301840191848101903684111561590b575f80fd5b938501935b838510156159355784359250615925836151a3565b8282529385019390850190615910565b94860194909452509295945050505050565b5f60208284031215615957575f80fd5b61159382614f5e565b5f60208284031215615970575f80fd5b813560ff81168114611593575f80fd5b5f6001600160401b03808316818103615517576155176154d8565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516159e181602a850160208b01615002565b8651908301906159f881602a840160208b01615002565b60c087901b6001600160c01b031916602a9290910191820152615a2a603282018660e01b6001600160e01b0319169052565b615a43603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615a66818460208801615002565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615a97818460208901615002565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615ad2818460208801615002565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -1043,23 +1043,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) In // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) } // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, conversionData, messageIndex) } // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, conversionData, messageIndex) } // ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 26d2e2aa7..a4b6376ce 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -29,6 +29,14 @@ var ( _ = abi.ConvertType ) +// ConversionData is an auto generated low-level Go binding around an user-defined struct. +type ConversionData struct { + SubnetID [32]byte + ValidatorManagerBlockchainID [32]byte + ValidatorManagerAddress common.Address + InitialValidators []InitialValidator +} + // InitialValidator is an auto generated low-level Go binding around an user-defined struct. type InitialValidator struct { NodeID []byte @@ -42,14 +50,6 @@ type PChainOwner struct { Addresses []common.Address } -// SubnetConversionData is an auto generated low-level Go binding around an user-defined struct. -type SubnetConversionData struct { - SubnetID [32]byte - ValidatorManagerBlockchainID [32]byte - ValidatorManagerAddress common.Address - InitialValidators []InitialValidator -} - // Validator is an auto generated low-level Go binding around an user-defined struct. type Validator struct { Status uint8 @@ -79,8 +79,8 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161395638038061395683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6138098061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b61461028b578063d588c18f14610293578063d5f20ff6146102a6578063df93d8de146102c6578063f2fde38b146102d0578063fd7ac5e7146102e3575f80fd5b80639ba96b861461021d578063a3a65e4814610230578063b771b3bc14610243578063bc5fbfec14610251578063bee0a03f14610278575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d41461020a575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b610149610144366004612be2565b6102f6565b005b610149610159366004612c11565b610502565b61014961016c366004612c5f565b610a00565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a1366004612be2565b610a0e565b6040516001600160401b03909116815260200161018a565b610149610a22565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b6101fd610a35565b60405161018a9190612c78565b610149610218366004612be2565b610a63565b6101cd61022b366004612ca2565b610a78565b61014961023e366004612c5f565b610a94565b6101fd6005600160991b0181565b6101cd7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b610149610286366004612be2565b610c1a565b6101e3601481565b6101496102a1366004612cfb565b610d37565b6102b96102b4366004612be2565b610e44565b60405161018a9190612db8565b6101a66202a30081565b6101496102de366004612e38565b610f86565b6101cd6102f1366004612e5a565b610fc3565b5f6102ff610ffb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561033857610338612d37565b600581111561034957610349612d37565b815260200160018201805461035d90612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461038990612ec5565b80156103d45780601f106103ab576101008083540402835291602001916103d4565b820191905f5260205f20905b8154815290600101906020018083116103b757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561043f5761043f612d37565b1461047b575f8381526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb6104a08584606001515f61101f565b6040518263ffffffff1660e01b81526004016104bc9190612f0b565b6020604051808303815f875af11580156104d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fc9190612f1d565b50505050565b5f61050b610ffb565b600981015490915060ff161561053457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610577573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059b9190612f1d565b8360200135146105c4576040516372b0a7e760e11b815260208401356004820152602401610472565b306105d56060850160408601612e38565b6001600160a01b03161461060d576105f36060840160408501612e38565b604051632f88120d60e21b81526004016104729190612c78565b5f61061b6060850185612f34565b905090505f805b828163ffffffff161015610902575f61063e6060880188612f34565b8363ffffffff1681811061065457610654612f79565b90506020028101906106669190612f8d565b61066f906130b1565b80516040519192505f9160088801916106879161312a565b908152602001604051809103902054146106b757805160405163a41f772f60e01b81526104729190600401612f0b565b5f6002885f0135846040516020016106e692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107009161312a565b602060405180830381855afa15801561071b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061073e9190612f1d565b90508086600801835f0151604051610756919061312a565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156107d8576107d8612d37565b0217905550602082015160018201906107f19082613186565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610895911685613259565b82516040519195506108a69161312a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806108fb9061326c565b9050610622565b5060048301819055600183015460649061092690600160401b900460ff168361328e565b101561094857604051635943317f60e01b815260048101829052602401610472565b5f61095e6109558661106e565b60400151611179565b90505f61096a87611306565b90505f60028260405161097d919061312a565b602060405180830381855afa158015610998573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109bb9190612f1d565b90508281146109e757604051631872fc8d60e01b81526004810182905260248101849052604401610472565b5050506009909201805460ff1916600117905550505050565b610a09816114db565b505050565b5f610a1882610e44565b6080015192915050565b610a2a611815565b610a335f611847565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b610a6b611815565b610a74816118b7565b5050565b5f610a81611815565b610a8b8383611b8f565b90505b92915050565b5f610a9d610ffb565b90505f80610ab6610aad8561106e565b604001516120ec565b9150915080610adc57604051632d07135360e01b81528115156004820152602401610472565b5f82815260068401602052604090208054610af690612ec5565b90505f03610b1a5760405163089938b360e11b815260048101839052602401610472565b60015f83815260078501602052604090205460ff166005811115610b4057610b40612d37565b14610b73575f8281526007840160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f8281526006840160205260408120610b8b91612b56565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f610c23610ffb565b5f8381526006820160205260409020805491925090610c4190612ec5565b90505f03610c655760405163089938b360e11b815260048101839052602401610472565b60015f83815260078301602052604090205460ff166005811115610c8b57610c8b612d37565b14610cbe575f8281526007820160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610cf791906004016132a5565b6020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a099190612f1d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610d7b5750825b90505f826001600160401b03166001148015610d965750303b155b905081158015610da4575080155b15610dc25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610deb57845460ff60401b1916600160401b1785555b610df587876122a8565b8315610e3b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610e4c612b8d565b5f610e55610ffb565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff166005811115610e8c57610e8c612d37565b6005811115610e9d57610e9d612d37565b8152602001600182018054610eb190612ec5565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90612ec5565b8015610f285780601f10610eff57610100808354040283529160200191610f28565b820191905f5260205f20905b815481529060010190602001808311610f0b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b610f8e611815565b6001600160a01b038116610fb7575f604051631e4fbdf760e01b81526004016104729190612c78565b610fc081611847565b50565b5f80610fcd610ffb565b9050806008018484604051610fe392919061332f565b90815260200160405180910390205491505092915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156110d2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110f9919081019061334d565b915091508061111b57604051636b2f19e960e01b815260040160405180910390fd5b815115611141578151604051636ba589a560e01b81526004810191909152602401610472565b60208201516001600160a01b031615611172578160200151604051624de75d60e31b81526004016104729190612c78565b5092915050565b5f81516026146111ae57815160405163cc92daa160e01b815263ffffffff909116600482015260266024820152604401610472565b5f805b60028110156111fd576111c581600161341f565b6111d090600861328e565b61ffff168482815181106111e6576111e6612f79565b016020015160f81c901b91909117906001016111b1565b5061ffff8116156112275760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156112825761123e81600361341f565b61124990600861328e565b63ffffffff168561125b836002613259565b8151811061126b5761126b612f79565b016020015160f81c901b919091179060010161122a565b5063ffffffff8116156112a857604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156112fd576112bf81601f61341f565b6112ca90600861328e565b866112d6836006613259565b815181106112e6576112e6612f79565b016020015160f81c901b91909117906001016112ab565b50949350505050565b60605f8083356020850135601461132287870160408901612e38565b61132f6060890189612f34565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6113b06060850185612f34565b905081101561117257816113c76060860186612f34565b838181106113d7576113d7612f79565b90506020028101906113e99190612f8d565b6113f39080613432565b90506114026060870187612f34565b8481811061141257611412612f79565b90506020028101906114249190612f8d565b61142e9080613432565b61143b6060890189612f34565b8681811061144b5761144b612f79565b905060200281019061145d9190612f8d565b61146b906020810190613432565b61147860608b018b612f34565b8881811061148857611488612f79565b905060200281019061149a9190612f8d565b6114ab906060810190604001613474565b6040516020016114c1979695949392919061348d565b60408051601f1981840301815291905291506001016113a3565b5f6114e4612b8d565b5f6114ed610ffb565b90505f806114fd610aad8761106e565b91509150801561152457604051632d07135360e01b81528115156004820152602401610472565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561155557611555612d37565b600581111561156657611566612d37565b815260200160018201805461157a90612ec5565b80601f01602080910402602001604051908101604052809291908181526020018280546115a690612ec5565b80156115f15780601f106115c8576101008083540402835291602001916115f1565b820191905f5260205f20905b8154815290600101906020018083116115d457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561165c5761165c612d37565b1415801561167d575060018151600581111561167a5761167a612d37565b14155b1561169e57805160405163170cc93360e21b81526104729190600401612efd565b6003815160058111156116b3576116b3612d37565b036116c157600481526116c6565b600581525b8360080181602001516040516116dc919061312a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561172057611720612d37565b0217905550602082015160018201906117399082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055805160058111156117de576117de612d37565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b3361181e610a35565b6001600160a01b031614610a33573360405163118cdaa760e01b81526004016104729190612c78565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6118bf612b8d565b5f6118c8610ffb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561190157611901612d37565b600581111561191257611912612d37565b815260200160018201805461192690612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461195290612ec5565b801561199d5780601f106119745761010080835404028352916020019161199d565b820191905f5260205f20905b81548152906001019060200180831161198057829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611a0b57611a0b612d37565b14611a3e575f8481526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115611a8257611a82612d37565b021790555060208201516001820190611a9b9082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f611b3885826122c2565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f611b98610ffb565b6009015460ff16611bbc57604051637fab81e560e01b815260040160405180910390fd5b5f611bc5610ffb565b905042611bd86060860160408701613474565b6001600160401b0316111580611c125750611bf66202a30042613259565b611c066060860160408701613474565b6001600160401b031610155b15611c4c57611c276060850160408601613474565b604051635879da1360e11b81526001600160401b039091166004820152602401610472565b611c61611c5c60608601866134f6565b61240c565b611c71611c5c60808601866134f6565b6030611c806020860186613432565b905014611cb257611c946020850185613432565b6040516326475b2f60e11b8152610472925060040190815260200190565b611cbc8480613432565b90505f03611ce957611cce8480613432565b604051633e08a12560e11b815260040161047292919061350a565b5f60088201611cf88680613432565b604051611d0692919061332f565b90815260200160405180910390205414611d3f57611d248480613432565b60405163a41f772f60e01b815260040161047292919061350a565b611d49835f612575565b6040805160e08101909152815481525f908190611e559060208101611d6e8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611db6908a018a613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611dff60608a0160408b01613474565b6001600160401b03168152602001611e1a60608a018a6134f6565b611e2390613538565b8152602001611e3560808a018a6134f6565b611e3e90613538565b8152602001876001600160401b031681525061279a565b5f82815260068601602052604090209193509150611e738282613186565b508160088401611e838880613432565b604051611e9192919061332f565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611ecd908590600401612f0b565b6020604051808303815f875af1158015611ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0d9190612f1d565b6040805160e081019091529091508060018152602001611f2d8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611fbc57611fbc612d37565b021790555060208201516001820190611fd59082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055806120728880613432565b60405161208092919061332f565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906120be9190613474565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f80825160271461212257825160405163cc92daa160e01b815263ffffffff909116600482015260276024820152604401610472565b5f805b60028110156121715761213981600161341f565b61214490600861328e565b61ffff1685828151811061215a5761215a612f79565b016020015160f81c901b9190911790600101612125565b5061ffff81161561219b5760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156121f6576121b281600361341f565b6121bd90600861328e565b63ffffffff16866121cf836002613259565b815181106121df576121df612f79565b016020015160f81c901b919091179060010161219e565b5063ffffffff811660021461221e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156122735761223581601f61341f565b61224090600861328e565b8761224c836006613259565b8151811061225c5761225c612f79565b016020015160f81c901b9190911790600101612221565b505f8660268151811061228857612288612f79565b016020015191976001600160f81b03199092161515965090945050505050565b6122b0612987565b6122b9826129d0565b610a74816129e9565b5f805f6122cd610ffb565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166122fd8582612575565b5f612307876129fa565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6123578a858b61101f565b6040518263ffffffff1660e01b81526004016123739190612f0b565b6020604051808303815f875af115801561238f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b39190612f1d565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6124196020820182612c5f565b63ffffffff1615801561243957506124346020820182612f34565b151590505b156124805761244b6020820182612c5f565b6124586020830183612f34565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610472565b61248d6020820182612f34565b905061249c6020830183612c5f565b63ffffffff1611156124b55761244b6020820182612c5f565b60015b6124c56020830183612f34565b9050811015610a74576124db6020830183612f34565b6124e660018461341f565b8181106124f5576124f5612f79565b905060200201602081019061250a9190612e38565b6001600160a01b03166125206020840184612f34565b8381811061253057612530612f79565b90506020020160208101906125459190612e38565b6001600160a01b0316101561256d57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016124b8565b5f61257e610ffb565b90505f826001600160401b0316846001600160401b031611156125ac576125a583856135ff565b90506125b9565b6125b684846135ff565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061261b575060018401548151612617916001600160401b031690613259565b8210155b15612641576001600160401b038316606082015281815260408101516020820152612660565b8281606001818151612653919061361f565b6001600160401b03169052505b606081015161267090606461363f565b602082015160018601546001600160401b03929092169161269b9190600160401b900460ff1661328e565b10156126cb57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610472565b856001600160401b0316816040018181516126e69190613259565b9052506040810180516001600160401b038716919061270690839061341f565b9052506001840154604082015160649161272b91600160401b90910460ff169061328e565b1015612752578060400151604051635943317f60e01b815260040161047291815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f60608260400151516030146127c35760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98612804988a98600198929792969095909490939092910161366a565b60405160208183030381529060405290505f5b846080015160200151518110156128765781856080015160200151828151811061284357612843612f79565b602002602001015160405160200161285c929190613724565b60408051601f198184030181529190529150600101612817565b5060a0840151805160209182015151604051612896938593929101613755565b60405160208183030381529060405290505f5b8460a00151602001515181101561290857818560a001516020015182815181106128d5576128d5612f79565b60200260200101516040516020016128ee929190613724565b60408051601f1981840301815291905291506001016128a9565b5060c084015160405161291f918391602001613790565b6040516020818303038152906040529050600281604051612940919061312a565b602060405180830381855afa15801561295b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061297e9190612f1d565b94909350915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a3357604051631afcd79f60e31b815260040160405180910390fd5b6129d8612987565b6129e0612a63565b610fc081612a6b565b6129f1612987565b610fc081612b4e565b5f80612a04610ffb565b5f8481526007820160205260409020600201805491925090600890612a3890600160401b90046001600160401b03166137c1565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610a33612987565b612a73612987565b5f612a7c610ffb565b8235815590506014612a9460608401604085016137dc565b60ff161180612ab35750612aae60608301604084016137dc565b60ff16155b15612ae757612ac860608301604084016137dc565b604051634a59bbff60e11b815260ff9091166004820152602401610472565b612af760608301604084016137dc565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055612b286040830160208401613474565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b610f8e612987565b508054612b6290612ec5565b5f825580601f10612b71575050565b601f0160209004905f5260205f2090810190610fc09190612bca565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612bde575f8155600101612bcb565b5090565b5f60208284031215612bf2575f80fd5b5035919050565b803563ffffffff81168114612c0c575f80fd5b919050565b5f8060408385031215612c22575f80fd5b82356001600160401b03811115612c37575f80fd5b830160808186031215612c48575f80fd5b9150612c5660208401612bf9565b90509250929050565b5f60208284031215612c6f575f80fd5b610a8b82612bf9565b6001600160a01b0391909116815260200190565b80356001600160401b0381168114612c0c575f80fd5b5f8060408385031215612cb3575f80fd5b82356001600160401b03811115612cc8575f80fd5b830160a08186031215612cd9575f80fd5b9150612c5660208401612c8c565b6001600160a01b0381168114610fc0575f80fd5b5f808284036080811215612d0d575f80fd5b6060811215612d1a575f80fd5b508291506060830135612d2c81612ce7565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612d6757634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612d85578181015183820152602001612d6d565b50505f910152565b5f8151808452612da4816020860160208601612d6b565b601f01601f19169290920160200192915050565b60208152612dca602082018351612d4b565b5f602083015160e06040840152612de5610100840182612d8d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612e48575f80fd5b8135612e5381612ce7565b9392505050565b5f8060208385031215612e6b575f80fd5b82356001600160401b0380821115612e81575f80fd5b818501915085601f830112612e94575f80fd5b813581811115612ea2575f80fd5b866020828501011115612eb3575f80fd5b60209290920196919550909350505050565b600181811c90821680612ed957607f821691505b602082108103612ef757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610a8e8284612d4b565b602081525f610a8b6020830184612d8d565b5f60208284031215612f2d575f80fd5b5051919050565b5f808335601e19843603018112612f49575f80fd5b8301803591506001600160401b03821115612f62575f80fd5b6020019150600581901b3603821315612405575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612fa1575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612fe157612fe1612fab565b60405290565b604080519081016001600160401b0381118282101715612fe157612fe1612fab565b604051601f8201601f191681016001600160401b038111828210171561303157613031612fab565b604052919050565b5f6001600160401b0382111561305157613051612fab565b50601f01601f191660200190565b5f82601f83011261306e575f80fd5b813561308161307c82613039565b613009565b818152846020838601011115613095575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156130c1575f80fd5b6130c9612fbf565b82356001600160401b03808211156130df575f80fd5b6130eb3683870161305f565b83526020850135915080821115613100575f80fd5b5061310d3682860161305f565b60208301525061311f60408401612c8c565b604082015292915050565b5f8251612fa1818460208701612d6b565b601f821115610a0957805f5260205f20601f840160051c810160208510156131605750805b601f840160051c820191505b8181101561317f575f815560010161316c565b5050505050565b81516001600160401b0381111561319f5761319f612fab565b6131b3816131ad8454612ec5565b8461313b565b602080601f8311600181146131e6575f84156131cf5750858301515b5f19600386901b1c1916600185901b17855561323d565b5f85815260208120601f198616915b82811015613214578886015182559484019460019091019084016131f5565b508582101561323157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a8e57610a8e613245565b5f63ffffffff80831681810361328457613284613245565b6001019392505050565b8082028115828204841417610a8e57610a8e613245565b5f60208083525f84546132b781612ec5565b806020870152604060018084165f81146132d857600181146132f457613321565b60ff19851660408a0152604084151560051b8a01019550613321565b895f5260205f205f5b858110156133185781548b82018601529083019088016132fd565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b80518015158114612c0c575f80fd5b5f806040838503121561335e575f80fd5b82516001600160401b0380821115613374575f80fd5b9084019060608287031215613387575f80fd5b61338f612fbf565b825181526020808401516133a281612ce7565b828201526040840151838111156133b7575f80fd5b80850194505087601f8501126133cb575f80fd5b835192506133db61307c84613039565b83815288828587010111156133ee575f80fd5b6133fd84838301848801612d6b565b8060408401525081955061341281880161333e565b9450505050509250929050565b81810381811115610a8e57610a8e613245565b5f808335601e19843603018112613447575f80fd5b8301803591506001600160401b03821115613460575f80fd5b602001915036819003821315612405575f80fd5b5f60208284031215613484575f80fd5b610a8b82612c8c565b5f885161349e818460208d01612d6b565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b5f8235603e19833603018112612fa1575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215613548575f80fd5b613550612fe7565b61355983612bf9565b81526020808401356001600160401b0380821115613575575f80fd5b9085019036601f830112613587575f80fd5b81358181111561359957613599612fab565b8060051b91506135aa848301613009565b81815291830184019184810190368411156135c3575f80fd5b938501935b838510156135ed57843592506135dd83612ce7565b82825293850193908501906135c8565b94860194909452509295945050505050565b6001600160401b0382811682821603908082111561117257611172613245565b6001600160401b0381811683821601908082111561117257611172613245565b6001600160401b0381811683821602808216919082811461366257613662613245565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516136b081602a850160208b01612d6b565b8651908301906136c781602a840160208b01612d6b565b60c087901b6001600160c01b031916602a92909101918201526136f9603282018660e01b6001600160e01b0319169052565b613712603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351613735818460208801612d6b565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451613766818460208901612d6b565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516137a1818460208801612d6b565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f6001600160401b0380831681810361328457613284613245565b5f602082840312156137ec575f80fd5b813560ff81168114612e53575f80fdfea164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"conversionData\",\"type\":\"tuple\",\"internalType\":\"structConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidConversionID\",\"inputs\":[{\"name\":\"encodedConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]}]", + Bin: "0x608060405234801561000f575f80fd5b5060405161395638038061395683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6138098061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b61461028b578063d588c18f14610293578063d5f20ff6146102a6578063df93d8de146102c6578063f2fde38b146102d0578063fd7ac5e7146102e3575f80fd5b80639ba96b861461021d578063a3a65e4814610230578063b771b3bc14610243578063bc5fbfec14610251578063bee0a03f14610278575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d41461020a575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b610149610144366004612be2565b6102f6565b005b610149610159366004612c11565b610502565b61014961016c366004612c5f565b610a00565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a1366004612be2565b610a0e565b6040516001600160401b03909116815260200161018a565b610149610a22565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b6101fd610a35565b60405161018a9190612c78565b610149610218366004612be2565b610a63565b6101cd61022b366004612ca2565b610a78565b61014961023e366004612c5f565b610a94565b6101fd6005600160991b0181565b6101cd7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b610149610286366004612be2565b610c1a565b6101e3601481565b6101496102a1366004612cfb565b610d37565b6102b96102b4366004612be2565b610e44565b60405161018a9190612db8565b6101a66202a30081565b6101496102de366004612e38565b610f86565b6101cd6102f1366004612e5a565b610fc3565b5f6102ff610ffb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561033857610338612d37565b600581111561034957610349612d37565b815260200160018201805461035d90612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461038990612ec5565b80156103d45780601f106103ab576101008083540402835291602001916103d4565b820191905f5260205f20905b8154815290600101906020018083116103b757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561043f5761043f612d37565b1461047b575f8381526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb6104a08584606001515f61101f565b6040518263ffffffff1660e01b81526004016104bc9190612f0b565b6020604051808303815f875af11580156104d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fc9190612f1d565b50505050565b5f61050b610ffb565b600981015490915060ff161561053457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610577573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059b9190612f1d565b8360200135146105c4576040516372b0a7e760e11b815260208401356004820152602401610472565b306105d56060850160408601612e38565b6001600160a01b03161461060d576105f36060840160408501612e38565b604051632f88120d60e21b81526004016104729190612c78565b5f61061b6060850185612f34565b905090505f805b828163ffffffff161015610902575f61063e6060880188612f34565b8363ffffffff1681811061065457610654612f79565b90506020028101906106669190612f8d565b61066f906130b1565b80516040519192505f9160088801916106879161312a565b908152602001604051809103902054146106b757805160405163a41f772f60e01b81526104729190600401612f0b565b5f6002885f0135846040516020016106e692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107009161312a565b602060405180830381855afa15801561071b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061073e9190612f1d565b90508086600801835f0151604051610756919061312a565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156107d8576107d8612d37565b0217905550602082015160018201906107f19082613186565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610895911685613259565b82516040519195506108a69161312a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806108fb9061326c565b9050610622565b5060048301819055600183015460649061092690600160401b900460ff168361328e565b101561094857604051635943317f60e01b815260048101829052602401610472565b5f61095e6109558661106e565b60400151611179565b90505f61096a87611306565b90505f60028260405161097d919061312a565b602060405180830381855afa158015610998573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109bb9190612f1d565b90508281146109e75760405163baaea89d60e01b81526004810182905260248101849052604401610472565b5050506009909201805460ff1916600117905550505050565b610a09816114db565b505050565b5f610a1882610e44565b6080015192915050565b610a2a611815565b610a335f611847565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b610a6b611815565b610a74816118b7565b5050565b5f610a81611815565b610a8b8383611b8f565b90505b92915050565b5f610a9d610ffb565b90505f80610ab6610aad8561106e565b604001516120ec565b9150915080610adc57604051632d07135360e01b81528115156004820152602401610472565b5f82815260068401602052604090208054610af690612ec5565b90505f03610b1a5760405163089938b360e11b815260048101839052602401610472565b60015f83815260078501602052604090205460ff166005811115610b4057610b40612d37565b14610b73575f8281526007840160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f8281526006840160205260408120610b8b91612b56565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f610c23610ffb565b5f8381526006820160205260409020805491925090610c4190612ec5565b90505f03610c655760405163089938b360e11b815260048101839052602401610472565b60015f83815260078301602052604090205460ff166005811115610c8b57610c8b612d37565b14610cbe575f8281526007820160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610cf791906004016132a5565b6020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a099190612f1d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610d7b5750825b90505f826001600160401b03166001148015610d965750303b155b905081158015610da4575080155b15610dc25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610deb57845460ff60401b1916600160401b1785555b610df587876122a8565b8315610e3b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610e4c612b8d565b5f610e55610ffb565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff166005811115610e8c57610e8c612d37565b6005811115610e9d57610e9d612d37565b8152602001600182018054610eb190612ec5565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90612ec5565b8015610f285780601f10610eff57610100808354040283529160200191610f28565b820191905f5260205f20905b815481529060010190602001808311610f0b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b610f8e611815565b6001600160a01b038116610fb7575f604051631e4fbdf760e01b81526004016104729190612c78565b610fc081611847565b50565b5f80610fcd610ffb565b9050806008018484604051610fe392919061332f565b90815260200160405180910390205491505092915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156110d2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110f9919081019061334d565b915091508061111b57604051636b2f19e960e01b815260040160405180910390fd5b815115611141578151604051636ba589a560e01b81526004810191909152602401610472565b60208201516001600160a01b031615611172578160200151604051624de75d60e31b81526004016104729190612c78565b5092915050565b5f81516026146111ae57815160405163cc92daa160e01b815263ffffffff909116600482015260266024820152604401610472565b5f805b60028110156111fd576111c581600161341f565b6111d090600861328e565b61ffff168482815181106111e6576111e6612f79565b016020015160f81c901b91909117906001016111b1565b5061ffff8116156112275760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156112825761123e81600361341f565b61124990600861328e565b63ffffffff168561125b836002613259565b8151811061126b5761126b612f79565b016020015160f81c901b919091179060010161122a565b5063ffffffff8116156112a857604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156112fd576112bf81601f61341f565b6112ca90600861328e565b866112d6836006613259565b815181106112e6576112e6612f79565b016020015160f81c901b91909117906001016112ab565b50949350505050565b60605f8083356020850135601461132287870160408901612e38565b61132f6060890189612f34565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6113b06060850185612f34565b905081101561117257816113c76060860186612f34565b838181106113d7576113d7612f79565b90506020028101906113e99190612f8d565b6113f39080613432565b90506114026060870187612f34565b8481811061141257611412612f79565b90506020028101906114249190612f8d565b61142e9080613432565b61143b6060890189612f34565b8681811061144b5761144b612f79565b905060200281019061145d9190612f8d565b61146b906020810190613432565b61147860608b018b612f34565b8881811061148857611488612f79565b905060200281019061149a9190612f8d565b6114ab906060810190604001613474565b6040516020016114c1979695949392919061348d565b60408051601f1981840301815291905291506001016113a3565b5f6114e4612b8d565b5f6114ed610ffb565b90505f806114fd610aad8761106e565b91509150801561152457604051632d07135360e01b81528115156004820152602401610472565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561155557611555612d37565b600581111561156657611566612d37565b815260200160018201805461157a90612ec5565b80601f01602080910402602001604051908101604052809291908181526020018280546115a690612ec5565b80156115f15780601f106115c8576101008083540402835291602001916115f1565b820191905f5260205f20905b8154815290600101906020018083116115d457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561165c5761165c612d37565b1415801561167d575060018151600581111561167a5761167a612d37565b14155b1561169e57805160405163170cc93360e21b81526104729190600401612efd565b6003815160058111156116b3576116b3612d37565b036116c157600481526116c6565b600581525b8360080181602001516040516116dc919061312a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561172057611720612d37565b0217905550602082015160018201906117399082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055805160058111156117de576117de612d37565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b3361181e610a35565b6001600160a01b031614610a33573360405163118cdaa760e01b81526004016104729190612c78565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6118bf612b8d565b5f6118c8610ffb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561190157611901612d37565b600581111561191257611912612d37565b815260200160018201805461192690612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461195290612ec5565b801561199d5780601f106119745761010080835404028352916020019161199d565b820191905f5260205f20905b81548152906001019060200180831161198057829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611a0b57611a0b612d37565b14611a3e575f8481526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115611a8257611a82612d37565b021790555060208201516001820190611a9b9082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f611b3885826122c2565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f611b98610ffb565b6009015460ff16611bbc57604051637fab81e560e01b815260040160405180910390fd5b5f611bc5610ffb565b905042611bd86060860160408701613474565b6001600160401b0316111580611c125750611bf66202a30042613259565b611c066060860160408701613474565b6001600160401b031610155b15611c4c57611c276060850160408601613474565b604051635879da1360e11b81526001600160401b039091166004820152602401610472565b611c61611c5c60608601866134f6565b61240c565b611c71611c5c60808601866134f6565b6030611c806020860186613432565b905014611cb257611c946020850185613432565b6040516326475b2f60e11b8152610472925060040190815260200190565b611cbc8480613432565b90505f03611ce957611cce8480613432565b604051633e08a12560e11b815260040161047292919061350a565b5f60088201611cf88680613432565b604051611d0692919061332f565b90815260200160405180910390205414611d3f57611d248480613432565b60405163a41f772f60e01b815260040161047292919061350a565b611d49835f612575565b6040805160e08101909152815481525f908190611e559060208101611d6e8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611db6908a018a613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611dff60608a0160408b01613474565b6001600160401b03168152602001611e1a60608a018a6134f6565b611e2390613538565b8152602001611e3560808a018a6134f6565b611e3e90613538565b8152602001876001600160401b031681525061279a565b5f82815260068601602052604090209193509150611e738282613186565b508160088401611e838880613432565b604051611e9192919061332f565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611ecd908590600401612f0b565b6020604051808303815f875af1158015611ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0d9190612f1d565b6040805160e081019091529091508060018152602001611f2d8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611fbc57611fbc612d37565b021790555060208201516001820190611fd59082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055806120728880613432565b60405161208092919061332f565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906120be9190613474565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f80825160271461212257825160405163cc92daa160e01b815263ffffffff909116600482015260276024820152604401610472565b5f805b60028110156121715761213981600161341f565b61214490600861328e565b61ffff1685828151811061215a5761215a612f79565b016020015160f81c901b9190911790600101612125565b5061ffff81161561219b5760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156121f6576121b281600361341f565b6121bd90600861328e565b63ffffffff16866121cf836002613259565b815181106121df576121df612f79565b016020015160f81c901b919091179060010161219e565b5063ffffffff811660021461221e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156122735761223581601f61341f565b61224090600861328e565b8761224c836006613259565b8151811061225c5761225c612f79565b016020015160f81c901b9190911790600101612221565b505f8660268151811061228857612288612f79565b016020015191976001600160f81b03199092161515965090945050505050565b6122b0612987565b6122b9826129d0565b610a74816129e9565b5f805f6122cd610ffb565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166122fd8582612575565b5f612307876129fa565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6123578a858b61101f565b6040518263ffffffff1660e01b81526004016123739190612f0b565b6020604051808303815f875af115801561238f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b39190612f1d565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6124196020820182612c5f565b63ffffffff1615801561243957506124346020820182612f34565b151590505b156124805761244b6020820182612c5f565b6124586020830183612f34565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610472565b61248d6020820182612f34565b905061249c6020830183612c5f565b63ffffffff1611156124b55761244b6020820182612c5f565b60015b6124c56020830183612f34565b9050811015610a74576124db6020830183612f34565b6124e660018461341f565b8181106124f5576124f5612f79565b905060200201602081019061250a9190612e38565b6001600160a01b03166125206020840184612f34565b8381811061253057612530612f79565b90506020020160208101906125459190612e38565b6001600160a01b0316101561256d57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016124b8565b5f61257e610ffb565b90505f826001600160401b0316846001600160401b031611156125ac576125a583856135ff565b90506125b9565b6125b684846135ff565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061261b575060018401548151612617916001600160401b031690613259565b8210155b15612641576001600160401b038316606082015281815260408101516020820152612660565b8281606001818151612653919061361f565b6001600160401b03169052505b606081015161267090606461363f565b602082015160018601546001600160401b03929092169161269b9190600160401b900460ff1661328e565b10156126cb57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610472565b856001600160401b0316816040018181516126e69190613259565b9052506040810180516001600160401b038716919061270690839061341f565b9052506001840154604082015160649161272b91600160401b90910460ff169061328e565b1015612752578060400151604051635943317f60e01b815260040161047291815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f60608260400151516030146127c35760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98612804988a98600198929792969095909490939092910161366a565b60405160208183030381529060405290505f5b846080015160200151518110156128765781856080015160200151828151811061284357612843612f79565b602002602001015160405160200161285c929190613724565b60408051601f198184030181529190529150600101612817565b5060a0840151805160209182015151604051612896938593929101613755565b60405160208183030381529060405290505f5b8460a00151602001515181101561290857818560a001516020015182815181106128d5576128d5612f79565b60200260200101516040516020016128ee929190613724565b60408051601f1981840301815291905291506001016128a9565b5060c084015160405161291f918391602001613790565b6040516020818303038152906040529050600281604051612940919061312a565b602060405180830381855afa15801561295b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061297e9190612f1d565b94909350915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a3357604051631afcd79f60e31b815260040160405180910390fd5b6129d8612987565b6129e0612a63565b610fc081612a6b565b6129f1612987565b610fc081612b4e565b5f80612a04610ffb565b5f8481526007820160205260409020600201805491925090600890612a3890600160401b90046001600160401b03166137c1565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610a33612987565b612a73612987565b5f612a7c610ffb565b8235815590506014612a9460608401604085016137dc565b60ff161180612ab35750612aae60608301604084016137dc565b60ff16155b15612ae757612ac860608301604084016137dc565b604051634a59bbff60e11b815260ff9091166004820152602401610472565b612af760608301604084016137dc565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055612b286040830160208401613474565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b610f8e612987565b508054612b6290612ec5565b5f825580601f10612b71575050565b601f0160209004905f5260205f2090810190610fc09190612bca565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612bde575f8155600101612bcb565b5090565b5f60208284031215612bf2575f80fd5b5035919050565b803563ffffffff81168114612c0c575f80fd5b919050565b5f8060408385031215612c22575f80fd5b82356001600160401b03811115612c37575f80fd5b830160808186031215612c48575f80fd5b9150612c5660208401612bf9565b90509250929050565b5f60208284031215612c6f575f80fd5b610a8b82612bf9565b6001600160a01b0391909116815260200190565b80356001600160401b0381168114612c0c575f80fd5b5f8060408385031215612cb3575f80fd5b82356001600160401b03811115612cc8575f80fd5b830160a08186031215612cd9575f80fd5b9150612c5660208401612c8c565b6001600160a01b0381168114610fc0575f80fd5b5f808284036080811215612d0d575f80fd5b6060811215612d1a575f80fd5b508291506060830135612d2c81612ce7565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612d6757634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612d85578181015183820152602001612d6d565b50505f910152565b5f8151808452612da4816020860160208601612d6b565b601f01601f19169290920160200192915050565b60208152612dca602082018351612d4b565b5f602083015160e06040840152612de5610100840182612d8d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612e48575f80fd5b8135612e5381612ce7565b9392505050565b5f8060208385031215612e6b575f80fd5b82356001600160401b0380821115612e81575f80fd5b818501915085601f830112612e94575f80fd5b813581811115612ea2575f80fd5b866020828501011115612eb3575f80fd5b60209290920196919550909350505050565b600181811c90821680612ed957607f821691505b602082108103612ef757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610a8e8284612d4b565b602081525f610a8b6020830184612d8d565b5f60208284031215612f2d575f80fd5b5051919050565b5f808335601e19843603018112612f49575f80fd5b8301803591506001600160401b03821115612f62575f80fd5b6020019150600581901b3603821315612405575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612fa1575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612fe157612fe1612fab565b60405290565b604080519081016001600160401b0381118282101715612fe157612fe1612fab565b604051601f8201601f191681016001600160401b038111828210171561303157613031612fab565b604052919050565b5f6001600160401b0382111561305157613051612fab565b50601f01601f191660200190565b5f82601f83011261306e575f80fd5b813561308161307c82613039565b613009565b818152846020838601011115613095575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156130c1575f80fd5b6130c9612fbf565b82356001600160401b03808211156130df575f80fd5b6130eb3683870161305f565b83526020850135915080821115613100575f80fd5b5061310d3682860161305f565b60208301525061311f60408401612c8c565b604082015292915050565b5f8251612fa1818460208701612d6b565b601f821115610a0957805f5260205f20601f840160051c810160208510156131605750805b601f840160051c820191505b8181101561317f575f815560010161316c565b5050505050565b81516001600160401b0381111561319f5761319f612fab565b6131b3816131ad8454612ec5565b8461313b565b602080601f8311600181146131e6575f84156131cf5750858301515b5f19600386901b1c1916600185901b17855561323d565b5f85815260208120601f198616915b82811015613214578886015182559484019460019091019084016131f5565b508582101561323157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a8e57610a8e613245565b5f63ffffffff80831681810361328457613284613245565b6001019392505050565b8082028115828204841417610a8e57610a8e613245565b5f60208083525f84546132b781612ec5565b806020870152604060018084165f81146132d857600181146132f457613321565b60ff19851660408a0152604084151560051b8a01019550613321565b895f5260205f205f5b858110156133185781548b82018601529083019088016132fd565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b80518015158114612c0c575f80fd5b5f806040838503121561335e575f80fd5b82516001600160401b0380821115613374575f80fd5b9084019060608287031215613387575f80fd5b61338f612fbf565b825181526020808401516133a281612ce7565b828201526040840151838111156133b7575f80fd5b80850194505087601f8501126133cb575f80fd5b835192506133db61307c84613039565b83815288828587010111156133ee575f80fd5b6133fd84838301848801612d6b565b8060408401525081955061341281880161333e565b9450505050509250929050565b81810381811115610a8e57610a8e613245565b5f808335601e19843603018112613447575f80fd5b8301803591506001600160401b03821115613460575f80fd5b602001915036819003821315612405575f80fd5b5f60208284031215613484575f80fd5b610a8b82612c8c565b5f885161349e818460208d01612d6b565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b5f8235603e19833603018112612fa1575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215613548575f80fd5b613550612fe7565b61355983612bf9565b81526020808401356001600160401b0380821115613575575f80fd5b9085019036601f830112613587575f80fd5b81358181111561359957613599612fab565b8060051b91506135aa848301613009565b81815291830184019184810190368411156135c3575f80fd5b938501935b838510156135ed57843592506135dd83612ce7565b82825293850193908501906135c8565b94860194909452509295945050505050565b6001600160401b0382811682821603908082111561117257611172613245565b6001600160401b0381811683821601908082111561117257611172613245565b6001600160401b0381811683821602808216919082811461366257613662613245565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516136b081602a850160208b01612d6b565b8651908301906136c781602a840160208b01612d6b565b60c087901b6001600160c01b031916602a92909101918201526136f9603282018660e01b6001600160e01b0319169052565b613712603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351613735818460208801612d6b565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451613766818460208901612d6b565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516137a1818460208801612d6b565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f6001600160401b0380831681810361328457613284613245565b5f602082840312156137ec575f80fd5b813560ff81168114612e53575f80fdfea164736f6c6343000819000a", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -698,23 +698,23 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeVali // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) } // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, conversionData, messageIndex) } // InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. // -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) subnetConversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorSet(subnetConversionData SubnetConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, subnetConversionData, messageIndex) +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, conversionData, messageIndex) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index eacff333a..90aa07440 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -485,7 +485,7 @@ abstract contract PoSValidatorManager is // Unpack the Warp message (bytes32 messageValidationID, uint64 nonce,) = ValidatorMessages - .unpackSubnetValidatorWeightMessage(_getPChainWarpMessage(messageIndex).payload); + .unpackL1ValidatorWeightMessage(_getPChainWarpMessage(messageIndex).payload); if (validationID != messageValidationID) { revert InvalidValidationID(delegator.validationID); @@ -668,7 +668,7 @@ abstract contract PoSValidatorManager is // Submit the message to the Warp precompile. WARP_MESSENGER.sendWarpMessage( - ValidatorMessages.packSubnetValidatorWeightMessage( + ValidatorMessages.packL1ValidatorWeightMessage( delegator.validationID, validator.messageNonce, validator.weight ) ); @@ -695,7 +695,7 @@ abstract contract PoSValidatorManager is // Unpack the Warp message WarpMessage memory warpMessage = _getPChainWarpMessage(messageIndex); (bytes32 validationID, uint64 nonce,) = - ValidatorMessages.unpackSubnetValidatorWeightMessage(warpMessage.payload); + ValidatorMessages.unpackL1ValidatorWeightMessage(warpMessage.payload); if (delegator.validationID != validationID) { revert InvalidValidationID(validationID); diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index 943a7b356..09842a583 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -10,7 +10,7 @@ import { InitialValidator, IValidatorManager, PChainOwner, - SubnetConversionData, + ConversionData, Validator, ValidatorChurnPeriod, ValidatorManagerSettings, @@ -74,9 +74,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida error InvalidMaximumChurnPercentage(uint8 maximumChurnPercentage); error InvalidBLSKeyLength(uint256 length); error InvalidNodeID(bytes nodeID); - error InvalidSubnetConversionID( - bytes32 encodedSubnetConversionID, bytes32 expectedSubnetConversionID - ); + error InvalidConversionID(bytes32 encodedConversionID, bytes32 expectedConversionID); error InvalidTotalWeight(uint256 weight); error InvalidValidationID(bytes32 validationID); error InvalidValidatorStatus(ValidatorStatus status); @@ -144,38 +142,34 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida * @notice See {IValidatorManager-initializeValidatorSet}. */ function initializeValidatorSet( - SubnetConversionData calldata subnetConversionData, + ConversionData calldata conversionData, uint32 messageIndex ) external { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); if ($._initializedValidatorSet) { revert InvalidInitializationStatus(); } - // Check that the blockchainID and validator manager address in the subnetConversionData correspond to this contract. + // Check that the blockchainID and validator manager address in the ConversionData correspond to this contract. // Other validation checks are done by the P-Chain when converting the subnet, so are not required here. - if (subnetConversionData.validatorManagerBlockchainID != WARP_MESSENGER.getBlockchainID()) { - revert InvalidValidatorManagerBlockchainID( - subnetConversionData.validatorManagerBlockchainID - ); + if (conversionData.validatorManagerBlockchainID != WARP_MESSENGER.getBlockchainID()) { + revert InvalidValidatorManagerBlockchainID(conversionData.validatorManagerBlockchainID); } - if (address(subnetConversionData.validatorManagerAddress) != address(this)) { - revert InvalidValidatorManagerAddress( - address(subnetConversionData.validatorManagerAddress) - ); + if (address(conversionData.validatorManagerAddress) != address(this)) { + revert InvalidValidatorManagerAddress(address(conversionData.validatorManagerAddress)); } - uint256 numInitialValidators = subnetConversionData.initialValidators.length; + uint256 numInitialValidators = conversionData.initialValidators.length; uint256 totalWeight; for (uint32 i; i < numInitialValidators; ++i) { - InitialValidator memory initialValidator = subnetConversionData.initialValidators[i]; + InitialValidator memory initialValidator = conversionData.initialValidators[i]; if ($._registeredValidators[initialValidator.nodeID] != bytes32(0)) { revert NodeAlreadyRegistered(initialValidator.nodeID); } // Validation ID of the initial validators is the sha256 hash of the // convert Subnet tx ID and the index of the initial validator. - bytes32 validationID = sha256(abi.encodePacked(subnetConversionData.subnetID, i)); + bytes32 validationID = sha256(abi.encodePacked(conversionData.subnetID, i)); // Save the initial validator as an active validator. @@ -203,15 +197,14 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida revert InvalidTotalWeight(totalWeight); } - // Verify that the sha256 hash of the Subnet conversion data matches with the Warp message's subnetConversionID. - bytes32 subnetConversionID = ValidatorMessages.unpackSubnetConversionMessage( + // Verify that the sha256 hash of the Subnet conversion data matches with the Warp message's conversionID. + bytes32 conversionID = ValidatorMessages.unpackSubnetToL1ConversionMessage( _getPChainWarpMessage(messageIndex).payload ); - bytes memory encodedConversion = - ValidatorMessages.packSubnetConversionData(subnetConversionData); - bytes32 encodedSubnetConversionID = sha256(encodedConversion); - if (encodedSubnetConversionID != subnetConversionID) { - revert InvalidSubnetConversionID(encodedSubnetConversionID, subnetConversionID); + bytes memory encodedConversion = ValidatorMessages.packConversionData(conversionData); + bytes32 encodedConversionID = sha256(encodedConversion); + if (encodedConversionID != conversionID) { + revert InvalidConversionID(encodedConversionID, conversionID); } $._initializedValidatorSet = true; @@ -274,7 +267,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida _checkAndUpdateChurnTracker(weight, 0); (bytes32 validationID, bytes memory registerSubnetValidatorMessage) = ValidatorMessages - .packRegisterSubnetValidatorMessage( + .packRegisterL1ValidatorMessage( ValidatorMessages.ValidationPeriod({ subnetID: $._subnetID, nodeID: input.nodeID, @@ -330,7 +323,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida function completeValidatorRegistration(uint32 messageIndex) external { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); (bytes32 validationID, bool validRegistration) = ValidatorMessages - .unpackSubnetValidatorRegistrationMessage(_getPChainWarpMessage(messageIndex).payload); + .unpackL1ValidatorRegistrationMessage(_getPChainWarpMessage(messageIndex).payload); if (!validRegistration) { revert UnexpectedRegistrationStatus(validRegistration); @@ -421,9 +414,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida } WARP_MESSENGER.sendWarpMessage( - ValidatorMessages.packSubnetValidatorWeightMessage( - validationID, validator.messageNonce, 0 - ) + ValidatorMessages.packL1ValidatorWeightMessage(validationID, validator.messageNonce, 0) ); } @@ -443,7 +434,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida // Get the Warp message. (bytes32 validationID, bool validRegistration) = ValidatorMessages - .unpackSubnetValidatorRegistrationMessage(_getPChainWarpMessage(messageIndex).payload); + .unpackL1ValidatorRegistrationMessage(_getPChainWarpMessage(messageIndex).payload); if (validRegistration) { revert UnexpectedRegistrationStatus(validRegistration); } @@ -527,7 +518,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida // Submit the message to the Warp precompile. bytes32 messageID = WARP_MESSENGER.sendWarpMessage( - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, nonce, newWeight) + ValidatorMessages.packL1ValidatorWeightMessage(validationID, nonce, newWeight) ); emit ValidatorWeightUpdate({ diff --git a/contracts/validator-manager/ValidatorMessages.sol b/contracts/validator-manager/ValidatorMessages.sol index ca836eb5a..11bd36c59 100644 --- a/contracts/validator-manager/ValidatorMessages.sol +++ b/contracts/validator-manager/ValidatorMessages.sol @@ -4,7 +4,7 @@ // SPDX-License-Identifier: Ecosystem pragma solidity 0.8.25; -import {PChainOwner, SubnetConversionData} from "./interfaces/IValidatorManager.sol"; +import {PChainOwner, ConversionData} from "./interfaces/IValidatorManager.sol"; /** * @dev Packing utilities for the Warp message types used by the Validator Manager contracts, as specified in ACP-77: @@ -13,7 +13,7 @@ import {PChainOwner, SubnetConversionData} from "./interfaces/IValidatorManager. library ValidatorMessages { // The information that uniquely identifies a subnet validation period. // The validationID is the SHA-256 hash of the concatenation of the CODEC_ID, - // REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID, and the concatenated ValidationPeriod fields. + // REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID, and the concatenated ValidationPeriod fields. struct ValidationPeriod { bytes32 subnetID; bytes nodeID; @@ -27,21 +27,21 @@ library ValidatorMessages { // The P-Chain uses a hardcoded codecID of 0 for all messages. uint16 internal constant CODEC_ID = 0; - // The P-Chain signs a SubnetConversion message that is used to verify the Subnet's initial validators. - uint32 internal constant SUBNET_CONVERSION_MESSAGE_TYPE_ID = 0; + // The P-Chain signs a SubnetToL1ConversionMessage that is used to verify the L1's initial validators. + uint32 internal constant SUBNET_TO_L1_CONVERSION_MESSAGE_TYPE_ID = 0; - // Subnets send a RegisterSubnetValidator message to the P-Chain to register a validator. - uint32 internal constant REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID = 1; + // L1s send a RegisterL1ValidatorMessage to the P-Chain to register a validator. + uint32 internal constant REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID = 1; - // The P-Chain responds with a RegisterSubnetValidator message indicating whether the registration was successful + // The P-Chain responds with a RegisterL1ValidatorMessage indicating whether the registration was successful // for the given validation ID. - uint32 internal constant SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID = 2; + uint32 internal constant L1_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID = 2; - // Subnets can send a SubnetValidatorWeight message to the P-Chain to update a validator's weight. - // The P-Chain responds with another SubnetValidatorWeight message acknowledging the weight update. - uint32 internal constant SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID = 3; + // L1s can send a L1ValidatorWeightMessage to the P-Chain to update a validator's weight. + // The P-Chain responds with another L1ValidatorWeightMessage acknowledging the weight update. + uint32 internal constant L1_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID = 3; - // The Subnet will self-sign a ValidationUptimeMessage to be provided when a validator is initiating + // The L1 will self-sign a ValidationUptimeMessage to be provided when a validator is initiating // the end of their validation period. uint32 internal constant VALIDATION_UPTIME_MESSAGE_TYPE_ID = 0; @@ -51,37 +51,41 @@ library ValidatorMessages { error InvalidBLSPublicKey(); /** - * @notice Packs a SubnetConversionMessage message into a byte array. + * @notice Packs a SubnetToL1ConversionMessage message into a byte array. * The message format specification is: * +--------------------+----------+----------+ * | codecID : uint16 | 2 bytes | * +--------------------+----------+----------+ * | typeID : uint32 | 4 bytes | * +--------------------+----------+----------+ - * | subnetConversionID : [32]byte | 32 bytes | + * | conversionID : [32]byte | 32 bytes | * +--------------------+----------+----------+ * | 38 bytes | * +----------+ * - * @param subnetConversionID The subnet conversion ID to pack into the message. + * @param conversionID The subnet conversion ID to pack into the message. * @return The packed message. */ - function packSubnetConversionMessage(bytes32 subnetConversionID) + function packSubnetToL1ConversionMessage(bytes32 conversionID) internal pure returns (bytes memory) { - return abi.encodePacked(CODEC_ID, SUBNET_CONVERSION_MESSAGE_TYPE_ID, subnetConversionID); + return abi.encodePacked(CODEC_ID, SUBNET_TO_L1_CONVERSION_MESSAGE_TYPE_ID, conversionID); } /** - * @notice Unpacks a byte array as a SubnetConversionMessage message. + * @notice Unpacks a byte array as a SubnetToL1ConversionMessage message. * The message format specification is the same as the one used in above for packing. * * @param input The byte array to unpack. - * @return The unpacked subnetConversionID. + * @return The unpacked conversionID. */ - function unpackSubnetConversionMessage(bytes memory input) internal pure returns (bytes32) { + function unpackSubnetToL1ConversionMessage(bytes memory input) + internal + pure + returns (bytes32) + { if (input.length != 38) { revert InvalidMessageLength(uint32(input.length), 38); } @@ -100,25 +104,25 @@ library ValidatorMessages { for (uint256 i; i < 4; ++i) { typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); } - if (typeID != SUBNET_CONVERSION_MESSAGE_TYPE_ID) { + if (typeID != SUBNET_TO_L1_CONVERSION_MESSAGE_TYPE_ID) { revert InvalidMessageType(); } - // Unpack the subnetConversionID - bytes32 subnetConversionID; + // Unpack the conversionID + bytes32 conversionID; for (uint256 i; i < 32; ++i) { - subnetConversionID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); + conversionID |= bytes32(uint256(uint8(input[i + 6])) << (8 * (31 - i))); } - return subnetConversionID; + return conversionID; } /** - * @notice Packs SubnetConversionData into a byte array. - * This byte array is the SHA256 pre-image of the subnetConversionID hash + * @notice Packs ConversionData into a byte array. + * This byte array is the SHA256 pre-image of the conversionID hash * The message format specification is: * - * SubnetConversionData: + * ConversionData: * +----------------+-----------------+--------------------------------------------------------+ * | codecID : uint16 | 2 bytes | * +----------------+-----------------+--------------------------------------------------------+ @@ -145,10 +149,10 @@ library ValidatorMessages { * * @dev Input validation is skipped, since the returned value is intended to be compared * directly with an authenticated Warp message. - * @param subnetConversionData The struct representing data to pack into the message. + * @param conversionData The struct representing data to pack into the message. * @return The packed message. */ - function packSubnetConversionData(SubnetConversionData calldata subnetConversionData) + function packConversionData(ConversionData calldata conversionData) internal pure returns (bytes memory) @@ -157,32 +161,32 @@ library ValidatorMessages { // solhint-disable-next-line func-named-parameters bytes memory res = abi.encodePacked( CODEC_ID, - subnetConversionData.subnetID, - subnetConversionData.validatorManagerBlockchainID, + conversionData.subnetID, + conversionData.validatorManagerBlockchainID, uint32(20), - subnetConversionData.validatorManagerAddress, - uint32(subnetConversionData.initialValidators.length) + conversionData.validatorManagerAddress, + uint32(conversionData.initialValidators.length) ); // The approach below of encoding initialValidators using `abi.encodePacked` in a loop // was tested against pre-allocating the array and doing manual byte by byte packing and // it was found to be more gas efficient. - for (uint256 i; i < subnetConversionData.initialValidators.length; ++i) { + for (uint256 i; i < conversionData.initialValidators.length; ++i) { res = abi.encodePacked( res, - uint32(subnetConversionData.initialValidators[i].nodeID.length), - subnetConversionData.initialValidators[i].nodeID, - subnetConversionData.initialValidators[i].blsPublicKey, - subnetConversionData.initialValidators[i].weight + uint32(conversionData.initialValidators[i].nodeID.length), + conversionData.initialValidators[i].nodeID, + conversionData.initialValidators[i].blsPublicKey, + conversionData.initialValidators[i].weight ); } return res; } /** - * @notice Packs a RegisterSubnetValidatorMessage message into a byte array. + * @notice Packs a RegisterL1ValidatorMessage message into a byte array. * The message format specification is: * - * RegisterSubnetValidatorMessage: + * RegisterL1ValidatorMessage: * +-----------------------+-------------+--------------------------------------------------------------------+ * | codecID : uint16 | 2 bytes | * +-----------------------+-------------+--------------------------------------------------------------------+ @@ -217,7 +221,7 @@ library ValidatorMessages { * @param validationPeriod The information to pack into the message. * @return The validationID and the packed message. */ - function packRegisterSubnetValidatorMessage(ValidationPeriod memory validationPeriod) + function packRegisterL1ValidatorMessage(ValidationPeriod memory validationPeriod) internal pure returns (bytes32, bytes memory) @@ -229,7 +233,7 @@ library ValidatorMessages { // solhint-disable-next-line func-named-parameters bytes memory res = abi.encodePacked( CODEC_ID, - REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID, + REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID, validationPeriod.subnetID, uint32(validationPeriod.nodeID.length), validationPeriod.nodeID, @@ -255,13 +259,13 @@ library ValidatorMessages { } /** - * @notice Unpacks a byte array as a RegisterSubnetValidatorMessage message. + * @notice Unpacks a byte array as a RegisterL1ValidatorMessage message. * The message format specification is the same as the one used in above for packing. * * @param input The byte array to unpack. * @return The unpacked ValidationPeriod. */ - function unpackRegisterSubnetValidatorMessage(bytes memory input) + function unpackRegisterL1ValidatorMessage(bytes memory input) internal pure returns (ValidationPeriod memory) @@ -288,7 +292,7 @@ library ValidatorMessages { for (uint256 i; i < 4; ++i) { typeID |= uint32(uint8(input[i + index])) << uint32((8 * (3 - i))); } - if (typeID != REGISTER_SUBNET_VALIDATOR_MESSAGE_TYPE_ID) { + if (typeID != REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID) { revert InvalidMessageType(); } index += 4; @@ -433,7 +437,7 @@ library ValidatorMessages { } /** - * @notice Packs a SubnetValidatorRegistrationMessage into a byte array. + * @notice Packs a L1ValidatorRegistrationMessage into a byte array. * The message format specification is: * +--------------+----------+----------+ * | codecID : uint16 | 2 bytes | @@ -452,24 +456,24 @@ library ValidatorMessages { * @return The packed message. * */ - function packSubnetValidatorRegistrationMessage( + function packL1ValidatorRegistrationMessage( bytes32 validationID, bool valid ) internal pure returns (bytes memory) { return abi.encodePacked( - CODEC_ID, SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID, validationID, valid + CODEC_ID, L1_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID, validationID, valid ); } /** - * @notice Unpacks a byte array as a SubnetValidatorRegistrationMessage message. + * @notice Unpacks a byte array as a L1ValidatorRegistrationMessage message. * The message format specification is the same as the one used in above for packing. * * @param input The byte array to unpack. * @return The validationID and whether the validation period was registered or is not a * validator and never will be a validator due to the expiry time passing. */ - function unpackSubnetValidatorRegistrationMessage(bytes memory input) + function unpackL1ValidatorRegistrationMessage(bytes memory input) internal pure returns (bytes32, bool) @@ -491,7 +495,7 @@ library ValidatorMessages { for (uint256 i; i < 4; ++i) { typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); } - if (typeID != SUBNET_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID) { + if (typeID != L1_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID) { revert InvalidMessageType(); } @@ -508,7 +512,7 @@ library ValidatorMessages { } /** - * @notice Packs a SubnetValidatorWeightMessage message into a byte array. + * @notice Packs a L1ValidatorWeightMessage message into a byte array. * The message format specification is: * +--------------+----------+----------+ * | codecID : uint16 | 2 bytes | @@ -529,24 +533,24 @@ library ValidatorMessages { * @param weight The new weight of the validator. * @return The packed message. */ - function packSubnetValidatorWeightMessage( + function packL1ValidatorWeightMessage( bytes32 validationID, uint64 nonce, uint64 weight ) internal pure returns (bytes memory) { return abi.encodePacked( - CODEC_ID, SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID, validationID, nonce, weight + CODEC_ID, L1_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID, validationID, nonce, weight ); } /** - * @notice Unpacks a byte array as a SubnetValidatorWeight message. + * @notice Unpacks a byte array as a SubnetValidatorWeightMessage. * The message format specification is the same as the one used in above for packing. * * @param input The byte array to unpack. * @return The validationID, nonce, and weight. */ - function unpackSubnetValidatorWeightMessage(bytes memory input) + function unpackL1ValidatorWeightMessage(bytes memory input) internal pure returns (bytes32, uint64, uint64) @@ -569,7 +573,7 @@ library ValidatorMessages { for (uint256 i; i < 4; ++i) { typeID |= uint32(uint8(input[i + 2])) << uint32((8 * (3 - i))); } - if (typeID != SUBNET_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID) { + if (typeID != L1_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID) { revert InvalidMessageType(); } diff --git a/contracts/validator-manager/interfaces/IValidatorManager.sol b/contracts/validator-manager/interfaces/IValidatorManager.sol index 1c2ae4ee4..0b8d429cc 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -59,12 +59,12 @@ struct ValidatorManagerSettings { } /** - * @dev Description of the subnet conversion data used to convert - * a subnet to a permissionless subnet on the P-Chain. + * @dev Description of the conversion data used to convert + * a subnet to an L1 on the P-Chain. * This data is the pre-image of a hash that is authenticated by the P-Chain * and verified by the Validator Manager. */ -struct SubnetConversionData { +struct ConversionData { bytes32 subnetID; bytes32 validatorManagerBlockchainID; address validatorManagerAddress; @@ -72,7 +72,7 @@ struct SubnetConversionData { } /** - * @dev Specifies an initial validator, used in the subnet conversion data. + * @dev Specifies an initial validator, used in the conversion data. */ struct InitialValidator { bytes nodeID; @@ -169,13 +169,12 @@ interface IValidatorManager { ); /** - * @notice Verifies and sets the initial validator set for the chain through a P-Chain - * SubnetConversionMessage. - * @param subnetConversionData The subnet conversion message data used to recompute and verify against the subnetConversionID. - * @param messsageIndex The index that contains the SubnetConversionMessage Warp message containing the subnetConversionID to be verified against the provided {subnetConversionData} + * @notice Verifies and sets the initial validator set for the chain through a P-Chain SubnetToL1ConversionMessage. + * @param conversionData The subnet conversion message data used to recompute and verify against the conversionID. + * @param messsageIndex The index that contains the SubnetToL1ConversionMessage Warp message containing the conversionID to be verified against the provided {ConversionData} */ function initializeValidatorSet( - SubnetConversionData calldata subnetConversionData, + ConversionData calldata conversionData, uint32 messsageIndex ) external; diff --git a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol index a96100814..e6227409a 100644 --- a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol @@ -35,7 +35,7 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { _setUp(); _mockGetBlockchainID(); _mockInitializeValidatorSet(); - app.initializeValidatorSet(_defaultSubnetConversionData(), 0); + app.initializeValidatorSet(_defaultConversionData(), 0); } function testZeroMinimumDelegationFee() public { diff --git a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol index adbfb79bb..e0ac95b16 100644 --- a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol @@ -30,7 +30,7 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { _setUp(); _mockGetBlockchainID(); _mockInitializeValidatorSet(); - app.initializeValidatorSet(_defaultSubnetConversionData(), 0); + app.initializeValidatorSet(_defaultConversionData(), 0); } function testZeroMinimumDelegationFee() public { diff --git a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol index 063bcd6f8..fd6e8ba51 100644 --- a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol @@ -28,7 +28,7 @@ contract PoAValidatorManagerTest is ValidatorManagerTest { _setUp(); _mockGetBlockchainID(); _mockInitializeValidatorSet(); - app.initializeValidatorSet(_defaultSubnetConversionData(), 0); + app.initializeValidatorSet(_defaultConversionData(), 0); } function testInvalidOwnerRegistration() public { diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index 1684e165d..bbe14df6d 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -294,7 +294,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { expectedValidatorWeight: DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT, expectedNonce: 1 }); - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory setValidatorWeightPayload = ValidatorMessages.packL1ValidatorWeightMessage( validationID, 1, DEFAULT_WEIGHT + DEFAULT_DELEGATOR_WEIGHT ); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); @@ -334,7 +334,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { // Complete registration of delegator2 with delegator1's nonce // Note that registering delegator1 with delegator2's nonce is valid uint64 nonce = 1; - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory setValidatorWeightPayload = ValidatorMessages.packL1ValidatorWeightMessage( validationID, nonce, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT ); _mockGetPChainWarpMessage(setValidatorWeightPayload, true); @@ -565,7 +565,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { force: false }); bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 2, DEFAULT_WEIGHT); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 2, DEFAULT_WEIGHT); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); posValidatorManager.resendUpdateDelegation(delegationID); } @@ -582,7 +582,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); validatorManager.resendEndValidatorMessage(validationID); } @@ -934,7 +934,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { // Complete ending delegator2 with delegator1's nonce // Note that ending delegator1 with delegator2's nonce is valid uint64 nonce = 3; - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory setValidatorWeightPayload = ValidatorMessages.packL1ValidatorWeightMessage( validationID, nonce, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT ); _mockGetPChainWarpMessage(setValidatorWeightPayload, true); @@ -1059,7 +1059,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.warp(DEFAULT_COMPLETION_TIMESTAMP); bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); // Submit an uptime proof via submitUptime @@ -1099,7 +1099,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.warp(DEFAULT_COMPLETION_TIMESTAMP); bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( @@ -1123,7 +1123,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.warp(DEFAULT_COMPLETION_TIMESTAMP); bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(defaultInitialValidationID, 1, 0); + ValidatorMessages.packL1ValidatorWeightMessage(defaultInitialValidationID, 1, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); vm.expectEmit(true, true, true, true, address(validatorManager)); emit ValidatorRemovalInitialized( @@ -1151,7 +1151,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.warp(DEFAULT_COMPLETION_TIMESTAMP); bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( @@ -1250,7 +1250,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 expectedValidatorWeight, uint64 expectedNonce ) internal returns (bytes32) { - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory setValidatorWeightPayload = ValidatorMessages.packL1ValidatorWeightMessage( validationID, expectedNonce, expectedValidatorWeight ); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); @@ -1279,7 +1279,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 expectedValidatorWeight, uint64 expectedNonce ) internal { - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory setValidatorWeightPayload = ValidatorMessages.packL1ValidatorWeightMessage( validationID, expectedNonce, expectedValidatorWeight ); _mockGetPChainWarpMessage(setValidatorWeightPayload, true); @@ -1425,7 +1425,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bool includeUptime, bool force ) internal { - bytes memory setValidatorWeightPayload = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory setValidatorWeightPayload = ValidatorMessages.packL1ValidatorWeightMessage( validationID, expectedNonce, expectedValidatorWeight ); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); @@ -1522,7 +1522,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function _completeEndValidation(bytes32 validationID) internal { bytes memory subnetValidatorRegistrationMessage = - ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); + ValidatorMessages.packL1ValidatorRegistrationMessage(validationID, false); _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); posValidatorManager.completeEndValidation(0); @@ -1566,7 +1566,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 validatorWeight, uint64 expectedNonce ) internal { - bytes memory weightUpdateMessage = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory weightUpdateMessage = ValidatorMessages.packL1ValidatorWeightMessage( validationID, expectedNonce, validatorWeight ); _mockGetPChainWarpMessage(weightUpdateMessage, true); diff --git a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol index 0ce88da54..f95fe0f30 100644 --- a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol @@ -6,7 +6,7 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; -import {ValidatorManager, SubnetConversionData, InitialValidator} from "../ValidatorManager.sol"; +import {ValidatorManager, ConversionData, InitialValidator} from "../ValidatorManager.sol"; import {ValidatorMessages} from "../ValidatorMessages.sol"; import { ValidatorStatus, @@ -192,7 +192,7 @@ abstract contract ValidatorManagerTest is Test { DEFAULT_BLS_PUBLIC_KEY ); (, bytes memory registerSubnetValidatorMessage) = ValidatorMessages - .packRegisterSubnetValidatorMessage( + .packRegisterL1ValidatorMessage( ValidatorMessages.ValidationPeriod({ subnetID: DEFAULT_SUBNET_ID, nodeID: DEFAULT_NODE_ID, @@ -235,7 +235,7 @@ abstract contract ValidatorManagerTest is Test { }); bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, 1, 0); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); validatorManager.resendEndValidatorMessage(validationID); } @@ -252,7 +252,7 @@ abstract contract ValidatorManagerTest is Test { }); bytes memory subnetValidatorRegistrationMessage = - ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); + ValidatorMessages.packL1ValidatorRegistrationMessage(validationID, false); _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); @@ -271,7 +271,7 @@ abstract contract ValidatorManagerTest is Test { DEFAULT_BLS_PUBLIC_KEY ); bytes memory subnetValidatorRegistrationMessage = - ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); + ValidatorMessages.packL1ValidatorRegistrationMessage(validationID, false); _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); @@ -287,7 +287,7 @@ abstract contract ValidatorManagerTest is Test { _mockGetBlockchainID(); vm.expectRevert(abi.encodeWithSelector(ValidatorManager.InvalidTotalWeight.selector, 4)); - manager.initializeValidatorSet(_defaultSubnetConversionDataWeightsTooLow(), 0); + manager.initializeValidatorSet(_defaultConversionDataWeightsTooLow(), 0); } function testRemoveValidatorTotalWeight5() public { @@ -297,12 +297,12 @@ abstract contract ValidatorManagerTest is Test { _mockGetBlockchainID(); _mockGetPChainWarpMessage( - ValidatorMessages.packSubnetConversionMessage( + ValidatorMessages.packSubnetToL1ConversionMessage( bytes32(hex"1d72565851401e05d6351ebf5443d9bdc04953f3233da1345af126e7e4be7464") ), true ); - manager.initializeValidatorSet(_defaultSubnetConversionDataTotalWeight5(), 0); + manager.initializeValidatorSet(_defaultConversionDataTotalWeight5(), 0); bytes32 validationID = sha256(abi.encodePacked(DEFAULT_SUBNET_ID, uint32(0))); vm.expectRevert(abi.encodeWithSelector(ValidatorManager.InvalidTotalWeight.selector, 4)); @@ -401,7 +401,7 @@ abstract contract ValidatorManagerTest is Test { uint64 registrationExpiry, bytes memory blsPublicKey ) internal returns (bytes32 validationID) { - (validationID,) = ValidatorMessages.packRegisterSubnetValidatorMessage( + (validationID,) = ValidatorMessages.packRegisterL1ValidatorMessage( ValidatorMessages.ValidationPeriod({ nodeID: nodeID, subnetID: subnetID, @@ -413,7 +413,7 @@ abstract contract ValidatorManagerTest is Test { }) ); (, bytes memory registerSubnetValidatorMessage) = ValidatorMessages - .packRegisterSubnetValidatorMessage( + .packRegisterL1ValidatorMessage( ValidatorMessages.ValidationPeriod({ subnetID: subnetID, nodeID: nodeID, @@ -455,7 +455,7 @@ abstract contract ValidatorManagerTest is Test { nodeID, subnetID, weight, registrationExpiry, blsPublicKey ); bytes memory subnetValidatorRegistrationMessage = - ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, true); + ValidatorMessages.packL1ValidatorRegistrationMessage(validationID, true); _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); @@ -475,7 +475,7 @@ abstract contract ValidatorManagerTest is Test { bool force ) internal { bytes memory setValidatorWeightPayload = - ValidatorMessages.packSubnetValidatorWeightMessage(validationID, expectedNonce, 0); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, expectedNonce, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); if (includeUptime) { @@ -569,7 +569,7 @@ abstract contract ValidatorManagerTest is Test { function _mockInitializeValidatorSet() internal { _mockGetPChainWarpMessage( - ValidatorMessages.packSubnetConversionMessage(DEFAULT_SUBNET_CONVERSION_ID), true + ValidatorMessages.packSubnetToL1ConversionMessage(DEFAULT_SUBNET_CONVERSION_ID), true ); } @@ -589,7 +589,7 @@ abstract contract ValidatorManagerTest is Test { function _beforeSend(uint256 amount, address spender) internal virtual; - function _defaultSubnetConversionData() internal view returns (SubnetConversionData memory) { + function _defaultConversionData() internal view returns (ConversionData memory) { InitialValidator[] memory initialValidators = new InitialValidator[](2); // The first initial validator has a high weight relative to the default PoS validator weight // to avoid churn issues @@ -604,7 +604,7 @@ abstract contract ValidatorManagerTest is Test { weight: DEFAULT_WEIGHT, blsPublicKey: DEFAULT_BLS_PUBLIC_KEY }); - return SubnetConversionData({ + return ConversionData({ subnetID: DEFAULT_SUBNET_ID, validatorManagerBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, validatorManagerAddress: address(validatorManager), @@ -612,11 +612,7 @@ abstract contract ValidatorManagerTest is Test { }); } - function _defaultSubnetConversionDataWeightsTooLow() - internal - view - returns (SubnetConversionData memory) - { + function _defaultConversionDataWeightsTooLow() internal view returns (ConversionData memory) { InitialValidator[] memory initialValidators = new InitialValidator[](2); initialValidators[0] = InitialValidator({ @@ -630,7 +626,7 @@ abstract contract ValidatorManagerTest is Test { blsPublicKey: DEFAULT_BLS_PUBLIC_KEY }); - return SubnetConversionData({ + return ConversionData({ subnetID: DEFAULT_SUBNET_ID, validatorManagerBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, validatorManagerAddress: address(validatorManager), @@ -638,11 +634,7 @@ abstract contract ValidatorManagerTest is Test { }); } - function _defaultSubnetConversionDataTotalWeight5() - internal - view - returns (SubnetConversionData memory) - { + function _defaultConversionDataTotalWeight5() internal view returns (ConversionData memory) { InitialValidator[] memory initialValidators = new InitialValidator[](2); initialValidators[0] = InitialValidator({ @@ -656,7 +648,7 @@ abstract contract ValidatorManagerTest is Test { blsPublicKey: DEFAULT_BLS_PUBLIC_KEY }); - return SubnetConversionData({ + return ConversionData({ subnetID: DEFAULT_SUBNET_ID, validatorManagerBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, validatorManagerAddress: address(validatorManager), diff --git a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol index 12fe198c9..9193484b5 100644 --- a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol @@ -32,7 +32,7 @@ contract ValidatorMessagesTest is Test { function testRegisterSubnetValidatorMessage() public view { (bytes32 validationID, bytes memory packed) = ValidatorMessages - .packRegisterSubnetValidatorMessage( + .packRegisterL1ValidatorMessage( ValidatorMessages.ValidationPeriod({ subnetID: DEFAULT_SUBNET_ID, nodeID: DEFAULT_NODE_ID, @@ -45,43 +45,43 @@ contract ValidatorMessagesTest is Test { ); ValidatorMessages.ValidationPeriod memory info = - ValidatorMessages.unpackRegisterSubnetValidatorMessage(packed); + ValidatorMessages.unpackRegisterL1ValidatorMessage(packed); assertEq(info.subnetID, DEFAULT_SUBNET_ID); assertEq(info.nodeID, DEFAULT_NODE_ID); assertEq(info.weight, DEFAULT_WEIGHT); assertEq(info.registrationExpiry, DEFAULT_EXPIRY); assertEq(info.blsPublicKey, DEFAULT_BLS_PUBLIC_KEY); - (bytes32 recoveredID,) = ValidatorMessages.packRegisterSubnetValidatorMessage(info); + (bytes32 recoveredID,) = ValidatorMessages.packRegisterL1ValidatorMessage(info); assertEq(recoveredID, validationID); } function testSubnetValidatorRegistrationMessage() public pure { bytes memory packed = - ValidatorMessages.packSubnetValidatorRegistrationMessage(DEFAULT_VALIDATION_ID, true); + ValidatorMessages.packL1ValidatorRegistrationMessage(DEFAULT_VALIDATION_ID, true); (bytes32 validationID, bool valid) = - ValidatorMessages.unpackSubnetValidatorRegistrationMessage(packed); + ValidatorMessages.unpackL1ValidatorRegistrationMessage(packed); assertEq(validationID, DEFAULT_VALIDATION_ID); assert(valid); } function testSetSubnetValidatorWeightMessage() public pure { - bytes memory packed = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory packed = ValidatorMessages.packL1ValidatorWeightMessage( DEFAULT_VALIDATION_ID, 100, DEFAULT_WEIGHT ); (bytes32 validationID, uint64 nonce, uint64 weight) = - ValidatorMessages.unpackSubnetValidatorWeightMessage(packed); + ValidatorMessages.unpackL1ValidatorWeightMessage(packed); assertEq(validationID, DEFAULT_VALIDATION_ID); assertEq(nonce, 100); assertEq(weight, DEFAULT_WEIGHT); } function testSubnetValidatorWeightUpdateMessag() public pure { - bytes memory packed = ValidatorMessages.packSubnetValidatorWeightMessage( + bytes memory packed = ValidatorMessages.packL1ValidatorWeightMessage( DEFAULT_VALIDATION_ID, 100, DEFAULT_WEIGHT ); (bytes32 validationID, uint64 nonce, uint64 weight) = - ValidatorMessages.unpackSubnetValidatorWeightMessage(packed); + ValidatorMessages.unpackL1ValidatorWeightMessage(packed); assertEq(validationID, DEFAULT_VALIDATION_ID); assertEq(nonce, 100); assertEq(weight, DEFAULT_WEIGHT); From eec86c289fc29a662bc50136d606391e256238a0 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 29 Oct 2024 17:36:13 -0500 Subject: [PATCH 29/43] fix go test utils --- tests/utils/validator_manager.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index b3626bc14..a44af2c77 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -297,7 +297,7 @@ func InitializeNativeTokenValidatorSet( ManagerAddress: validatorManagerAddress[:], Validators: initialValidators, } - subnetConversionDataABI := nativetokenstakingmanager.SubnetConversionData{ + subnetConversionDataABI := nativetokenstakingmanager.ConversionData{ SubnetID: subnetInfo.SubnetID, ValidatorManagerBlockchainID: subnetInfo.BlockchainID, ValidatorManagerAddress: validatorManagerAddress, @@ -371,7 +371,7 @@ func InitializeERC20TokenValidatorSet( ManagerAddress: validatorManagerAddress[:], Validators: initialValidators, } - subnetConversionDataABI := erc20tokenstakingmanager.SubnetConversionData{ + subnetConversionDataABI := erc20tokenstakingmanager.ConversionData{ SubnetID: subnetInfo.SubnetID, ValidatorManagerBlockchainID: subnetInfo.BlockchainID, ValidatorManagerAddress: validatorManagerAddress, @@ -446,7 +446,7 @@ func InitializePoAValidatorSet( ManagerAddress: validatorManagerAddress[:], Validators: initialValidators, } - subnetConversionDataABI := poavalidatormanager.SubnetConversionData{ + subnetConversionDataABI := poavalidatormanager.ConversionData{ SubnetID: subnetInfo.SubnetID, ValidatorManagerBlockchainID: subnetInfo.BlockchainID, ValidatorManagerAddress: validatorManagerAddress, @@ -494,7 +494,7 @@ func DeliverNativeTokenSubnetConversion( subnet interfaces.SubnetTestInfo, validatorManagerAddress common.Address, subnetConversionSignedMessage *avalancheWarp.Message, - subnetConversionData nativetokenstakingmanager.SubnetConversionData, + subnetConversionData nativetokenstakingmanager.ConversionData, ) *types.Receipt { abi, err := nativetokenstakingmanager.NativeTokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) @@ -516,7 +516,7 @@ func DeliverERC20TokenSubnetConversion( subnet interfaces.SubnetTestInfo, validatorManagerAddress common.Address, subnetConversionSignedMessage *avalancheWarp.Message, - subnetConversionData erc20tokenstakingmanager.SubnetConversionData, + subnetConversionData erc20tokenstakingmanager.ConversionData, ) *types.Receipt { abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) @@ -538,7 +538,7 @@ func DeliverPoASubnetConversion( subnet interfaces.SubnetTestInfo, validatorManagerAddress common.Address, subnetConversionSignedMessage *avalancheWarp.Message, - subnetConversionData poavalidatormanager.SubnetConversionData, + subnetConversionData poavalidatormanager.ConversionData, ) *types.Receipt { abi, err := poavalidatormanager.PoAValidatorManagerMetaData.GetAbi() Expect(err).Should(BeNil()) From bcc6b2966f20220f1e4e473ba19e77a549ea203c Mon Sep 17 00:00:00 2001 From: Meaghan FitzGerald Date: Wed, 30 Oct 2024 10:40:47 -0400 Subject: [PATCH 30/43] Update contracts/validator-manager/MessageSpec.md Co-authored-by: cam-schultz <78878559+cam-schultz@users.noreply.github.com> Signed-off-by: Meaghan FitzGerald --- contracts/validator-manager/MessageSpec.md | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/validator-manager/MessageSpec.md b/contracts/validator-manager/MessageSpec.md index b0bc0f81a..312cd3efc 100644 --- a/contracts/validator-manager/MessageSpec.md +++ b/contracts/validator-manager/MessageSpec.md @@ -5,6 +5,7 @@ Description: Confirms conversion to L1 on the P-Chain Signed by: P-Chain + Consumed by: L1 Specification: From ac7de8897ee09d142342b81cef552c099bb3ab04 Mon Sep 17 00:00:00 2001 From: Meaghan FitzGerald Date: Wed, 30 Oct 2024 10:43:42 -0400 Subject: [PATCH 31/43] Update and rename MessageSpec.md to UptimeMessageSpec.md Signed-off-by: Meaghan FitzGerald --- contracts/validator-manager/MessageSpec.md | 156 ------------------ .../validator-manager/UptimeMessageSpec.md | 19 +++ 2 files changed, 19 insertions(+), 156 deletions(-) delete mode 100644 contracts/validator-manager/MessageSpec.md create mode 100644 contracts/validator-manager/UptimeMessageSpec.md diff --git a/contracts/validator-manager/MessageSpec.md b/contracts/validator-manager/MessageSpec.md deleted file mode 100644 index 312cd3efc..000000000 --- a/contracts/validator-manager/MessageSpec.md +++ /dev/null @@ -1,156 +0,0 @@ -## Warp Message Format Reference - -### `SubnetToL1ConversionMessage` - -Description: Confirms conversion to L1 on the P-Chain - -Signed by: P-Chain - -Consumed by: L1 - -Specification: - -The `SubnetToL1ConversionMessage` is specified as an `AddressedCall` with `sourceChainID` set to the P-Chain ID, the `sourceAddress` set to an empty byte array, and a payload of: - -| Field | Type | Size | -| -------------: | ---------: | -------: | -| `codecID` | `uint16` | 2 bytes | -| `typeID` | `uint32` | 4 bytes | -| `conversionID` | `[32]byte` | 32 bytes | -| | | 38 bytes | - -- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` -- `typeID` is the payload type identifier and is `0x00000000` for this message -- `conversionID` is the SHA256 hash of the `ConversionData` from a given `ConvertSubnetToL1Tx` - -The following serialization is defined as the `ValidatorData`: - -| Field | Type | Size | -| -------------: | ---------: | -----------------------: | -| `nodeID` | `[]byte` | 4 + len(`nodeID`) bytes | -| `blsPublicKey` | `[48]byte` | 48 bytes | -| `weight` | `uint64` | 8 bytes | -| | | 60 + len(`nodeID`) bytes | - -The following serialization is defined as the `ConversionData`: - -| Field | Type | Size | -| ---------------: | ----------------: | ---------------------------------------------------------: | -| `codecID` | `uint16` | 2 bytes | -| `subnetID` | `[32]byte` | 32 bytes | -| `managerChainID` | `[32]byte` | 32 bytes | -| `managerAddress` | `[]byte` | 4 + len(`managerAddress`) bytes | -| `validators` | `[]ValidatorData` | 4 + sum(`validatorLengths`) bytes | -| | | 74 + len(`managerAddress`) + sum(`validatorLengths`) bytes | - -- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` -- `sum(validatorLengths)` is the sum of the lengths of `ValidatorData` serializations included in `validators`. -- `subnetID` identifies the Subnet that is being converted to an L1 (described further below). -- `managerChainID` and `managerAddress` identify the validator manager for the newly created L1. This is the (blockchain ID, address) tuple allowed to send Warp messages to modify the L1's validator set. -- `validators` are the initial continuous-fee-paying validators for the given L1. - -### `RegisterL1ValidatorMessage` - -Description: Register an L1 Validator on the P-Chain - -Signed by: L1 -Consumed by: P-Chain - -Specification: - -| Field | Type | Size | -| ----------------------: | ------------: | ------------------------------------------------------------------------: | -| `codecID` | `uint16` | 2 bytes | -| `typeID` | `uint32` | 4 bytes | -| `subnetID` | `[32]byte` | 32 bytes | -| `nodeID` | `[]byte` | 4 + len(`nodeID`) bytes | -| `blsPublicKey` | `[48]byte` | 48 bytes | -| `expiry` | `uint64` | 8 bytes | -| `remainingBalanceOwner` | `PChainOwner` | 8 + len(`addresses`) \* 20 bytes | -| `disableOwner` | `PChainOwner` | 8 + len(`addresses`) \* 20 bytes | -| `weight` | `uint64` | 8 bytes | -| | | 122 + len(`nodeID`) + (len(`addresses1`) + len(`addresses2`)) \* 20 bytes | - -- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` -- `typeID` is the payload type identifier and is `0x00000001` for this payload -- `subnetID`, `nodeID`, `weight`, and `blsPublicKey` are for the validator being added -- `expiry` is the time at which this message becomes invalid. As of a P-Chain timestamp `>= expiry`, this Avalanche Warp Message can no longer be used to add the `nodeID` to the validator set of `subnetID` -- `remainingBalanceOwner` is the P-Chain owner where leftover $AVAX from the validator's Balance will be issued to when this validator it is removed from the validator set. -- `disableOwner` is the only P-Chain owner allowed to disable the validator using `DisableL1ValidatorTx`, specified below. - -The following is the serialization of a `PChainOwner`: - -| Field | Type | Size | -| ----------: | -----------: | -------------------------------: | -| `threshold` | `uint32` | 4 bytes | -| `addresses` | `[][20]byte` | 4 + len(`addresses`) \* 20 bytes | -| | | 8 + len(`addresses`) \* 20 bytes | - -- `threshold` is the number of `addresses` that must provide a signature for the `PChainOwner` to authorize an action. -- Validation criteria: - - If `threshold` is `0`, `addresses` must be empty - - `threshold` <= len(`addresses`) - - Entries of `addresses` must be unique and sorted in ascending order - -### `L1ValidatorRegistrationMessage` - -Description: Confirms an L1 validator's registration validity on the P-Chain - -Signed by: P-Chain -Consumed by: Validator Manager contract - -Specification: - -| Field | Type | Size | -| -------------: | ---------: | -------: | -| `codecID` | `uint16` | 2 bytes | -| `typeID` | `uint32` | 4 bytes | -| `validationID` | `[32]byte` | 32 bytes | -| `registered` | `bool` | 1 byte | -| | | 39 bytes | - -- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` -- `typeID` is the payload type identifier and is `0x00000002` for this message -- `validationID` identifies the validator for the message -- `registered` is a boolean representing the status of the `validationID`. If true, the `validationID` corresponds to a validator in the current validator set. If false, the `validationID` does not correspond to a validator in the current validator set, and never will in the future. - -### `ValidationUptimeMessage` - -Description: Provides a Validator's uptime for calculating staking rewards - -Signed by: L1 -Consumed by: Validator Manager Contract - -Specification: - -| Field | Type | Size | -| -------------: | ---------: | -------: | -| `codecID` | `uint16` | 2 bytes | -| `typeID` | `uint32` | 4 bytes | -| `validationID` | `[32]byte` | 32 bytes | -| `uptime` | `uint64` | 8 byte | -| | | 46 bytes | - -### `L1ValidatorWeightMessage` - -Description: Used to set a Validator's stake weight on another chain - -Signed by: P-Chain or L1 -Consumed by: P-Chain or L1 - -Specification: - -| Field | Type | Size | -| -------------: | ---------: | -------: | -| `codecID` | `uint16` | 2 bytes | -| `typeID` | `uint32` | 4 bytes | -| `validationID` | `[32]byte` | 32 bytes | -| `nonce` | `uint64` | 8 bytes | -| `weight` | `uint64` | 8 bytes | -| | | 54 bytes | - -- `codecID` is the codec version used to serialize the payload, and is hardcoded to `0x0000` -- `typeID` is the payload type identifier and is `0x00000003` for this message -- `validationID` identifies the validator for the message -- `nonce` is a strictly increasing number that denotes the latest validator weight update and provides replay protection for this transaction -- `weight` is the new `weight` of the validator diff --git a/contracts/validator-manager/UptimeMessageSpec.md b/contracts/validator-manager/UptimeMessageSpec.md new file mode 100644 index 000000000..de9c96de3 --- /dev/null +++ b/contracts/validator-manager/UptimeMessageSpec.md @@ -0,0 +1,19 @@ +# `ValidationUptimeMessage` Warp Message Format Reference + +Description: Provides a Validator's uptime for calculating staking rewards + +Signed by: L1 + +Consumed by: Validator Manager Contract + +Specification: + +| Field | Type | Size | +| -------------: | ---------: | -------: | +| `codecID` | `uint16` | 2 bytes | +| `typeID` | `uint32` | 4 bytes | +| `validationID` | `[32]byte` | 32 bytes | +| `uptime` | `uint64` | 8 byte | +| | | 46 bytes | + +This is defined within `Subnet-EVM` [here](https://github.com/ava-labs/subnet-evm/blob/323eb0c7dd7204521e662a3a355fe78a0e19c0be/warp/messages/validator_uptime.go#L14-L19). From 2e0c04ddda6d11b6bee6f840eee33b6b4f6fdb9c Mon Sep 17 00:00:00 2001 From: Meaghan FitzGerald Date: Wed, 30 Oct 2024 10:44:56 -0400 Subject: [PATCH 32/43] nit Signed-off-by: Meaghan FitzGerald --- contracts/validator-manager/UptimeMessageSpec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/validator-manager/UptimeMessageSpec.md b/contracts/validator-manager/UptimeMessageSpec.md index de9c96de3..c979d759c 100644 --- a/contracts/validator-manager/UptimeMessageSpec.md +++ b/contracts/validator-manager/UptimeMessageSpec.md @@ -1,6 +1,6 @@ # `ValidationUptimeMessage` Warp Message Format Reference -Description: Provides a Validator's uptime for calculating staking rewards +Description: Provides a validator's uptime for calculating staking rewards Signed by: L1 From c83e8f449595fb21564350ee601fbc1a1dc5f15e Mon Sep 17 00:00:00 2001 From: Meaghan FitzGerald Date: Wed, 30 Oct 2024 10:49:51 -0400 Subject: [PATCH 33/43] link to Warp Message formats in acp77 Signed-off-by: Meaghan FitzGerald --- contracts/validator-manager/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index 46989775d..8684e78a9 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -107,17 +107,17 @@ A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upg ### Register a Validator -Validator registration is initiated with a call to `initializeValidatorRegistration`. The sender of this transaction is registered as the validator owner. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterL1ValidatorMessage`](./MessageSpec.md#registerl1validatormessage) Warp message to be sent to the P-Chain. Each Validator registration request includes all of the information needed to identify the Validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterL1ValidatorMessage` must be delivered to the P-Chain. If the Validator is not registered on the P-Chain before the `expiry`, then the Validator may be removed from the contract state by calling `completeEndValidation`. +Validator registration is initiated with a call to `initializeValidatorRegistration`. The sender of this transaction is registered as the validator owner. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterL1ValidatorMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatormessage) Warp message to be sent to the P-Chain. Each Validator registration request includes all of the information needed to identify the Validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterL1ValidatorMessage` must be delivered to the P-Chain. If the Validator is not registered on the P-Chain before the `expiry`, then the Validator may be removed from the contract state by calling `completeEndValidation`. -The `RegisterL1ValidatorMessage` is delivered to the P-Chain as the Warp message payload of a `RegisterL1ValidatorTx`. Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatortx) for validity requirements. The P-Chain then signs a [`L1ValidatorRegistrationMessage`](./MessageSpec.md#l1validatorregistrationmessage) Warp message indicating that the specified Validator was successfully registered on the P-Chain. +The `RegisterL1ValidatorMessage` is delivered to the P-Chain as the Warp message payload of a `RegisterL1ValidatorTx`. Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatortx) for validity requirements. The P-Chain then signs a [`L1ValidatorRegistrationMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorregistrationmessage) Warp message indicating that the specified Validator was successfully registered on the P-Chain. The `L1ValidatorRegistrationMessage` is delivered to the `ValidatorManager` via a call to `completeValidatorRegistration`. For PoS Validator Managers, staking rewards begin accruing at this time. ### Remove a Validator -Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager`. Only the validator owner may initiate exit. For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./MessageSpec.md#validationuptimemessage) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. +Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager`. Only the validator owner may initiate exit. For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./UptimeMessageSpec.md) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. -The `ValidatorManager` contructs an [`L1ValidatorWeightMessage`](./MessageSpec.md#l1validatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. +The `ValidatorManager` contructs an [`L1ValidatorWeightMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. #### Disable a Validator Directly on the P-Chain @@ -127,7 +127,7 @@ Disabled L1 validators can re-activate at any time by increasing their balance w ### (PoS only) Register a Delegator -`PoSValidatorManager` supports delegation to an actively staked validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host validator. A delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The delegator will be registered as long as churn restrictions are not violated. The delegator is reflected on the P-Chain by adjusting the validator's registered weight via a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The weight change acknowledgement is delivered to the `PoSValidatorManager` via an [`L1ValidatorWeightMessage`](./MessageSpec.md#l1validatorweightmessage), which is provided by calling `completeDelegatorRegistration`. +`PoSValidatorManager` supports delegation to an actively staked validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host validator. A delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The delegator will be registered as long as churn restrictions are not violated. The delegator is reflected on the P-Chain by adjusting the validator's registered weight via a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The weight change acknowledgement is delivered to the `PoSValidatorManager` via an [`L1ValidatorWeightMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorweightmessage), which is provided by calling `completeDelegatorRegistration`. > [!NOTE] > The P-Chain is only willing to sign an `L1ValidatorWeightMessage` for an active validator. Once a validator exit has been initiated (via a call to `initializeEndValidation`), the `PoSValidatorManager` must assume that the validator has been deactivated on the P-Chain, and will therefore not sign any further weight updates. Therefore, it is invalid to _initiate_ adding or removing a delegator when the validator is in this state, though it _may be_ valid to _complete_ an already initiated delegator action, depending on the order of delivery to the P-Chain. If the delegator weight change was submitted (and a Warp signature on the acknowledgement retrieved) before the validator was removed, then the delegator action may be completed. Otherwise, the acknowledgement of the validation end must first be delivered before completing the delegator action. From c0d19dedc8a0022ec56a2513e42b7007da83c30d Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Wed, 30 Oct 2024 11:26:27 -0500 Subject: [PATCH 34/43] reset global binary variable on deploy --- scripts/local/e2e_test.sh | 13 ------------- tests/utils/validator_manager.go | 12 ++++++++++++ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/scripts/local/e2e_test.sh b/scripts/local/e2e_test.sh index 68b910fe6..e716ed907 100755 --- a/scripts/local/e2e_test.sh +++ b/scripts/local/e2e_test.sh @@ -93,19 +93,6 @@ for component in $(echo $components | tr ',' ' '); do echo "Running e2e tests for $component" - # If component is validator-manager, run each flow separately - if [ "$component" == "validator-manager" ]; then - for flow in "ERC20" "Native" "PoA"; do - echo "Running $flow flow" - RUN_E2E=true ./tests/local/$component/$component.test \ - --ginkgo.vv \ - --ginkgo.label-filter=${GINKGO_LABEL_FILTER:-""} \ - --ginkgo.trace \ - --ginkgo.focus=$flow - done - continue - fi - RUN_E2E=true ./tests/local/$component/$component.test \ --ginkgo.vv \ --ginkgo.label-filter=${GINKGO_LABEL_FILTER:-""} \ diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index 70fd97517..90b97dcaf 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -64,6 +64,10 @@ func DeployNativeTokenStakingManager( senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, ) (common.Address, *nativetokenstakingmanager.NativeTokenStakingManager) { + // Reset the global binary data for better test isolation + nativetokenstakingmanager.NativeTokenStakingManagerBin = + nativetokenstakingmanager.NativeTokenStakingManagerMetaData.Bin + opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) address, tx, stakingManager, err := nativetokenstakingmanager.DeployNativeTokenStakingManager( @@ -126,6 +130,10 @@ func DeployERC20TokenStakingManager( senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, ) (common.Address, *erc20tokenstakingmanager.ERC20TokenStakingManager) { + // Reset the global binary data for better test isolation + erc20tokenstakingmanager.ERC20TokenStakingManagerBin = + erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.Bin + opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) address, tx, stakingManager, err := erc20tokenstakingmanager.DeployERC20TokenStakingManager( @@ -196,6 +204,9 @@ func DeployPoAValidatorManager( senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, ) (common.Address, *poavalidatormanager.PoAValidatorManager) { + // Reset the global binary data for better test isolation + poavalidatormanager.PoAValidatorManagerBin = poavalidatormanager.PoAValidatorManagerMetaData.Bin + opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) address, tx, validatorManager, err := poavalidatormanager.DeployPoAValidatorManager( @@ -999,6 +1010,7 @@ func ForceInitializeEndNativeValidation( validationID ids.ID, ) *types.Receipt { opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) + opts.GasLimit = 1_000_000 Expect(err).Should(BeNil()) tx, err := stakingManager.ForceInitializeEndValidation( opts, From 477027e817ee0d65271a9d9075e1005f854c8c70 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Wed, 30 Oct 2024 11:31:44 -0500 Subject: [PATCH 35/43] remove dbg code --- tests/utils/validator_manager.go | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index 90b97dcaf..60b2445d6 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -1010,7 +1010,6 @@ func ForceInitializeEndNativeValidation( validationID ids.ID, ) *types.Receipt { opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - opts.GasLimit = 1_000_000 Expect(err).Should(BeNil()) tx, err := stakingManager.ForceInitializeEndValidation( opts, From e7d8e3af3470d5372dd6db6ea70fed0172fde2bd Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Wed, 30 Oct 2024 11:40:14 -0500 Subject: [PATCH 36/43] cancel in progress tests on new commit --- .github/workflows/test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a5edf0aed..b9a206780 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,6 +8,10 @@ on: branches: - "**" +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: solidity-unit-tests: runs-on: ubuntu-22.04 From ab76f29919cfb4e4af58c62386990c64323a5a1e Mon Sep 17 00:00:00 2001 From: Ronnieraj37 Date: Thu, 31 Oct 2024 22:11:30 +0530 Subject: [PATCH 37/43] Optimized Gas Usage --- .../ERC20TokenStakingManager.go | 2 +- .../NativeTokenStakingManager.go | 2 +- .../PoAValidatorManager.go | 2 +- .../validator-manager/PoSValidatorManager.sol | 26 +++++++-------- .../validator-manager/ValidatorManager.sol | 32 ++++++++----------- 5 files changed, 28 insertions(+), 36 deletions(-) diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 513f1beee..69f89fe2c 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -92,7 +92,7 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTokenAddress\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615f31380380615f3183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615de48061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101c1575f3560e01c80638280a25a116100f6578063ba3a4b971161009a578063ba3a4b97146103d9578063bc5fbfec146103ec578063bee0a03f14610413578063c974d1b614610426578063d5f20ff61461042e578063df93d8de1461044e578063e4a63c4014610458578063f74c607b1461047f578063fd7ac5e714610492575f80fd5b80638280a25a1461034357806393e245981461034b57806398f3e2b41461035e5780639e1bc4ef14610371578063a3a65e4814610384578063a9778a7a14610270578063afb9809614610397578063b771b3bc146103be575f80fd5b80633a1cfff6116101685780633a1cfff61461028c578063467ef06f1461029f5780634bee0040146102b25780635297fae6146102d357806360305d62146102e6578063620658561461030357806366435abf14610316578063732214f81461032957806376f7862114610330575f80fd5b80630118acc4146101c55780630322ed98146101da578063151d30d1146101ed5780631ec447241461020c57806320d91b7a1461021f57806325e1c776146102325780632e2194d81461024557806335455ded14610270575b5f80fd5b6101d86101d3366004615085565b6104a5565b005b6101d86101e83660046150c0565b6104da565b6101f5600a81565b60405160ff90911681526020015b60405180910390f35b6101d861021a366004615085565b6106dd565b6101d861022d3660046150d7565b6106e8565b6101d8610240366004615125565b610be6565b6102586102533660046150c0565b610c5a565b6040516001600160401b039091168152602001610203565b61027961271081565b60405161ffff9091168152602001610203565b6101d861029a366004615085565b610cae565b6101d86102ad366004615146565b610cb9565b6102c56102c0366004615186565b610d69565b604051908152602001610203565b6101d86102e13660046151eb565b610d90565b6102ee601481565b60405163ffffffff9091168152602001610203565b6102c5610311366004615213565b610feb565b6102586103243660046150c0565b61100b565b6102c55f81565b6101d861033e366004615085565b61101f565b6101f5603081565b6101d86103593660046150c0565b61104a565b6101d861036c3660046151eb565b611107565b6102c561037f36600461522c565b6112c6565b6101d8610392366004615146565b6112e4565b6102c57f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6103cc6005600160991b0181565b604051610203919061524c565b6101d86103e73660046150c0565b61146a565b6102c57fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b6101d86104213660046150c0565b611648565b6101f5601481565b61044161043c3660046150c0565b611765565b60405161020391906152d5565b6102586202a30081565b6102c57f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0081565b6101d861048d366004615369565b6118a7565b6102c56104a03660046153a7565b611986565b6104b08383836119be565b6104d557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f6104e3611d0b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561051c5761051c615260565b600581111561052d5761052d615260565b815260200160018201805461054190615412565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90615412565b80156105b85780601f1061058f576101008083540402835291602001916105b8565b820191905f5260205f20905b81548152906001019060200180831161059b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561062357610623615260565b14610656575f8381526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b6005600160991b016001600160a01b031663ee5b48eb61067b8584606001515f611d2f565b6040518263ffffffff1660e01b81526004016106979190615458565b6020604051808303815f875af11580156106b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d7919061546a565b50505050565b6106d78383836119be565b5f6106f1611d0b565b600981015490915060ff161561071a57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610781919061546a565b8360200135146107aa576040516372b0a7e760e11b8152602084013560048201526024016104cc565b306107bb6060850160408601615481565b6001600160a01b0316146107f3576107d96060840160408501615481565b604051632f88120d60e21b81526004016104cc919061524c565b5f610801606085018561549c565b905090505f805b828163ffffffff161015610ae8575f610824606088018861549c565b8363ffffffff1681811061083a5761083a6154e1565b905060200281019061084c91906154f5565b61085590615619565b80516040519192505f91600888019161086d91615692565b9081526020016040518091039020541461089d57805160405163a41f772f60e01b81526104cc9190600401615458565b5f6002885f0135846040516020016108cc92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526108e691615692565b602060405180830381855afa158015610901573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610924919061546a565b90508086600801835f015160405161093c9190615692565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156109be576109be615260565b0217905550602082015160018201906109d790826156e7565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610a7b9116856157b6565b8251604051919550610a8c91615692565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610ae1906157c9565b9050610808565b50600483018190556001830154606490610b0c90600160401b900460ff16836157eb565b1015610b2e57604051635943317f60e01b8152600481018290526024016104cc565b5f610b44610b3b86611d7e565b60400151611e89565b90505f610b5087612016565b90505f600282604051610b639190615692565b602060405180830381855afa158015610b7e573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ba1919061546a565b9050828114610bcd57604051631872fc8d60e01b815260048101829052602481018490526044016104cc565b5050506009909201805460ff1916600117905550505050565b610bef826121eb565b610c0f576040516330efa98b60e01b8152600481018390526024016104cc565b5f610c1983611765565b5190506002816005811115610c3057610c30615260565b14610c50578060405163170cc93360e21b81526004016104cc919061544a565b6106d78383612214565b5f80610c64612462565b60030154610c729084615802565b9050801580610c8757506001600160401b0381115b15610ca85760405163222d164360e21b8152600481018490526024016104cc565b92915050565b6106d7838383612486565b610cc1612651565b5f610cca612462565b90505f80610cd78461269b565b91509150610ce4826121eb565b610cf057505050610d5e565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610d1e57610d1e615260565b03610d43575f83815260088501602052604081208054919055610d4182826129d5565b505b610d5981610d548460400151610feb565b612a45565b505050505b610d66612a63565b50565b5f610d72612651565b610d7e85858585612a89565b9050610d88612a63565b949350505050565b5f610d99612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610dd257610dd2615260565b6003811115610de357610de3615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610e5982611765565b9050600183516003811115610e7057610e70615260565b14610e91578251604051633b0d540d60e21b81526104cc9190600401615821565b600481516005811115610ea657610ea6615260565b03610ebc57610eb485612c40565b505050505050565b5f80610ed3610eca89611d7e565b60400151612e60565b5091509150818414610f0057846040015160405163089938b360e11b81526004016104cc91815260200190565b806001600160401b031683606001516001600160401b03161080610f395750806001600160401b03168560a001516001600160401b0316115b15610f6257604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610ff4612462565b60030154610ca8906001600160401b0384166157eb565b5f61101582611765565b6080015192915050565b61102a838383612486565b6104d557604051635bff683f60e11b8152600481018490526024016104cc565b5f611053612462565b90505f61105f83611765565b519050600481600581111561107657611076615260565b14611096578060405163170cc93360e21b81526004016104cc919061544a565b5f8381526005830160205260409020546001600160a01b031633146110d157335b604051636e2ccd7560e11b81526004016104cc919061524c565b5f838152600883016020908152604080832080549084905560058601909252909120546106d7906001600160a01b0316826129d5565b61110f612651565b5f611118612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561115157611151615260565b600381111561116257611162615260565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156111db576111db615260565b146111fc578051604051633b0d540d60e21b81526104cc9190600401615821565b600461120b8260400151611765565b51600581111561121d5761121d615260565b146112af575f61122c85611d7e565b90505f8061123d8360400151612e60565b5091509150818460400151146112695760405163089938b360e11b8152600481018390526024016104cc565b806001600160401b03168460c001516001600160401b031611156112ab57604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5050505b6112b883612c40565b50506112c2612a63565b5050565b5f6112cf612651565b6112da8333846130b6565b9050610ca8612a63565b5f6112ed611d0b565b90505f806113066112fd85611d7e565b6040015161338b565b915091508061132c57604051632d07135360e01b815281151560048201526024016104cc565b5f8281526006840160205260409020805461134690615412565b90505f0361136a5760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078501602052604090205460ff16600581111561139057611390615260565b146113c3575f8281526007840160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068401602052604081206113db91614fd4565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611473612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114ac576114ac615260565b60038111156114bd576114bd615260565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561153657611536615260565b14158015611557575060038151600381111561155457611554615260565b14155b15611578578051604051633b0d540d60e21b81526104cc9190600401615821565b5f6115868260400151611765565b905080606001516001600160401b03165f036115b8576040516339b894f960e21b8152600481018590526024016104cc565b6005600160991b016001600160a01b031663ee5b48eb6115e5846040015184606001518560800151611d2f565b6040518263ffffffff1660e01b81526004016116019190615458565b6020604051808303815f875af115801561161d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611641919061546a565b5050505050565b5f611651611d0b565b5f838152600682016020526040902080549192509061166f90615412565b90505f036116935760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078301602052604090205460ff1660058111156116b9576116b9615260565b146116ec575f8281526007820160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611725919060040161583b565b6020604051808303815f875af1158015611741573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d5919061546a565b61176d61500b565b5f611776611d0b565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156117ad576117ad615260565b60058111156117be576117be615260565b81526020016001820180546117d290615412565b80601f01602080910402602001604051908101604052809291908181526020018280546117fe90615412565b80156118495780601f1061182057610100808354040283529160200191611849565b820191905f5260205f20905b81548152906001019060200180831161182c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118f0575080546001600160401b03808416911610155b1561190e5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556119398484613547565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80611990611d0b565b90508060080184846040516119a69291906158c5565b90815260200160405180910390205491505092915050565b5f806119c8612462565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a0157611a01615260565b6003811115611a1257611a12615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611a8882611765565b9050600283516003811115611a9f57611a9f615260565b14611ac0578251604051633b0d540d60e21b81526104cc9190600401615821565b60208301516001600160a01b03163314611b5c575f8281526005850160205260409020546001600160a01b03163314611af957336110b7565b5f82815260058501602052604090205460a0820151611b2891600160b01b90046001600160401b0316906158d4565b6001600160401b0316421015611b5c5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b600281516005811115611b7157611b71615260565b03611c9f5760028401546080840151611b93916001600160401b0316906158d4565b6001600160401b0316421015611bc75760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b8615611bd957611bd78287612214565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611c12918491611c0d91906158f4565b613561565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611c53846136ab565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a315159450611d049350505050565b600481516005811115611cb457611cb4615260565b03611ce857611cc2836136ab565b5f898152600786016020526040902055611cdb88612c40565b6001945050505050611d04565b805160405163170cc93360e21b81526104cc919060040161544a565b9392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611de2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e09919081019061591f565b9150915080611e2b57604051636b2f19e960e01b815260040160405180910390fd5b815115611e51578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615611e82578160200151604051624de75d60e31b81526004016104cc919061524c565b5092915050565b5f8151602614611ebe57815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016104cc565b5f805b6002811015611f0d57611ed58160016159f1565b611ee09060086157eb565b61ffff16848281518110611ef657611ef66154e1565b016020015160f81c901b9190911790600101611ec1565b5061ffff811615611f375760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015611f9257611f4e8160036159f1565b611f599060086157eb565b63ffffffff1685611f6b8360026157b6565b81518110611f7b57611f7b6154e1565b016020015160f81c901b9190911790600101611f3a565b5063ffffffff811615611fb857604051635b60892f60e01b815260040160405180910390fd5b5f805b602081101561200d57611fcf81601f6159f1565b611fda9060086157eb565b86611fe68360066157b6565b81518110611ff657611ff66154e1565b016020015160f81c901b9190911790600101611fbb565b50949350505050565b60605f8083356020850135601461203287870160408901615481565b61203f606089018961549c565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6120c0606085018561549c565b9050811015611e8257816120d7606086018661549c565b838181106120e7576120e76154e1565b90506020028101906120f991906154f5565b6121039080615a04565b9050612112606087018761549c565b84818110612122576121226154e1565b905060200281019061213491906154f5565b61213e9080615a04565b61214b606089018961549c565b8681811061215b5761215b6154e1565b905060200281019061216d91906154f5565b61217b906020810190615a04565b61218860608b018b61549c565b88818110612198576121986154e1565b90506020028101906121aa91906154f5565b6121bb906060810190604001615213565b6040516020016121d19796959493929190615a46565b60408051601f1981840301815291905291506001016120b3565b5f806121f5612462565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561225f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612286919081019061591f565b91509150806122a857604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230f919061546a565b825114612335578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615612366578160200151604051624de75d60e31b81526004016104cc919061524c565b5f80612375846040015161382e565b9150915081871461239c5760405163089938b360e11b8152600481018890526024016104cc565b5f6123a5612462565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612438575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612457565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f80612490612462565b90505f61249c86613a1f565b90506124a7866121eb565b6124b657600192505050611d04565b5f8681526005830160205260409020546001600160a01b031633146124db57336110b7565b5f86815260058301602052604090205460a082015161250a91600160b01b90046001600160401b0316906158d4565b6001600160401b03168160c001516001600160401b031610156125515760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104cc565b5f8515612569576125628786612214565b9050612587565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906125ac90610feb565b60a086015160c08701516040516001600160e01b031960e086901b1681526125dc93929182918990600401615aaf565b602060405180830381865afa1580156125f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261b919061546a565b905080846008015f8a81526020019081526020015f205f82825461263f91906157b6565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161269557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6126a461500b565b5f6126ad611d0b565b90505f806126bd6112fd87611d7e565b9150915080156126e457604051632d07135360e01b815281151560048201526024016104cc565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561271557612715615260565b600581111561272657612726615260565b815260200160018201805461273a90615412565b80601f016020809104026020016040519081016040528092919081815260200182805461276690615412565b80156127b15780601f10612788576101008083540402835291602001916127b1565b820191905f5260205f20905b81548152906001019060200180831161279457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561281c5761281c615260565b1415801561283d575060018151600581111561283a5761283a615260565b14155b1561285e57805160405163170cc93360e21b81526104cc919060040161544a565b60038151600581111561287357612873615260565b036128815760048152612886565b600581525b83600801816020015160405161289c9190615692565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156128e0576128e0615260565b0217905550602082015160018201906128f990826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558051600581111561299e5761299e615260565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f6129de613cf7565b80546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612a2a575f80fd5b505af1158015612a3c573d5f803e3d5ffd5b50505050505050565b6112c28282612a52613cf7565b546001600160a01b03169190613d1b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f80612a93612462565b600281015490915061ffff600160401b90910481169086161080612abc575061271061ffff8616115b15612ae057604051635f12e6c360e11b815261ffff861660048201526024016104cc565b60028101546001600160401b039081169085161015612b1c576040516202a06d60e11b81526001600160401b03851660048201526024016104cc565b8054831080612b2e5750806001015483115b15612b4f5760405163222d164360e21b8152600481018490526024016104cc565b5f612b5984613d7a565b90505f612b6582610c5a565b90505f612b728983613d97565b90506040518060800160405280612b863390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b5f612c49612462565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612c8257612c82615260565b6003811115612c9357612c93615260565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612d076142f4565b8260800151612d1691906158d4565b6001600160401b0316421015612d4a5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612e05575f84815260058701602052604090205461271090612db790600160a01b900461ffff16856157eb565b612dc19190615802565b915081866008015f8681526020019081526020015f205f828254612de591906157b6565b90915550612df5905082846159f1565b9050612e058560200151826129d5565b612e1a8560200151610d548760600151610feb565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e9757835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016104cc565b5f805b6002811015612ee657612eae8160016159f1565b612eb99060086157eb565b61ffff16868281518110612ecf57612ecf6154e1565b016020015160f81c901b9190911790600101612e9a565b5061ffff811615612f105760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015612f6b57612f278160036159f1565b612f329060086157eb565b63ffffffff1687612f448360026157b6565b81518110612f5457612f546154e1565b016020015160f81c901b9190911790600101612f13565b5063ffffffff8116600314612f9357604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612fe857612faa81601f6159f1565b612fb59060086157eb565b88612fc18360066157b6565b81518110612fd157612fd16154e1565b016020015160f81c901b9190911790600101612f96565b505f805b6008811015613047576130008160076159f1565b61300b9060086157eb565b6001600160401b0316896130208360266157b6565b81518110613030576130306154e1565b016020015160f81c901b9190911790600101612fec565b505f805b60088110156130a65761305f8160076159f1565b61306a9060086157eb565b6001600160401b03168a61307f83602e6157b6565b8151811061308f5761308f6154e1565b016020015160f81c901b919091179060010161304b565b5091989097509095509350505050565b5f806130c0612462565b90505f6130cf61025385613d7a565b90505f6130db87611765565b90506130e6876121eb565b613106576040516330efa98b60e01b8152600481018890526024016104cc565b60028151600581111561311b5761311b615260565b1461313c57805160405163170cc93360e21b81526104cc919060040161544a565b5f82826080015161314d91906158d4565b905083600201600a9054906101000a90046001600160401b031682604001516131769190615add565b6001600160401b0316816001600160401b031611156131b357604051636d51fe0560e11b81526001600160401b03821660048201526024016104cc565b5f806131bf8a84613561565b915091505f8a836040516020016131ed92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561328057613280615260565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8082516027146133c157825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016104cc565b5f805b6002811015613410576133d88160016159f1565b6133e39060086157eb565b61ffff168582815181106133f9576133f96154e1565b016020015160f81c901b91909117906001016133c4565b5061ffff81161561343a5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613495576134518160036159f1565b61345c9060086157eb565b63ffffffff168661346e8360026157b6565b8151811061347e5761347e6154e1565b016020015160f81c901b919091179060010161343d565b5063ffffffff81166002146134bd57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613512576134d481601f6159f1565b6134df9060086157eb565b876134eb8360066157b6565b815181106134fb576134fb6154e1565b016020015160f81c901b91909117906001016134c0565b505f86602681518110613527576135276154e1565b016020015191976001600160f81b03199092161515965090945050505050565b61354f61430f565b6135588261435a565b6112c2816143ce565b5f805f61356c611d0b565b5f868152600782016020526040902060020154909150600160801b90046001600160401b031661359c858261442a565b5f6135a68761464f565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6135f68a858b611d2f565b6040518263ffffffff1660e01b81526004016136129190615458565b6020604051808303815f875af115801561362e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613652919061546a565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806136b5612462565b90505f6136c58460400151611765565b90505f6003825160058111156136dd576136dd615260565b14806136fb57506004825160058111156136f9576136f9615260565b145b1561370b575060c0810151613748565b60028251600581111561372057613720615260565b0361372c575042613748565b815160405163170cc93360e21b81526104cc919060040161544a565b84608001516001600160401b0316816001600160401b03161161376f57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061379490610feb565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526137e69493929188916001600160401b0390911690600401615aaf565b602060405180830381865afa158015613801573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613825919061546a565b95945050505050565b5f808251602e1461386457825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016104cc565b5f805b60028110156138b35761387b8160016159f1565b6138869060086157eb565b61ffff1685828151811061389c5761389c6154e1565b016020015160f81c901b9190911790600101613867565b5061ffff8116156138dd5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015613938576138f48160036159f1565b6138ff9060086157eb565b63ffffffff16866139118360026157b6565b81518110613921576139216154e1565b016020015160f81c901b91909117906001016138e0565b5063ffffffff81161561395e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156139b35761397581601f6159f1565b6139809060086157eb565b8761398c8360066157b6565b8151811061399c5761399c6154e1565b016020015160f81c901b9190911790600101613961565b505f805b6008811015613a12576139cb8160076159f1565b6139d69060086157eb565b6001600160401b0316886139eb8360266157b6565b815181106139fb576139fb6154e1565b016020015160f81c901b91909117906001016139b7565b5090969095509350505050565b613a2761500b565b5f613a30611d0b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613a6957613a69615260565b6005811115613a7a57613a7a615260565b8152602001600182018054613a8e90615412565b80601f0160208091040260200160405190810160405280929190818152602001828054613aba90615412565b8015613b055780601f10613adc57610100808354040283529160200191613b05565b820191905f5260205f20905b815481529060010190602001808311613ae857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613b7357613b73615260565b14613ba6575f8481526007830160205260409081902054905163170cc93360e21b81526104cc9160ff169060040161544a565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613bea57613bea615260565b021790555060208201516001820190613c0390826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613ca08582613561565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0090565b6040516001600160a01b038381166024830152604482018390526104d591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506146b8565b5f610ca882613d87613cf7565b546001600160a01b031690614710565b5f613da0611d0b565b6009015460ff16613dc457604051637fab81e560e01b815260040160405180910390fd5b5f613dcd611d0b565b905042613de06060860160408701615213565b6001600160401b0316111580613e1a5750613dfe6202a300426157b6565b613e0e6060860160408701615213565b6001600160401b031610155b15613e5457613e2f6060850160408601615213565b604051635879da1360e11b81526001600160401b0390911660048201526024016104cc565b613e69613e646060860186615b08565b614871565b613e79613e646080860186615b08565b6030613e886020860186615a04565b905014613eba57613e9c6020850185615a04565b6040516326475b2f60e11b81526104cc925060040190815260200190565b613ec48480615a04565b90505f03613ef157613ed68480615a04565b604051633e08a12560e11b81526004016104cc929190615b1c565b5f60088201613f008680615a04565b604051613f0e9291906158c5565b90815260200160405180910390205414613f4757613f2c8480615a04565b60405163a41f772f60e01b81526004016104cc929190615b1c565b613f51835f61442a565b6040805160e08101909152815481525f90819061405d9060208101613f768980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613fbe908a018a615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161400760608a0160408b01615213565b6001600160401b0316815260200161402260608a018a615b08565b61402b90615b4a565b815260200161403d60808a018a615b08565b61404690615b4a565b8152602001876001600160401b03168152506149da565b5f8281526006860160205260409020919350915061407b82826156e7565b50816008840161408b8880615a04565b6040516140999291906158c5565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906140d5908590600401615458565b6020604051808303815f875af11580156140f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614115919061546a565b6040805160e0810190915290915080600181526020016141358980615a04565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156141c4576141c4615260565b0217905550602082015160018201906141dd90826156e7565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061427a8880615a04565b6040516142889291906158c5565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906142c69190615213565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f6142fd611d0b565b600101546001600160401b0316919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661435857604051631afcd79f60e31b815260040160405180910390fd5b565b61436261430f565b61436b81614bc7565b614373614be0565b610d666060820135608083013561439060c0850160a08601615213565b6143a060e0860160c08701615c11565b6143b1610100870160e08801615c2a565b6101008701356143c961014089016101208a01615481565b614bf0565b6143d661430f565b5f6143df613cf7565b90506001600160a01b03821661440a5781604051637330680360e01b81526004016104cc919061524c565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f614433611d0b565b90505f826001600160401b0316846001600160401b031611156144615761445a83856158f4565b905061446e565b61446b84846158f4565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806144d05750600184015481516144cc916001600160401b0316906157b6565b8210155b156144f6576001600160401b038316606082015281815260408101516020820152614515565b828160600181815161450891906158d4565b6001600160401b03169052505b6060810151614525906064615add565b602082015160018601546001600160401b0392909216916145509190600160401b900460ff166157eb565b101561458057606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104cc565b856001600160401b03168160400181815161459b91906157b6565b9052506040810180516001600160401b03871691906145bb9083906159f1565b905250600184015460408201516064916145e091600160401b90910460ff16906157eb565b1015614607578060400151604051635943317f60e01b81526004016104cc91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614659611d0b565b5f848152600782016020526040902060020180549192509060089061468d90600160401b90046001600160401b0316615c4a565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6146cc6001600160a01b03841683614d86565b905080515f141580156146f05750808060200190518101906146ee9190615c65565b155b156104d55782604051635274afe760e01b81526004016104cc919061524c565b5f80836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161473e919061524c565b602060405180830381865afa158015614759573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061477d919061546a565b90506147946001600160a01b038516333086614d93565b6040516370a0823160e01b81525f906001600160a01b038616906370a08231906147c290309060040161524c565b602060405180830381865afa1580156147dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614801919061546a565b90508181116148675760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104cc565b61382582826159f1565b61487e6020820182615146565b63ffffffff1615801561489e5750614899602082018261549c565b151590505b156148e5576148b06020820182615146565b6148bd602083018361549c565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104cc565b6148f2602082018261549c565b90506149016020830183615146565b63ffffffff16111561491a576148b06020820182615146565b60015b61492a602083018361549c565b90508110156112c257614940602083018361549c565b61494b6001846159f1565b81811061495a5761495a6154e1565b905060200201602081019061496f9190615481565b6001600160a01b0316614985602084018461549c565b83818110614995576149956154e1565b90506020020160208101906149aa9190615481565b6001600160a01b031610156149d257604051630dbc8d5f60e31b815260040160405180910390fd5b60010161491d565b5f6060826040015151603014614a035760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614a44988a986001989297929690959094909390929101615c80565b60405160208183030381529060405290505f5b84608001516020015151811015614ab657818560800151602001518281518110614a8357614a836154e1565b6020026020010151604051602001614a9c929190615d3a565b60408051601f198184030181529190529150600101614a57565b5060a0840151805160209182015151604051614ad6938593929101615d6b565b60405160208183030381529060405290505f5b8460a001516020015151811015614b4857818560a00151602001518281518110614b1557614b156154e1565b6020026020010151604051602001614b2e929190615d3a565b60408051601f198184030181529190529150600101614ae9565b5060c0840151604051614b5f918391602001615da6565b6040516020818303038152906040529050600281604051614b809190615692565b602060405180830381855afa158015614b9b573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614bbe919061546a565b94909350915050565b614bcf61430f565b614bd7614dcc565b610d6681614dd4565b614be861430f565b614358614eb7565b614bf861430f565b5f614c01612462565b905061ffff85161580614c19575061271061ffff8616115b15614c3d57604051635f12e6c360e11b815261ffff861660048201526024016104cc565b86881115614c615760405163222d164360e21b8152600481018990526024016104cc565b60ff84161580614c745750600a60ff8516115b15614c975760405163170db35960e31b815260ff851660048201526024016104cc565b614c9f6142f4565b6001600160401b0316866001600160401b03161015614cdb576040516202a06d60e11b81526001600160401b03871660048201526024016104cc565b825f03614cfb5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b6060611d0483835f614ebf565b6040516001600160a01b0384811660248301528381166044830152606482018390526106d79186918216906323b872dd90608401613d48565b61435861430f565b614ddc61430f565b5f614de5611d0b565b8235815590506014614dfd6060840160408501615c2a565b60ff161180614e1c5750614e176060830160408401615c2a565b60ff16155b15614e5057614e316060830160408401615c2a565b604051634a59bbff60e11b815260ff90911660048201526024016104cc565b614e606060830160408401615c2a565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614e916040830160208401615213565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612a6361430f565b606081471015614ee4573060405163cd78605960e01b81526004016104cc919061524c565b5f80856001600160a01b03168486604051614eff9190615692565b5f6040518083038185875af1925050503d805f8114614f39576040519150601f19603f3d011682016040523d82523d5f602084013e614f3e565b606091505b5091509150614f4e868383614f58565b9695505050505050565b606082614f6d57614f6882614fab565b611d04565b8151158015614f8457506001600160a01b0384163b155b15614fa45783604051639996b31560e01b81526004016104cc919061524c565b5080611d04565b805115614fbb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614fe090615412565b5f825580601f10614fef575050565b601f0160209004905f5260205f2090810190610d669190615048565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561505c575f8155600101615049565b5090565b8015158114610d66575f80fd5b803563ffffffff81168114615080575f80fd5b919050565b5f805f60608486031215615097575f80fd5b8335925060208401356150a981615060565b91506150b76040850161506d565b90509250925092565b5f602082840312156150d0575f80fd5b5035919050565b5f80604083850312156150e8575f80fd5b82356001600160401b038111156150fd575f80fd5b83016080818603121561510e575f80fd5b915061511c6020840161506d565b90509250929050565b5f8060408385031215615136575f80fd5b8235915061511c6020840161506d565b5f60208284031215615156575f80fd5b611d048261506d565b803561ffff81168114615080575f80fd5b80356001600160401b0381168114615080575f80fd5b5f805f8060808587031215615199575f80fd5b84356001600160401b038111156151ae575f80fd5b850160a081880312156151bf575f80fd5b93506151cd6020860161515f565b92506151db60408601615170565b9396929550929360600135925050565b5f80604083850312156151fc575f80fd5b6152058361506d565b946020939093013593505050565b5f60208284031215615223575f80fd5b611d0482615170565b5f806040838503121561523d575f80fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52602160045260245ffd5b6006811061528457615284615260565b9052565b5f5b838110156152a257818101518382015260200161528a565b50505f910152565b5f81518084526152c1816020860160208601615288565b601f01601f19169290920160200192915050565b602081526152e7602082018351615274565b5f602083015160e060408401526153026101008401826152aa565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610d66575f80fd5b5f8082840361016081121561537c575f80fd5b6101408082121561538b575f80fd5b849350830135905061539c81615355565b809150509250929050565b5f80602083850312156153b8575f80fd5b82356001600160401b03808211156153ce575f80fd5b818501915085601f8301126153e1575f80fd5b8135818111156153ef575f80fd5b866020828501011115615400575f80fd5b60209290920196919550909350505050565b600181811c9082168061542657607f821691505b60208210810361544457634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610ca88284615274565b602081525f611d0460208301846152aa565b5f6020828403121561547a575f80fd5b5051919050565b5f60208284031215615491575f80fd5b8135611d0481615355565b5f808335601e198436030181126154b1575f80fd5b8301803591506001600160401b038211156154ca575f80fd5b6020019150600581901b36038213156136a4575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615509575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561554957615549615513565b60405290565b604080519081016001600160401b038111828210171561554957615549615513565b604051601f8201601f191681016001600160401b038111828210171561559957615599615513565b604052919050565b5f6001600160401b038211156155b9576155b9615513565b50601f01601f191660200190565b5f82601f8301126155d6575f80fd5b81356155e96155e4826155a1565b615571565b8181528460208386010111156155fd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615629575f80fd5b615631615527565b82356001600160401b0380821115615647575f80fd5b615653368387016155c7565b83526020850135915080821115615668575f80fd5b50615675368286016155c7565b60208301525061568760408401615170565b604082015292915050565b5f8251615509818460208701615288565b601f8211156104d557805f5260205f20601f840160051c810160208510156156c85750805b601f840160051c820191505b81811015611641575f81556001016156d4565b81516001600160401b0381111561570057615700615513565b6157148161570e8454615412565b846156a3565b602080601f831160018114615747575f84156157305750858301515b5f19600386901b1c1916600185901b178555610eb4565b5f85815260208120601f198616915b8281101561577557888601518255948401946001909101908401615756565b508582101561579257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca857610ca86157a2565b5f63ffffffff8083168181036157e1576157e16157a2565b6001019392505050565b8082028115828204841417610ca857610ca86157a2565b5f8261581c57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061583557615835615260565b91905290565b5f60208083525f845461584d81615412565b806020870152604060018084165f811461586e576001811461588a576158b7565b60ff19851660408a0152604084151560051b8a010195506158b7565b895f5260205f205f5b858110156158ae5781548b8201860152908301908801615893565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611e8257611e826157a2565b6001600160401b03828116828216039080821115611e8257611e826157a2565b805161508081615060565b5f8060408385031215615930575f80fd5b82516001600160401b0380821115615946575f80fd5b9084019060608287031215615959575f80fd5b615961615527565b8251815260208084015161597481615355565b82820152604084015183811115615989575f80fd5b80850194505087601f85011261599d575f80fd5b835192506159ad6155e4846155a1565b83815288828587010111156159c0575f80fd5b6159cf84838301848801615288565b806040840152508195506159e4818801615914565b9450505050509250929050565b81810381811115610ca857610ca86157a2565b5f808335601e19843603018112615a19575f80fd5b8301803591506001600160401b03821115615a32575f80fd5b6020019150368190038213156136a4575f80fd5b5f8851615a57818460208d01615288565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615b0057615b006157a2565b505092915050565b5f8235603e19833603018112615509575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615b5a575f80fd5b615b6261554f565b615b6b8361506d565b81526020808401356001600160401b0380821115615b87575f80fd5b9085019036601f830112615b99575f80fd5b813581811115615bab57615bab615513565b8060051b9150615bbc848301615571565b8181529183018401918481019036841115615bd5575f80fd5b938501935b83851015615bff5784359250615bef83615355565b8282529385019390850190615bda565b94860194909452509295945050505050565b5f60208284031215615c21575f80fd5b611d048261515f565b5f60208284031215615c3a575f80fd5b813560ff81168114611d04575f80fd5b5f6001600160401b038083168181036157e1576157e16157a2565b5f60208284031215615c75575f80fd5b8151611d0481615060565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651615cc681602a850160208b01615288565b865190830190615cdd81602a840160208b01615288565b60c087901b6001600160c01b031916602a9290910191820152615d0f603282018660e01b6001600160e01b0319169052565b615d28603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615d4b818460208801615288565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615d7c818460208901615288565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615db7818460208801615288565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", + Bin: "0x608060405234801561000f575f80fd5b50604051615dcb380380615dcb83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615c7e8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101c1575f3560e01c80638280a25a116100f6578063ba3a4b971161009a578063ba3a4b97146103d9578063bc5fbfec146103ec578063bee0a03f14610413578063c974d1b614610426578063d5f20ff61461042e578063df93d8de1461044e578063e4a63c4014610458578063f74c607b1461047f578063fd7ac5e714610492575f80fd5b80638280a25a1461034357806393e245981461034b57806398f3e2b41461035e5780639e1bc4ef14610371578063a3a65e4814610384578063a9778a7a14610270578063afb9809614610397578063b771b3bc146103be575f80fd5b80633a1cfff6116101685780633a1cfff61461028c578063467ef06f1461029f5780634bee0040146102b25780635297fae6146102d357806360305d62146102e6578063620658561461030357806366435abf14610316578063732214f81461032957806376f7862114610330575f80fd5b80630118acc4146101c55780630322ed98146101da578063151d30d1146101ed5780631ec447241461020c57806320d91b7a1461021f57806325e1c776146102325780632e2194d81461024557806335455ded14610270575b5f80fd5b6101d86101d3366004614e5c565b6104a5565b005b6101d86101e8366004614e97565b6104da565b6101f5600a81565b60405160ff90911681526020015b60405180910390f35b6101d861021a366004614e5c565b6106dd565b6101d861022d366004614eae565b6106e8565b6101d8610240366004614efc565b610b65565b610258610253366004614e97565b610bd9565b6040516001600160401b039091168152602001610203565b61027961271081565b60405161ffff9091168152602001610203565b6101d861029a366004614e5c565b610c2d565b6101d86102ad366004614f1d565b610c38565b6102c56102c0366004614f5d565b610ce8565b604051908152602001610203565b6101d86102e1366004614fc2565b610d0f565b6102ee601481565b60405163ffffffff9091168152602001610203565b6102c5610311366004614fea565b610f6a565b610258610324366004614e97565b610f8a565b6102c55f81565b6101d861033e366004614e5c565b610f9e565b6101f5603081565b6101d8610359366004614e97565b610fc9565b6101d861036c366004614fc2565b611086565b6102c561037f366004615003565b611245565b6101d8610392366004614f1d565b611263565b6102c57f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6103cc6005600160991b0181565b6040516102039190615023565b6101d86103e7366004614e97565b6113e9565b6102c57fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b6101d8610421366004614e97565b6115c7565b6101f5601481565b61044161043c366004614e97565b6116e4565b60405161020391906150ac565b6102586202a30081565b6102c57f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0081565b6101d861048d366004615140565b611826565b6102c56104a036600461517e565b611905565b6104b083838361193d565b6104d557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f6104e3611c8a565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561051c5761051c615037565b600581111561052d5761052d615037565b8152602001600182018054610541906151e9565b80601f016020809104026020016040519081016040528092919081815260200182805461056d906151e9565b80156105b85780601f1061058f576101008083540402835291602001916105b8565b820191905f5260205f20905b81548152906001019060200180831161059b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561062357610623615037565b14610656575f8381526007830160205260409081902054905163170cc93360e21b81526104cc9160ff1690600401615221565b6005600160991b016001600160a01b031663ee5b48eb61067b8584606001515f611cae565b6040518263ffffffff1660e01b8152600401610697919061522f565b6020604051808303815f875af11580156106b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d79190615241565b50505050565b6106d783838361193d565b5f6106f1611c8a565b600981015490915060ff161561071a57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107819190615241565b8360200135146107aa576040516372b0a7e760e11b8152602084013560048201526024016104cc565b306107bb6060850160408601615258565b6001600160a01b0316146107f3576107d96060840160408501615258565b604051632f88120d60e21b81526004016104cc9190615023565b5f6108016060850185615273565b905090505f805b828163ffffffff161015610a67575f6108246060880188615273565b8363ffffffff1681811061083a5761083a6152b8565b905060200281019061084c91906152cc565b610855906153f0565b80516040519192505f91600888019161086d91615469565b9081526020016040518091039020541461089d57805160405163a41f772f60e01b81526104cc919060040161522f565b5f6002885f0135846040516020016108cc92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526108e691615469565b602060405180830381855afa158015610901573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109249190615241565b90508086600801835f015160405161093c9190615469565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff19166002178155825160019091019061097c90826154d2565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b0319909716929097169190911794909417169290921790915560030180546001600160401b03191690556109fa908561559c565b8251604051919550610a0b91615469565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610a60906155af565b9050610808565b50600483018190556001830154606490610a8b90600160401b900460ff16836155d1565b1015610aad57604051635943317f60e01b8152600481018290526024016104cc565b5f610ac3610aba86611cfd565b60400151611e08565b90505f610acf87611f95565b90505f600282604051610ae29190615469565b602060405180830381855afa158015610afd573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b209190615241565b9050828114610b4c57604051631872fc8d60e01b815260048101829052602481018490526044016104cc565b5050506009909201805460ff1916600117905550505050565b610b6e8261216a565b610b8e576040516330efa98b60e01b8152600481018390526024016104cc565b5f610b98836116e4565b5190506002816005811115610baf57610baf615037565b14610bcf578060405163170cc93360e21b81526004016104cc9190615221565b6106d78383612193565b5f80610be36123e1565b60030154610bf190846155e8565b9050801580610c0657506001600160401b0381115b15610c275760405163222d164360e21b8152600481018490526024016104cc565b92915050565b6106d7838383612405565b610c406125d0565b5f610c496123e1565b90505f80610c568461261a565b91509150610c638261216a565b610c6f57505050610cdd565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610c9d57610c9d615037565b03610cc2575f83815260088501602052604081208054919055610cc08282612954565b505b610cd881610cd38460400151610f6a565b6129c4565b505050505b610ce56129e2565b50565b5f610cf16125d0565b610cfd85858585612a08565b9050610d076129e2565b949350505050565b5f610d186123e1565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610d5157610d51615037565b6003811115610d6257610d62615037565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610dd8826116e4565b9050600183516003811115610def57610def615037565b14610e10578251604051633b0d540d60e21b81526104cc9190600401615607565b600481516005811115610e2557610e25615037565b03610e3b57610e3385612b6c565b505050505050565b5f80610e52610e4989611cfd565b60400151612d8c565b5091509150818414610e7f57846040015160405163089938b360e11b81526004016104cc91815260200190565b806001600160401b031683606001516001600160401b03161080610eb85750806001600160401b03168560a001516001600160401b0316115b15610ee157604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610f736123e1565b60030154610c27906001600160401b0384166155d1565b5f610f94826116e4565b6080015192915050565b610fa9838383612405565b6104d557604051635bff683f60e11b8152600481018490526024016104cc565b5f610fd26123e1565b90505f610fde836116e4565b5190506004816005811115610ff557610ff5615037565b14611015578060405163170cc93360e21b81526004016104cc9190615221565b5f8381526005830160205260409020546001600160a01b0316331461105057335b604051636e2ccd7560e11b81526004016104cc9190615023565b5f838152600883016020908152604080832080549084905560058601909252909120546106d7906001600160a01b031682612954565b61108e6125d0565b5f6110976123e1565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156110d0576110d0615037565b60038111156110e1576110e1615037565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561115a5761115a615037565b1461117b578051604051633b0d540d60e21b81526104cc9190600401615607565b600461118a82604001516116e4565b51600581111561119c5761119c615037565b1461122e575f6111ab85611cfd565b90505f806111bc8360400151612d8c565b5091509150818460400151146111e85760405163089938b360e11b8152600481018390526024016104cc565b806001600160401b03168460c001516001600160401b0316111561122a57604051632e19bc2d60e11b81526001600160401b03821660048201526024016104cc565b5050505b61123783612b6c565b50506112416129e2565b5050565b5f61124e6125d0565b611259833384612fe2565b9050610c276129e2565b5f61126c611c8a565b90505f8061128561127c85611cfd565b60400151613225565b91509150806112ab57604051632d07135360e01b815281151560048201526024016104cc565b5f828152600684016020526040902080546112c5906151e9565b90505f036112e95760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078501602052604090205460ff16600581111561130f5761130f615037565b14611342575f8281526007840160205260409081902054905163170cc93360e21b81526104cc9160ff1690600401615221565b5f828152600684016020526040812061135a91614dab565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6113f26123e1565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561142b5761142b615037565b600381111561143c5761143c615037565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156114b5576114b5615037565b141580156114d657506003815160038111156114d3576114d3615037565b14155b156114f7578051604051633b0d540d60e21b81526104cc9190600401615607565b5f61150582604001516116e4565b905080606001516001600160401b03165f03611537576040516339b894f960e21b8152600481018590526024016104cc565b6005600160991b016001600160a01b031663ee5b48eb611564846040015184606001518560800151611cae565b6040518263ffffffff1660e01b8152600401611580919061522f565b6020604051808303815f875af115801561159c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c09190615241565b5050505050565b5f6115d0611c8a565b5f83815260068201602052604090208054919250906115ee906151e9565b90505f036116125760405163089938b360e11b8152600481018390526024016104cc565b60015f83815260078301602052604090205460ff16600581111561163857611638615037565b1461166b575f8281526007820160205260409081902054905163170cc93360e21b81526104cc9160ff1690600401615221565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916116a49190600401615621565b6020604051808303815f875af11580156116c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d59190615241565b6116ec614de2565b5f6116f5611c8a565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff16600581111561172c5761172c615037565b600581111561173d5761173d615037565b8152602001600182018054611751906151e9565b80601f016020809104026020016040519081016040528092919081815260200182805461177d906151e9565b80156117c85780601f1061179f576101008083540402835291602001916117c8565b820191905f5260205f20905b8154815290600101906020018083116117ab57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061186f575080546001600160401b03808416911610155b1561188d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556118b884846133e1565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f8061190f611c8a565b90508060080184846040516119259291906156ab565b90815260200160405180910390205491505092915050565b5f806119476123e1565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561198057611980615037565b600381111561199157611991615037565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611a07826116e4565b9050600283516003811115611a1e57611a1e615037565b14611a3f578251604051633b0d540d60e21b81526104cc9190600401615607565b60208301516001600160a01b03163314611adb575f8281526005850160205260409020546001600160a01b03163314611a785733611036565b5f82815260058501602052604090205460a0820151611aa791600160b01b90046001600160401b0316906156ba565b6001600160401b0316421015611adb5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b600281516005811115611af057611af0615037565b03611c1e5760028401546080840151611b12916001600160401b0316906156ba565b6001600160401b0316421015611b465760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b8615611b5857611b568287612193565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611b91918491611b8c91906156da565b6133fb565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611bd284613545565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a315159450611c839350505050565b600481516005811115611c3357611c33615037565b03611c6757611c4183613545565b5f898152600786016020526040902055611c5a88612b6c565b6001945050505050611c83565b805160405163170cc93360e21b81526104cc9190600401615221565b9392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611d61573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d889190810190615705565b9150915080611daa57604051636b2f19e960e01b815260040160405180910390fd5b815115611dd0578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b031615611e01578160200151604051624de75d60e31b81526004016104cc9190615023565b5092915050565b5f8151602614611e3d57815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016104cc565b5f805b6002811015611e8c57611e548160016157d7565b611e5f9060086155d1565b61ffff16848281518110611e7557611e756152b8565b016020015160f81c901b9190911790600101611e40565b5061ffff811615611eb65760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015611f1157611ecd8160036157d7565b611ed89060086155d1565b63ffffffff1685611eea83600261559c565b81518110611efa57611efa6152b8565b016020015160f81c901b9190911790600101611eb9565b5063ffffffff811615611f3757604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015611f8c57611f4e81601f6157d7565b611f599060086155d1565b86611f6583600661559c565b81518110611f7557611f756152b8565b016020015160f81c901b9190911790600101611f3a565b50949350505050565b60605f80833560208501356014611fb187870160408901615258565b611fbe6060890189615273565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b61203f6060850185615273565b9050811015611e0157816120566060860186615273565b83818110612066576120666152b8565b905060200281019061207891906152cc565b61208290806157ea565b90506120916060870187615273565b848181106120a1576120a16152b8565b90506020028101906120b391906152cc565b6120bd90806157ea565b6120ca6060890189615273565b868181106120da576120da6152b8565b90506020028101906120ec91906152cc565b6120fa9060208101906157ea565b61210760608b018b615273565b88818110612117576121176152b8565b905060200281019061212991906152cc565b61213a906060810190604001614fea565b604051602001612150979695949392919061582c565b60408051601f198184030181529190529150600101612032565b5f806121746123e1565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156121de573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122059190810190615705565b915091508061222757604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228e9190615241565b8251146122b4578151604051636ba589a560e01b815260048101919091526024016104cc565b60208201516001600160a01b0316156122e5578160200151604051624de75d60e31b81526004016104cc9190615023565b5f806122f484604001516136c8565b9150915081871461231b5760405163089938b360e11b8152600481018890526024016104cc565b5f6123246123e1565b5f8981526005820160205260409020600101549091506001600160401b0390811690831611156123b7575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26123d6565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f8061240f6123e1565b90505f61241b866138b9565b90506124268661216a565b61243557600192505050611c83565b5f8681526005830160205260409020546001600160a01b0316331461245a5733611036565b5f86815260058301602052604090205460a082015161248991600160b01b90046001600160401b0316906156ba565b6001600160401b03168160c001516001600160401b031610156124d05760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104cc565b5f85156124e8576124e18786612193565b9050612506565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061252b90610f6a565b60a086015160c08701516040516001600160e01b031960e086901b16815261255b93929182918990600401615895565b602060405180830381865afa158015612576573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259a9190615241565b905080846008015f8a81526020019081526020015f205f8282546125be919061559c565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161261457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612623614de2565b5f61262c611c8a565b90505f8061263c61127c87611cfd565b91509150801561266357604051632d07135360e01b815281151560048201526024016104cc565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561269457612694615037565b60058111156126a5576126a5615037565b81526020016001820180546126b9906151e9565b80601f01602080910402602001604051908101604052809291908181526020018280546126e5906151e9565b80156127305780601f1061270757610100808354040283529160200191612730565b820191905f5260205f20905b81548152906001019060200180831161271357829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561279b5761279b615037565b141580156127bc57506001815160058111156127b9576127b9615037565b14155b156127dd57805160405163170cc93360e21b81526104cc9190600401615221565b6003815160058111156127f2576127f2615037565b036128005760048152612805565b600581525b83600801816020015160405161281b9190615469565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561285f5761285f615037565b02179055506020820151600182019061287890826154d2565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558051600581111561291d5761291d615037565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f61295d613b91565b80546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b1580156129a9575f80fd5b505af11580156129bb573d5f803e3d5ffd5b50505050505050565b61124182826129d1613b91565b546001600160a01b03169190613bb5565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f80612a126123e1565b600281015490915061ffff600160401b90910481169086161080612a3b575061271061ffff8616115b15612a5f57604051635f12e6c360e11b815261ffff861660048201526024016104cc565b60028101546001600160401b039081169085161015612a9b576040516202a06d60e11b81526001600160401b03851660048201526024016104cc565b8054831080612aad5750806001015483115b15612ace5760405163222d164360e21b8152600481018490526024016104cc565b5f612ad884613c14565b90505f612ae482610bd9565b90505f612af18983613c31565b5f818152600595909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b0398909816979097029690961787555050600190940180546001600160401b031916905550919392505050565b5f612b756123e1565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612bae57612bae615037565b6003811115612bbf57612bbf615037565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612c336140cb565b8260800151612c4291906156ba565b6001600160401b0316421015612c765760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104cc565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612d31575f84815260058701602052604090205461271090612ce390600160a01b900461ffff16856155d1565b612ced91906155e8565b915081866008015f8681526020019081526020015f205f828254612d11919061559c565b90915550612d21905082846157d7565b9050612d31856020015182612954565b612d468560200151610cd38760600151610f6a565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612dc357835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016104cc565b5f805b6002811015612e1257612dda8160016157d7565b612de59060086155d1565b61ffff16868281518110612dfb57612dfb6152b8565b016020015160f81c901b9190911790600101612dc6565b5061ffff811615612e3c5760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b6004811015612e9757612e538160036157d7565b612e5e9060086155d1565b63ffffffff1687612e7083600261559c565b81518110612e8057612e806152b8565b016020015160f81c901b9190911790600101612e3f565b5063ffffffff8116600314612ebf57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612f1457612ed681601f6157d7565b612ee19060086155d1565b88612eed83600661559c565b81518110612efd57612efd6152b8565b016020015160f81c901b9190911790600101612ec2565b505f805b6008811015612f7357612f2c8160076157d7565b612f379060086155d1565b6001600160401b031689612f4c83602661559c565b81518110612f5c57612f5c6152b8565b016020015160f81c901b9190911790600101612f18565b505f805b6008811015612fd257612f8b8160076157d7565b612f969060086155d1565b6001600160401b03168a612fab83602e61559c565b81518110612fbb57612fbb6152b8565b016020015160f81c901b9190911790600101612f77565b5091989097509095509350505050565b5f80612fec6123e1565b90505f612ffb61025385613c14565b90505f613007876116e4565b90506130128761216a565b613032576040516330efa98b60e01b8152600481018890526024016104cc565b60028151600581111561304757613047615037565b1461306857805160405163170cc93360e21b81526104cc9190600401615221565b5f82826080015161307991906156ba565b905083600201600a9054906101000a90046001600160401b031682604001516130a291906158c3565b6001600160401b0316816001600160401b031611156130df57604051636d51fe0560e11b81526001600160401b03821660048201526024016104cc565b5f806130eb8a846133fb565b915091505f8a8360405160200161311992919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260068b019093529120805491925060019160ff1916828002179055505f8181526006880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b5f80825160271461325b57825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044016104cc565b5f805b60028110156132aa576132728160016157d7565b61327d9060086155d1565b61ffff16858281518110613293576132936152b8565b016020015160f81c901b919091179060010161325e565b5061ffff8116156132d45760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b600481101561332f576132eb8160036157d7565b6132f69060086155d1565b63ffffffff168661330883600261559c565b81518110613318576133186152b8565b016020015160f81c901b91909117906001016132d7565b5063ffffffff811660021461335757604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156133ac5761336e81601f6157d7565b6133799060086155d1565b8761338583600661559c565b81518110613395576133956152b8565b016020015160f81c901b919091179060010161335a565b505f866026815181106133c1576133c16152b8565b016020015191976001600160f81b03199092161515965090945050505050565b6133e96140e6565b6133f282614131565b611241816141a5565b5f805f613406611c8a565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166134368582614201565b5f61344087614426565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6134908a858b611cae565b6040518263ffffffff1660e01b81526004016134ac919061522f565b6020604051808303815f875af11580156134c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ec9190615241565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061354f6123e1565b90505f61355f84604001516116e4565b90505f60038251600581111561357757613577615037565b1480613595575060048251600581111561359357613593615037565b145b156135a5575060c08101516135e2565b6002825160058111156135ba576135ba615037565b036135c65750426135e2565b815160405163170cc93360e21b81526104cc9190600401615221565b84608001516001600160401b0316816001600160401b03161161360957505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061362e90610f6a565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526136809493929188916001600160401b0390911690600401615895565b602060405180830381865afa15801561369b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136bf9190615241565b95945050505050565b5f808251602e146136fe57825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016104cc565b5f805b600281101561374d576137158160016157d7565b6137209060086155d1565b61ffff16858281518110613736576137366152b8565b016020015160f81c901b9190911790600101613701565b5061ffff8116156137775760405163407b587360e01b815261ffff821660048201526024016104cc565b5f805b60048110156137d25761378e8160036157d7565b6137999060086155d1565b63ffffffff16866137ab83600261559c565b815181106137bb576137bb6152b8565b016020015160f81c901b919091179060010161377a565b5063ffffffff8116156137f857604051635b60892f60e01b815260040160405180910390fd5b5f805b602081101561384d5761380f81601f6157d7565b61381a9060086155d1565b8761382683600661559c565b81518110613836576138366152b8565b016020015160f81c901b91909117906001016137fb565b505f805b60088110156138ac576138658160076157d7565b6138709060086155d1565b6001600160401b03168861388583602661559c565b81518110613895576138956152b8565b016020015160f81c901b9190911790600101613851565b5090969095509350505050565b6138c1614de2565b5f6138ca611c8a565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561390357613903615037565b600581111561391457613914615037565b8152602001600182018054613928906151e9565b80601f0160208091040260200160405190810160405280929190818152602001828054613954906151e9565b801561399f5780601f106139765761010080835404028352916020019161399f565b820191905f5260205f20905b81548152906001019060200180831161398257829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613a0d57613a0d615037565b14613a40575f8481526007830160205260409081902054905163170cc93360e21b81526104cc9160ff1690600401615221565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613a8457613a84615037565b021790555060208201516001820190613a9d90826154d2565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613b3a85826133fb565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab0090565b6040516001600160a01b038381166024830152604482018390526104d591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061448f565b5f610c2782613c21613b91565b546001600160a01b0316906144e7565b5f613c3a611c8a565b6009015460ff16613c5e57604051637fab81e560e01b815260040160405180910390fd5b5f613c67611c8a565b905042613c7a6060860160408701614fea565b6001600160401b0316111580613cb45750613c986202a3004261559c565b613ca86060860160408701614fea565b6001600160401b031610155b15613cee57613cc96060850160408601614fea565b604051635879da1360e11b81526001600160401b0390911660048201526024016104cc565b613d03613cfe60608601866158ee565b614648565b613d13613cfe60808601866158ee565b6030613d2260208601866157ea565b905014613d5457613d3660208501856157ea565b6040516326475b2f60e11b81526104cc925060040190815260200190565b613d5e84806157ea565b90505f03613d8b57613d7084806157ea565b604051633e08a12560e11b81526004016104cc929190615902565b5f60088201613d9a86806157ea565b604051613da89291906156ab565b90815260200160405180910390205414613de157613dc684806157ea565b60405163a41f772f60e01b81526004016104cc929190615902565b613deb835f614201565b6040805160e08101909152815481525f908190613ef79060208101613e1089806157ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613e58908a018a6157ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613ea160608a0160408b01614fea565b6001600160401b03168152602001613ebc60608a018a6158ee565b613ec590615930565b8152602001613ed760808a018a6158ee565b613ee090615930565b8152602001876001600160401b03168152506147b1565b5f82815260068601602052604090209193509150613f1582826154d2565b508160088401613f2588806157ea565b604051613f339291906156ab565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f6f90859060040161522f565b6020604051808303815f875af1158015613f8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613faf9190615241565b5f8481526007860160205260409020805460ff191660011790559050613fd587806157ea565b5f858152600787016020526040902060010191613ff39190836159f7565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b0316905560030180546001600160401b03191690558061405188806157ea565b60405161405f9291906156ab565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061409d9190614fea565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f6140d4611c8a565b600101546001600160401b0316919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661412f57604051631afcd79f60e31b815260040160405180910390fd5b565b6141396140e6565b6141428161499e565b61414a6149b7565b610ce56060820135608083013561416760c0850160a08601614fea565b61417760e0860160c08701615aab565b614188610100870160e08801615ac4565b6101008701356141a061014089016101208a01615258565b6149c7565b6141ad6140e6565b5f6141b6613b91565b90506001600160a01b0382166141e15781604051637330680360e01b81526004016104cc9190615023565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61420a611c8a565b90505f826001600160401b0316846001600160401b031611156142385761423183856156da565b9050614245565b61424284846156da565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806142a75750600184015481516142a3916001600160401b03169061559c565b8210155b156142cd576001600160401b0383166060820152818152604081015160208201526142ec565b82816060018181516142df91906156ba565b6001600160401b03169052505b60608101516142fc9060646158c3565b602082015160018601546001600160401b0392909216916143279190600160401b900460ff166155d1565b101561435757606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104cc565b856001600160401b031681604001818151614372919061559c565b9052506040810180516001600160401b03871691906143929083906157d7565b905250600184015460408201516064916143b791600160401b90910460ff16906155d1565b10156143de578060400151604051635943317f60e01b81526004016104cc91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614430611c8a565b5f848152600782016020526040902060020180549192509060089061446490600160401b90046001600160401b0316615ae4565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6144a36001600160a01b03841683614b5d565b905080515f141580156144c75750808060200190518101906144c59190615aff565b155b156104d55782604051635274afe760e01b81526004016104cc9190615023565b5f80836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016145159190615023565b602060405180830381865afa158015614530573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145549190615241565b905061456b6001600160a01b038516333086614b6a565b6040516370a0823160e01b81525f906001600160a01b038616906370a0823190614599903090600401615023565b602060405180830381865afa1580156145b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145d89190615241565b905081811161463e5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104cc565b6136bf82826157d7565b6146556020820182614f1d565b63ffffffff1615801561467557506146706020820182615273565b151590505b156146bc576146876020820182614f1d565b6146946020830183615273565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104cc565b6146c96020820182615273565b90506146d86020830183614f1d565b63ffffffff1611156146f1576146876020820182614f1d565b60015b6147016020830183615273565b9050811015611241576147176020830183615273565b6147226001846157d7565b818110614731576147316152b8565b90506020020160208101906147469190615258565b6001600160a01b031661475c6020840184615273565b8381811061476c5761476c6152b8565b90506020020160208101906147819190615258565b6001600160a01b031610156147a957604051630dbc8d5f60e31b815260040160405180910390fd5b6001016146f4565b5f60608260400151516030146147da5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861481b988a986001989297929690959094909390929101615b1a565b60405160208183030381529060405290505f5b8460800151602001515181101561488d5781856080015160200151828151811061485a5761485a6152b8565b6020026020010151604051602001614873929190615bd4565b60408051601f19818403018152919052915060010161482e565b5060a08401518051602091820151516040516148ad938593929101615c05565b60405160208183030381529060405290505f5b8460a00151602001515181101561491f57818560a001516020015182815181106148ec576148ec6152b8565b6020026020010151604051602001614905929190615bd4565b60408051601f1981840301815291905291506001016148c0565b5060c0840151604051614936918391602001615c40565b60405160208183030381529060405290506002816040516149579190615469565b602060405180830381855afa158015614972573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906149959190615241565b94909350915050565b6149a66140e6565b6149ae614ba3565b610ce581614bab565b6149bf6140e6565b61412f614c8e565b6149cf6140e6565b5f6149d86123e1565b905061ffff851615806149f0575061271061ffff8616115b15614a1457604051635f12e6c360e11b815261ffff861660048201526024016104cc565b86881115614a385760405163222d164360e21b8152600481018990526024016104cc565b60ff84161580614a4b5750600a60ff8516115b15614a6e5760405163170db35960e31b815260ff851660048201526024016104cc565b614a766140cb565b6001600160401b0316866001600160401b03161015614ab2576040516202a06d60e11b81526001600160401b03871660048201526024016104cc565b825f03614ad25760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b6060611c8383835f614c96565b6040516001600160a01b0384811660248301528381166044830152606482018390526106d79186918216906323b872dd90608401613be2565b61412f6140e6565b614bb36140e6565b5f614bbc611c8a565b8235815590506014614bd46060840160408501615ac4565b60ff161180614bf35750614bee6060830160408401615ac4565b60ff16155b15614c2757614c086060830160408401615ac4565b604051634a59bbff60e11b815260ff90911660048201526024016104cc565b614c376060830160408401615ac4565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614c686040830160208401614fea565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b6129e26140e6565b606081471015614cbb573060405163cd78605960e01b81526004016104cc9190615023565b5f80856001600160a01b03168486604051614cd69190615469565b5f6040518083038185875af1925050503d805f8114614d10576040519150601f19603f3d011682016040523d82523d5f602084013e614d15565b606091505b5091509150614d25868383614d2f565b9695505050505050565b606082614d4457614d3f82614d82565b611c83565b8151158015614d5b57506001600160a01b0384163b155b15614d7b5783604051639996b31560e01b81526004016104cc9190615023565b5080611c83565b805115614d925780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614db7906151e9565b5f825580601f10614dc6575050565b601f0160209004905f5260205f2090810190610ce59190614e1f565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614e33575f8155600101614e20565b5090565b8015158114610ce5575f80fd5b803563ffffffff81168114614e57575f80fd5b919050565b5f805f60608486031215614e6e575f80fd5b833592506020840135614e8081614e37565b9150614e8e60408501614e44565b90509250925092565b5f60208284031215614ea7575f80fd5b5035919050565b5f8060408385031215614ebf575f80fd5b82356001600160401b03811115614ed4575f80fd5b830160808186031215614ee5575f80fd5b9150614ef360208401614e44565b90509250929050565b5f8060408385031215614f0d575f80fd5b82359150614ef360208401614e44565b5f60208284031215614f2d575f80fd5b611c8382614e44565b803561ffff81168114614e57575f80fd5b80356001600160401b0381168114614e57575f80fd5b5f805f8060808587031215614f70575f80fd5b84356001600160401b03811115614f85575f80fd5b850160a08188031215614f96575f80fd5b9350614fa460208601614f36565b9250614fb260408601614f47565b9396929550929360600135925050565b5f8060408385031215614fd3575f80fd5b614fdc83614e44565b946020939093013593505050565b5f60208284031215614ffa575f80fd5b611c8382614f47565b5f8060408385031215615014575f80fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52602160045260245ffd5b6006811061505b5761505b615037565b9052565b5f5b83811015615079578181015183820152602001615061565b50505f910152565b5f815180845261509881602086016020860161505f565b601f01601f19169290920160200192915050565b602081526150be60208201835161504b565b5f602083015160e060408401526150d9610100840182615081565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610ce5575f80fd5b5f80828403610160811215615153575f80fd5b61014080821215615162575f80fd5b84935083013590506151738161512c565b809150509250929050565b5f806020838503121561518f575f80fd5b82356001600160401b03808211156151a5575f80fd5b818501915085601f8301126151b8575f80fd5b8135818111156151c6575f80fd5b8660208285010111156151d7575f80fd5b60209290920196919550909350505050565b600181811c908216806151fd57607f821691505b60208210810361521b57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c27828461504b565b602081525f611c836020830184615081565b5f60208284031215615251575f80fd5b5051919050565b5f60208284031215615268575f80fd5b8135611c838161512c565b5f808335601e19843603018112615288575f80fd5b8301803591506001600160401b038211156152a1575f80fd5b6020019150600581901b360382131561353e575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126152e0575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715615320576153206152ea565b60405290565b604080519081016001600160401b0381118282101715615320576153206152ea565b604051601f8201601f191681016001600160401b0381118282101715615370576153706152ea565b604052919050565b5f6001600160401b03821115615390576153906152ea565b50601f01601f191660200190565b5f82601f8301126153ad575f80fd5b81356153c06153bb82615378565b615348565b8181528460208386010111156153d4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615400575f80fd5b6154086152fe565b82356001600160401b038082111561541e575f80fd5b61542a3683870161539e565b8352602085013591508082111561543f575f80fd5b5061544c3682860161539e565b60208301525061545e60408401614f47565b604082015292915050565b5f82516152e081846020870161505f565b601f8211156104d557805f5260205f20601f840160051c8101602085101561549f5750805b601f840160051c820191505b818110156115c0575f81556001016154ab565b5f19600383901b1c191660019190911b1790565b81516001600160401b038111156154eb576154eb6152ea565b6154ff816154f984546151e9565b8461547a565b602080601f83116001811461552d575f841561551b5750858301515b61552585826154be565b865550610e33565b5f85815260208120601f198616915b8281101561555b5788860151825594840194600190910190840161553c565b508582101561557857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c2757610c27615588565b5f63ffffffff8083168181036155c7576155c7615588565b6001019392505050565b8082028115828204841417610c2757610c27615588565b5f8261560257634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061561b5761561b615037565b91905290565b5f60208083525f8454615633816151e9565b806020870152604060018084165f811461565457600181146156705761569d565b60ff19851660408a0152604084151560051b8a0101955061569d565b895f5260205f205f5b858110156156945781548b8201860152908301908801615679565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611e0157611e01615588565b6001600160401b03828116828216039080821115611e0157611e01615588565b8051614e5781614e37565b5f8060408385031215615716575f80fd5b82516001600160401b038082111561572c575f80fd5b908401906060828703121561573f575f80fd5b6157476152fe565b8251815260208084015161575a8161512c565b8282015260408401518381111561576f575f80fd5b80850194505087601f850112615783575f80fd5b835192506157936153bb84615378565b83815288828587010111156157a6575f80fd5b6157b58483830184880161505f565b806040840152508195506157ca8188016156fa565b9450505050509250929050565b81810381811115610c2757610c27615588565b5f808335601e198436030181126157ff575f80fd5b8301803591506001600160401b03821115615818575f80fd5b60200191503681900382131561353e575f80fd5b5f885161583d818460208d0161505f565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b038181168382160280821691908281146158e6576158e6615588565b505092915050565b5f8235603e198336030181126152e0575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615940575f80fd5b615948615326565b61595183614e44565b81526020808401356001600160401b038082111561596d575f80fd5b9085019036601f83011261597f575f80fd5b813581811115615991576159916152ea565b8060051b91506159a2848301615348565b81815291830184019184810190368411156159bb575f80fd5b938501935b838510156159e557843592506159d58361512c565b82825293850193908501906159c0565b94860194909452509295945050505050565b6001600160401b03831115615a0e57615a0e6152ea565b615a2283615a1c83546151e9565b8361547a565b5f601f841160018114615a4e575f8515615a3c5750838201355b615a4686826154be565b8455506115c0565b5f83815260208120601f198716915b82811015615a7d5786850135825560209485019460019092019101615a5d565b5086821015615a99575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215615abb575f80fd5b611c8382614f36565b5f60208284031215615ad4575f80fd5b813560ff81168114611c83575f80fd5b5f6001600160401b038083168181036155c7576155c7615588565b5f60208284031215615b0f575f80fd5b8151611c8381614e37565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651615b6081602a850160208b0161505f565b865190830190615b7781602a840160208b0161505f565b60c087901b6001600160c01b031916602a9290910191820152615ba9603282018660e01b6001600160e01b0319169052565b615bc2603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615be581846020880161505f565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615c1681846020890161505f565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615c5181846020880161505f565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index eb53a49c9..55b82ba38 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -92,7 +92,7 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BIPS_CONVERSION_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceInitializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"weightToValueFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitUptimeProof\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UptimeUpdated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"uptime\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"DelegatorIneligibleForRewards\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationFee\",\"inputs\":[{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegationID\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumDelegatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMinStakeDuration\",\"inputs\":[{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidNonce\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeAmount\",\"inputs\":[{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidStakeMultiplier\",\"inputs\":[{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MaxWeightExceeded\",\"inputs\":[{\"name\":\"newValidatorWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"MinStakeDurationNotPassed\",\"inputs\":[{\"name\":\"endTime\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedOwner\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"type\":\"error\",\"name\":\"ValidatorIneligibleForRewards\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotPoS\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroWeightToValueFactor\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615c4c380380615c4c83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615aff8061014d5f395ff3fe6080604052600436106101b5575f3560e01c80638280a25a116100ea578063ba3a4b971161008e578063ba3a4b97146104dc578063bc5fbfec146104fb578063bee0a03f1461052e578063c257a0f51461054d578063c599e24f1461056c578063c974d1b61461057f578063d5f20ff614610593578063df93d8de146105bf578063fd7ac5e7146105d5575f80fd5b80638280a25a1461040b57806393e245981461041f57806398f3e2b41461043e578063a3a65e481461045d578063a9778a7a146102df578063af2f5feb1461047c578063afb980961461048f578063b771b3bc146104c2575f80fd5b806335455ded1161015c57806335455ded146102df5780633a1cfff614610307578063467ef06f146103265780635297fae61461034557806360305d6214610364578063620658561461038d57806366435abf146103ba578063732214f8146103d957806376f78621146103ec575f80fd5b80630118acc4146101b95780630322ed98146101da578063151d30d1146101f95780631ec447241461022457806320d91b7a1461024357806325e1c776146102625780632e2194d814610281578063329c3e12146102b8575b5f80fd5b3480156101c4575f80fd5b506101d86101d3366004614e19565b6105f4565b005b3480156101e5575f80fd5b506101d86101f4366004614e54565b610629565b348015610204575f80fd5b5061020d600a81565b60405160ff90911681526020015b60405180910390f35b34801561022f575f80fd5b506101d861023e366004614e19565b61082c565b34801561024e575f80fd5b506101d861025d366004614e6b565b610837565b34801561026d575f80fd5b506101d861027c366004614eb9565b610d35565b34801561028c575f80fd5b506102a061029b366004614e54565b610da9565b6040516001600160401b03909116815260200161021b565b3480156102c3575f80fd5b506102d26001600160991b0181565b60405161021b9190614eda565b3480156102ea575f80fd5b506102f461271081565b60405161ffff909116815260200161021b565b348015610312575f80fd5b506101d8610321366004614e19565b610dfd565b348015610331575f80fd5b506101d8610340366004614eee565b610e08565b348015610350575f80fd5b506101d861035f366004614f07565b610eb8565b34801561036f575f80fd5b50610378601481565b60405163ffffffff909116815260200161021b565b348015610398575f80fd5b506103ac6103a7366004614f45565b611113565b60405190815260200161021b565b3480156103c5575f80fd5b506102a06103d4366004614e54565b611133565b3480156103e4575f80fd5b506103ac5f81565b3480156103f7575f80fd5b506101d8610406366004614e19565b611147565b348015610416575f80fd5b5061020d603081565b34801561042a575f80fd5b506101d8610439366004614e54565b611172565b348015610449575f80fd5b506101d8610458366004614f07565b61122f565b348015610468575f80fd5b506101d8610477366004614eee565b6113ee565b6103ac61048a366004614f6f565b611574565b34801561049a575f80fd5b506103ac7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104cd575f80fd5b506102d26005600160991b0181565b3480156104e7575f80fd5b506101d86104f6366004614e54565b61159a565b348015610506575f80fd5b506103ac7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b348015610539575f80fd5b506101d8610548366004614e54565b611778565b348015610558575f80fd5b506101d8610567366004614fc3565b611895565b6103ac61057a366004614e54565b611972565b34801561058a575f80fd5b5061020d601481565b34801561059e575f80fd5b506105b26105ad366004614e54565b611995565b60405161021b919061504f565b3480156105ca575f80fd5b506102a06202a30081565b3480156105e0575f80fd5b506103ac6105ef3660046150cf565b611ad7565b6105ff838383611b0f565b61062457604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f610632611e55565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561066b5761066b614fda565b600581111561067c5761067c614fda565b81526020016001820180546106909061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc9061513a565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561077257610772614fda565b146107a5575f8381526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b6005600160991b016001600160a01b031663ee5b48eb6107ca8584606001515f611e79565b6040518263ffffffff1660e01b81526004016107e6919061517a565b6020604051808303815f875af1158015610802573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610826919061518c565b50505050565b610826838383611b0f565b5f610840611e55565b600981015490915060ff161561086957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d0919061518c565b8360200135146108f9576040516372b0a7e760e11b81526020840135600482015260240161061b565b3061090a60608501604086016151b7565b6001600160a01b0316146109425761092860608401604085016151b7565b604051632f88120d60e21b815260040161061b9190614eda565b5f61095060608501856151d2565b905090505f805b828163ffffffff161015610c37575f61097360608801886151d2565b8363ffffffff1681811061098957610989615217565b905060200281019061099b919061522b565b6109a49061534f565b80516040519192505f9160088801916109bc916153c8565b908152602001604051809103902054146109ec57805160405163a41f772f60e01b815261061b919060040161517a565b5f6002885f013584604051602001610a1b92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a35916153c8565b602060405180830381855afa158015610a50573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a73919061518c565b90508086600801835f0151604051610a8b91906153c8565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff19166001836005811115610b0d57610b0d614fda565b021790555060208201516001820190610b26908261541d565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610bca9116856154ec565b8251604051919550610bdb916153c8565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610c30906154ff565b9050610957565b50600483018190556001830154606490610c5b90600160401b900460ff1683615521565b1015610c7d57604051635943317f60e01b81526004810182905260240161061b565b5f610c93610c8a86611ec8565b60400151611fd3565b90505f610c9f87612160565b90505f600282604051610cb291906153c8565b602060405180830381855afa158015610ccd573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cf0919061518c565b9050828114610d1c57604051631872fc8d60e01b8152600481018290526024810184905260440161061b565b5050506009909201805460ff1916600117905550505050565b610d3e82612335565b610d5e576040516330efa98b60e01b81526004810183905260240161061b565b5f610d6883611995565b5190506002816005811115610d7f57610d7f614fda565b14610d9f578060405163170cc93360e21b815260040161061b919061516c565b610826838361235e565b5f80610db36125ac565b60030154610dc19084615538565b9050801580610dd657506001600160401b0381115b15610df75760405163222d164360e21b81526004810184905260240161061b565b92915050565b6108268383836125d0565b610e1061279b565b5f610e196125ac565b90505f80610e26846127e5565b91509150610e3382612335565b610e3f57505050610ead565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610e6d57610e6d614fda565b03610e92575f83815260088501602052604081208054919055610e908282612b1f565b505b610ea881610ea38460400151611113565b612b7d565b505050505b610eb5612b90565b50565b5f610ec16125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610efa57610efa614fda565b6003811115610f0b57610f0b614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610f8182611995565b9050600183516003811115610f9857610f98614fda565b14610fb9578251604051633b0d540d60e21b815261061b9190600401615557565b600481516005811115610fce57610fce614fda565b03610fe457610fdc85612bb6565b505050505050565b5f80610ffb610ff289611ec8565b60400151612dd6565b509150915081841461102857846040015160405163089938b360e11b815260040161061b91815260200190565b806001600160401b031683606001516001600160401b031610806110615750806001600160401b03168560a001516001600160401b0316115b1561108a57604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61111c6125ac565b60030154610df7906001600160401b038416615521565b5f61113d82611995565b6080015192915050565b6111528383836125d0565b61062457604051635bff683f60e11b81526004810184905260240161061b565b5f61117b6125ac565b90505f61118783611995565b519050600481600581111561119e5761119e614fda565b146111be578060405163170cc93360e21b815260040161061b919061516c565b5f8381526005830160205260409020546001600160a01b031633146111f957335b604051636e2ccd7560e11b815260040161061b9190614eda565b5f83815260088301602090815260408083208054908490556005860190925290912054610826906001600160a01b031682612b1f565b61123761279b565b5f6112406125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561127957611279614fda565b600381111561128a5761128a614fda565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561130357611303614fda565b14611324578051604051633b0d540d60e21b815261061b9190600401615557565b60046113338260400151611995565b51600581111561134557611345614fda565b146113d7575f61135485611ec8565b90505f806113658360400151612dd6565b5091509150818460400151146113915760405163089938b360e11b81526004810183905260240161061b565b806001600160401b03168460c001516001600160401b031611156113d357604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5050505b6113e083612bb6565b50506113ea612b90565b5050565b5f6113f7611e55565b90505f8061141061140785611ec8565b6040015161302c565b915091508061143657604051632d07135360e01b8152811515600482015260240161061b565b5f828152600684016020526040902080546114509061513a565b90505f036114745760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078501602052604090205460ff16600581111561149a5761149a614fda565b146114cd575f8281526007840160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068401602052604081206114e591614d6d565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f61157d61279b565b611589848484346131e8565b9050611593612b90565b9392505050565b5f6115a36125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156115dc576115dc614fda565b60038111156115ed576115ed614fda565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561166657611666614fda565b14158015611687575060038151600381111561168457611684614fda565b14155b156116a8578051604051633b0d540d60e21b815261061b9190600401615557565b5f6116b68260400151611995565b905080606001516001600160401b03165f036116e8576040516339b894f960e21b81526004810185905260240161061b565b6005600160991b016001600160a01b031663ee5b48eb611715846040015184606001518560800151611e79565b6040518263ffffffff1660e01b8152600401611731919061517a565b6020604051808303815f875af115801561174d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611771919061518c565b5050505050565b5f611781611e55565b5f838152600682016020526040902080549192509061179f9061513a565b90505f036117c35760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078301602052604090205460ff1660058111156117e9576117e9614fda565b1461181c575f8281526007820160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916118559190600401615571565b6020604051808303815f875af1158015611871573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610624919061518c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118de575080546001600160401b03808416911610155b156118fc5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561192683613394565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f61197b61279b565b6119868233346133a5565b9050611990612b90565b919050565b61199d614da4565b5f6119a6611e55565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156119dd576119dd614fda565b60058111156119ee576119ee614fda565b8152602001600182018054611a029061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2e9061513a565b8015611a795780601f10611a5057610100808354040283529160200191611a79565b820191905f5260205f20905b815481529060010190602001808311611a5c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b5f80611ae1611e55565b9050806008018484604051611af79291906155fb565b90815260200160405180910390205491505092915050565b5f80611b196125ac565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b5257611b52614fda565b6003811115611b6357611b63614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611bd982611995565b9050600283516003811115611bf057611bf0614fda565b14611c11578251604051633b0d540d60e21b815261061b9190600401615557565b60208301516001600160a01b03163314611cad575f8281526005850160205260409020546001600160a01b03163314611c4a57336111df565b5f82815260058501602052604090205460a0820151611c7991600160b01b90046001600160401b03169061560a565b6001600160401b0316421015611cad5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b600281516005811115611cc257611cc2614fda565b03611df05760028401546080840151611ce4916001600160401b03169061560a565b6001600160401b0316421015611d185760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b8615611d2a57611d28828761235e565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611d63918491611d5e919061562a565b613677565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611da4846137c1565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506115939350505050565b600481516005811115611e0557611e05614fda565b03611e3957611e13836137c1565b5f898152600786016020526040902055611e2c88612bb6565b6001945050505050611593565b805160405163170cc93360e21b815261061b919060040161516c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611f2c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f539190810190615655565b9150915080611f7557604051636b2f19e960e01b815260040160405180910390fd5b815115611f9b578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b031615611fcc578160200151604051624de75d60e31b815260040161061b9190614eda565b5092915050565b5f815160261461200857815160405163cc92daa160e01b815263ffffffff90911660048201526026602482015260440161061b565b5f805b60028110156120575761201f816001615727565b61202a906008615521565b61ffff1684828151811061204057612040615217565b016020015160f81c901b919091179060010161200b565b5061ffff8116156120815760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b60048110156120dc57612098816003615727565b6120a3906008615521565b63ffffffff16856120b58360026154ec565b815181106120c5576120c5615217565b016020015160f81c901b9190911790600101612084565b5063ffffffff81161561210257604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156121575761211981601f615727565b612124906008615521565b866121308360066154ec565b8151811061214057612140615217565b016020015160f81c901b9190911790600101612105565b50949350505050565b60605f8083356020850135601461217c878701604089016151b7565b61218960608901896151d2565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b61220a60608501856151d2565b9050811015611fcc578161222160608601866151d2565b8381811061223157612231615217565b9050602002810190612243919061522b565b61224d908061573a565b905061225c60608701876151d2565b8481811061226c5761226c615217565b905060200281019061227e919061522b565b612288908061573a565b61229560608901896151d2565b868181106122a5576122a5615217565b90506020028101906122b7919061522b565b6122c590602081019061573a565b6122d260608b018b6151d2565b888181106122e2576122e2615217565b90506020028101906122f4919061522b565b612305906060810190604001614f45565b60405160200161231b979695949392919061577c565b60408051601f1981840301815291905291506001016121fd565b5f8061233f6125ac565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156123a9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123d09190810190615655565b91509150806123f257604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612459919061518c565b82511461247f578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b0316156124b0578160200151604051624de75d60e31b815260040161061b9190614eda565b5f806124bf8460400151613944565b915091508187146124e65760405163089938b360e11b81526004810188905260240161061b565b5f6124ef6125ac565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612582575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26125a1565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806125da6125ac565b90505f6125e686613b35565b90506125f186612335565b61260057600192505050611593565b5f8681526005830160205260409020546001600160a01b0316331461262557336111df565b5f86815260058301602052604090205460a082015161265491600160b01b90046001600160401b03169061560a565b6001600160401b03168160c001516001600160401b0316101561269b5760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161061b565b5f85156126b3576126ac878661235e565b90506126d1565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906126f690611113565b60a086015160c08701516040516001600160e01b031960e086901b168152612726939291829189906004016157e5565b602060405180830381865afa158015612741573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612765919061518c565b905080846008015f8a81526020019081526020015f205f82825461278991906154ec565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016127df57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6127ee614da4565b5f6127f7611e55565b90505f8061280761140787611ec8565b91509150801561282e57604051632d07135360e01b8152811515600482015260240161061b565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561285f5761285f614fda565b600581111561287057612870614fda565b81526020016001820180546128849061513a565b80601f01602080910402602001604051908101604052809291908181526020018280546128b09061513a565b80156128fb5780601f106128d2576101008083540402835291602001916128fb565b820191905f5260205f20905b8154815290600101906020018083116128de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561296657612966614fda565b14158015612987575060018151600581111561298457612984614fda565b14155b156129a857805160405163170cc93360e21b815261061b919060040161516c565b6003815160058111156129bd576129bd614fda565b036129cb57600481526129d0565b600581525b8360080181602001516040516129e691906153c8565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612a2a57612a2a614fda565b021790555060208201516001820190612a43908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b0319169190921617905580516005811115612ae857612ae8614fda565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612b6b575f80fd5b505af1158015610fdc573d5f803e3d5ffd5b6113ea6001600160a01b03831682613e0d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612bbf6125ac565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612bf857612bf8614fda565b6003811115612c0957612c09614fda565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612c7d613ea0565b8260800151612c8c919061560a565b6001600160401b0316421015612cc05760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612d7b575f84815260058701602052604090205461271090612d2d90600160a01b900461ffff1685615521565b612d379190615538565b915081866008015f8681526020019081526020015f205f828254612d5b91906154ec565b90915550612d6b90508284615727565b9050612d7b856020015182612b1f565b612d908560200151610ea38760600151611113565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612e0d57835160405163cc92daa160e01b815263ffffffff90911660048201526036602482015260440161061b565b5f805b6002811015612e5c57612e24816001615727565b612e2f906008615521565b61ffff16868281518110612e4557612e45615217565b016020015160f81c901b9190911790600101612e10565b5061ffff811615612e865760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015612ee157612e9d816003615727565b612ea8906008615521565b63ffffffff1687612eba8360026154ec565b81518110612eca57612eca615217565b016020015160f81c901b9190911790600101612e89565b5063ffffffff8116600314612f0957604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612f5e57612f2081601f615727565b612f2b906008615521565b88612f378360066154ec565b81518110612f4757612f47615217565b016020015160f81c901b9190911790600101612f0c565b505f805b6008811015612fbd57612f76816007615727565b612f81906008615521565b6001600160401b031689612f968360266154ec565b81518110612fa657612fa6615217565b016020015160f81c901b9190911790600101612f62565b505f805b600881101561301c57612fd5816007615727565b612fe0906008615521565b6001600160401b03168a612ff583602e6154ec565b8151811061300557613005615217565b016020015160f81c901b9190911790600101612fc1565b5091989097509095509350505050565b5f80825160271461306257825160405163cc92daa160e01b815263ffffffff90911660048201526027602482015260440161061b565b5f805b60028110156130b157613079816001615727565b613084906008615521565b61ffff1685828151811061309a5761309a615217565b016020015160f81c901b9190911790600101613065565b5061ffff8116156130db5760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613136576130f2816003615727565b6130fd906008615521565b63ffffffff168661310f8360026154ec565b8151811061311f5761311f615217565b016020015160f81c901b91909117906001016130de565b5063ffffffff811660021461315e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156131b35761317581601f615727565b613180906008615521565b8761318c8360066154ec565b8151811061319c5761319c615217565b016020015160f81c901b9190911790600101613161565b505f866026815181106131c8576131c8615217565b016020015191976001600160f81b03199092161515965090945050505050565b5f806131f26125ac565b600281015490915061ffff600160401b9091048116908616108061321b575061271061ffff8616115b1561323f57604051635f12e6c360e11b815261ffff8616600482015260240161061b565b60028101546001600160401b03908116908516101561327b576040516202a06d60e11b81526001600160401b038516600482015260240161061b565b805483108061328d5750806001015483115b156132ae5760405163222d164360e21b81526004810184905260240161061b565b825f6132b982610da9565b90505f6132c68983613ebb565b905060405180608001604052806132da3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040808701919091525f60609687018190528881526005909b018352998a902086518154938801519b8801518316600160b01b0267ffffffffffffffff60b01b199c909516600160a01b026001600160b01b0319909416951694909417919091179890981617815591015160019091018054919095166001600160401b0319909116179093555090915050949350505050565b61339c614418565b610eb581614463565b5f806133af6125ac565b90505f6133bb84610da9565b90505f6133c787611995565b90506133d287612335565b6133f2576040516330efa98b60e01b81526004810188905260240161061b565b60028151600581111561340757613407614fda565b1461342857805160405163170cc93360e21b815261061b919060040161516c565b5f828260800151613439919061560a565b905083600201600a9054906101000a90046001600160401b031682604001516134629190615813565b6001600160401b0316816001600160401b0316111561349f57604051636d51fe0560e11b81526001600160401b038216600482015260240161061b565b5f806134ab8a84613677565b915091505f8a836040516020016134d992919091825260c01b6001600160c01b031916602082015260280190565b60408051601f19818403018152828252805160209091012060e08301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905290881660a085015260c090930183905284835260068b01909152902081518154829060ff1916600183600381111561356c5761356c614fda565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002909501805460808089015160a08a015160c0909a01516001600160401b03998a166001600160801b031990941693909317600160401b918a1691909102176001600160801b0316600160801b998916999099026001600160c01b031698909817600160c01b91881691909102179055815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f805f613682611e55565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166136b285826144d7565b5f6136bc876146fc565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb61370c8a858b611e79565b6040518263ffffffff1660e01b8152600401613728919061517a565b6020604051808303815f875af1158015613744573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613768919061518c565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806137cb6125ac565b90505f6137db8460400151611995565b90505f6003825160058111156137f3576137f3614fda565b1480613811575060048251600581111561380f5761380f614fda565b145b15613821575060c081015161385e565b60028251600581111561383657613836614fda565b0361384257504261385e565b815160405163170cc93360e21b815261061b919060040161516c565b84608001516001600160401b0316816001600160401b03161161388557505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906138aa90611113565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526138fc9493929188916001600160401b03909116906004016157e5565b602060405180830381865afa158015613917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061393b919061518c565b95945050505050565b5f808251602e1461397a57825160405163cc92daa160e01b815263ffffffff9091166004820152602e602482015260440161061b565b5f805b60028110156139c957613991816001615727565b61399c906008615521565b61ffff168582815181106139b2576139b2615217565b016020015160f81c901b919091179060010161397d565b5061ffff8116156139f35760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015613a4e57613a0a816003615727565b613a15906008615521565b63ffffffff1686613a278360026154ec565b81518110613a3757613a37615217565b016020015160f81c901b91909117906001016139f6565b5063ffffffff811615613a7457604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613ac957613a8b81601f615727565b613a96906008615521565b87613aa28360066154ec565b81518110613ab257613ab2615217565b016020015160f81c901b9190911790600101613a77565b505f805b6008811015613b2857613ae1816007615727565b613aec906008615521565b6001600160401b031688613b018360266154ec565b81518110613b1157613b11615217565b016020015160f81c901b9190911790600101613acd565b5090969095509350505050565b613b3d614da4565b5f613b46611e55565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613b7f57613b7f614fda565b6005811115613b9057613b90614fda565b8152602001600182018054613ba49061513a565b80601f0160208091040260200160405190810160405280929190818152602001828054613bd09061513a565b8015613c1b5780601f10613bf257610100808354040283529160200191613c1b565b820191905f5260205f20905b815481529060010190602001808311613bfe57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613c8957613c89614fda565b14613cbc575f8481526007830160205260409081902054905163170cc93360e21b815261061b9160ff169060040161516c565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613d0057613d00614fda565b021790555060208201516001820190613d19908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613db68582613677565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613e30573060405163cd78605960e01b815260040161061b9190614eda565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613e79576040519150601f19603f3d011682016040523d82523d5f602084013e613e7e565b606091505b505090508061062457604051630a12f52160e11b815260040160405180910390fd5b5f613ea9611e55565b600101546001600160401b0316919050565b5f613ec4611e55565b6009015460ff16613ee857604051637fab81e560e01b815260040160405180910390fd5b5f613ef1611e55565b905042613f046060860160408701614f45565b6001600160401b0316111580613f3e5750613f226202a300426154ec565b613f326060860160408701614f45565b6001600160401b031610155b15613f7857613f536060850160408601614f45565b604051635879da1360e11b81526001600160401b03909116600482015260240161061b565b613f8d613f88606086018661583e565b614765565b613f9d613f88608086018661583e565b6030613fac602086018661573a565b905014613fde57613fc0602085018561573a565b6040516326475b2f60e11b815261061b925060040190815260200190565b613fe8848061573a565b90505f0361401557613ffa848061573a565b604051633e08a12560e11b815260040161061b929190615852565b5f60088201614024868061573a565b6040516140329291906155fb565b9081526020016040518091039020541461406b57614050848061573a565b60405163a41f772f60e01b815260040161061b929190615852565b614075835f6144d7565b6040805160e08101909152815481525f908190614181906020810161409a898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906140e2908a018a61573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161412b60608a0160408b01614f45565b6001600160401b0316815260200161414660608a018a61583e565b61414f90615880565b815260200161416160808a018a61583e565b61416a90615880565b8152602001876001600160401b03168152506148ce565b5f8281526006860160205260409020919350915061419f828261541d565b5081600884016141af888061573a565b6040516141bd9291906155fb565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906141f990859060040161517a565b6020604051808303815f875af1158015614215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614239919061518c565b6040805160e081019091529091508060018152602001614259898061573a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff191660018360058111156142e8576142e8614fda565b021790555060208201516001820190614301908261541d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558061439e888061573a565b6040516143ac9291906155fb565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906143ea9190614f45565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661446157604051631afcd79f60e31b815260040160405180910390fd5b565b61446b614418565b61447481614abb565b61447c614ad4565b610eb56060820135608083013561449960c0850160a08601614f45565b6144a960e0860160c08701615947565b6144ba610100870160e08801615960565b6101008701356144d261014089016101208a016151b7565b614ae4565b5f6144e0611e55565b90505f826001600160401b0316846001600160401b0316111561450e57614507838561562a565b905061451b565b614518848461562a565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061457d575060018401548151614579916001600160401b0316906154ec565b8210155b156145a3576001600160401b0383166060820152818152604081015160208201526145c2565b82816060018181516145b5919061560a565b6001600160401b03169052505b60608101516145d2906064615813565b602082015160018601546001600160401b0392909216916145fd9190600160401b900460ff16615521565b101561462d57606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161061b565b856001600160401b03168160400181815161464891906154ec565b9052506040810180516001600160401b0387169190614668908390615727565b9052506001840154604082015160649161468d91600160401b90910460ff1690615521565b10156146b4578060400151604051635943317f60e01b815260040161061b91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f80614706611e55565b5f848152600782016020526040902060020180549192509060089061473a90600160401b90046001600160401b0316615980565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6147726020820182614eee565b63ffffffff16158015614792575061478d60208201826151d2565b151590505b156147d9576147a46020820182614eee565b6147b160208301836151d2565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161061b565b6147e660208201826151d2565b90506147f56020830183614eee565b63ffffffff16111561480e576147a46020820182614eee565b60015b61481e60208301836151d2565b90508110156113ea5761483460208301836151d2565b61483f600184615727565b81811061484e5761484e615217565b905060200201602081019061486391906151b7565b6001600160a01b031661487960208401846151d2565b8381811061488957614889615217565b905060200201602081019061489e91906151b7565b6001600160a01b031610156148c657604051630dbc8d5f60e31b815260040160405180910390fd5b600101614811565b5f60608260400151516030146148f75760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98614938988a98600198929792969095909490939092910161599b565b60405160208183030381529060405290505f5b846080015160200151518110156149aa5781856080015160200151828151811061497757614977615217565b6020026020010151604051602001614990929190615a55565b60408051601f19818403018152919052915060010161494b565b5060a08401518051602091820151516040516149ca938593929101615a86565b60405160208183030381529060405290505f5b8460a001516020015151811015614a3c57818560a00151602001518281518110614a0957614a09615217565b6020026020010151604051602001614a22929190615a55565b60408051601f1981840301815291905291506001016149dd565b5060c0840151604051614a53918391602001615ac1565b6040516020818303038152906040529050600281604051614a7491906153c8565b602060405180830381855afa158015614a8f573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614ab2919061518c565b94909350915050565b614ac3614418565b614acb614c7a565b610eb581614c82565b614adc614418565b614461614d65565b614aec614418565b5f614af56125ac565b905061ffff85161580614b0d575061271061ffff8616115b15614b3157604051635f12e6c360e11b815261ffff8616600482015260240161061b565b86881115614b555760405163222d164360e21b81526004810189905260240161061b565b60ff84161580614b685750600a60ff8516115b15614b8b5760405163170db35960e31b815260ff8516600482015260240161061b565b614b93613ea0565b6001600160401b0316866001600160401b03161015614bcf576040516202a06d60e11b81526001600160401b038716600482015260240161061b565b825f03614bef5760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b614461614418565b614c8a614418565b5f614c93611e55565b8235815590506014614cab6060840160408501615960565b60ff161180614cca5750614cc56060830160408401615960565b60ff16155b15614cfe57614cdf6060830160408401615960565b604051634a59bbff60e11b815260ff909116600482015260240161061b565b614d0e6060830160408401615960565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614d3f6040830160208401614f45565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612b90614418565b508054614d799061513a565b5f825580601f10614d88575050565b601f0160209004905f5260205f2090810190610eb59190614de1565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614df5575f8155600101614de2565b5090565b8015158114610eb5575f80fd5b803563ffffffff81168114611990575f80fd5b5f805f60608486031215614e2b575f80fd5b833592506020840135614e3d81614df9565b9150614e4b60408501614e06565b90509250925092565b5f60208284031215614e64575f80fd5b5035919050565b5f8060408385031215614e7c575f80fd5b82356001600160401b03811115614e91575f80fd5b830160808186031215614ea2575f80fd5b9150614eb060208401614e06565b90509250929050565b5f8060408385031215614eca575f80fd5b82359150614eb060208401614e06565b6001600160a01b0391909116815260200190565b5f60208284031215614efe575f80fd5b61159382614e06565b5f8060408385031215614f18575f80fd5b614f2183614e06565b946020939093013593505050565b80356001600160401b0381168114611990575f80fd5b5f60208284031215614f55575f80fd5b61159382614f2f565b803561ffff81168114611990575f80fd5b5f805f60608486031215614f81575f80fd5b83356001600160401b03811115614f96575f80fd5b840160a08187031215614fa7575f80fd5b9250614fb560208501614f5e565b9150614e4b60408501614f2f565b5f6101408284031215614fd4575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614ffe57614ffe614fda565b9052565b5f5b8381101561501c578181015183820152602001615004565b50505f910152565b5f815180845261503b816020860160208601615002565b601f01601f19169290920160200192915050565b60208152615061602082018351614fee565b5f602083015160e0604084015261507c610100840182615024565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156150e0575f80fd5b82356001600160401b03808211156150f6575f80fd5b818501915085601f830112615109575f80fd5b813581811115615117575f80fd5b866020828501011115615128575f80fd5b60209290920196919550909350505050565b600181811c9082168061514e57607f821691505b602082108103614fd457634e487b7160e01b5f52602260045260245ffd5b60208101610df78284614fee565b602081525f6115936020830184615024565b5f6020828403121561519c575f80fd5b5051919050565b6001600160a01b0381168114610eb5575f80fd5b5f602082840312156151c7575f80fd5b8135611593816151a3565b5f808335601e198436030181126151e7575f80fd5b8301803591506001600160401b03821115615200575f80fd5b6020019150600581901b36038213156137ba575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261523f575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561527f5761527f615249565b60405290565b604080519081016001600160401b038111828210171561527f5761527f615249565b604051601f8201601f191681016001600160401b03811182821017156152cf576152cf615249565b604052919050565b5f6001600160401b038211156152ef576152ef615249565b50601f01601f191660200190565b5f82601f83011261530c575f80fd5b813561531f61531a826152d7565b6152a7565b818152846020838601011115615333575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561535f575f80fd5b61536761525d565b82356001600160401b038082111561537d575f80fd5b615389368387016152fd565b8352602085013591508082111561539e575f80fd5b506153ab368286016152fd565b6020830152506153bd60408401614f2f565b604082015292915050565b5f825161523f818460208701615002565b601f82111561062457805f5260205f20601f840160051c810160208510156153fe5750805b601f840160051c820191505b81811015611771575f815560010161540a565b81516001600160401b0381111561543657615436615249565b61544a81615444845461513a565b846153d9565b602080601f83116001811461547d575f84156154665750858301515b5f19600386901b1c1916600185901b178555610fdc565b5f85815260208120601f198616915b828110156154ab5788860151825594840194600190910190840161548c565b50858210156154c857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610df757610df76154d8565b5f63ffffffff808316818103615517576155176154d8565b6001019392505050565b8082028115828204841417610df757610df76154d8565b5f8261555257634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061556b5761556b614fda565b91905290565b5f60208083525f84546155838161513a565b806020870152604060018084165f81146155a457600181146155c0576155ed565b60ff19851660408a0152604084151560051b8a010195506155ed565b895f5260205f205f5b858110156155e45781548b82018601529083019088016155c9565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611fcc57611fcc6154d8565b6001600160401b03828116828216039080821115611fcc57611fcc6154d8565b805161199081614df9565b5f8060408385031215615666575f80fd5b82516001600160401b038082111561567c575f80fd5b908401906060828703121561568f575f80fd5b61569761525d565b825181526020808401516156aa816151a3565b828201526040840151838111156156bf575f80fd5b80850194505087601f8501126156d3575f80fd5b835192506156e361531a846152d7565b83815288828587010111156156f6575f80fd5b61570584838301848801615002565b8060408401525081955061571a81880161564a565b9450505050509250929050565b81810381811115610df757610df76154d8565b5f808335601e1984360301811261574f575f80fd5b8301803591506001600160401b03821115615768575f80fd5b6020019150368190038213156137ba575f80fd5b5f885161578d818460208d01615002565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b03818116838216028082169190828114615836576158366154d8565b505092915050565b5f8235603e1983360301811261523f575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615890575f80fd5b615898615285565b6158a183614e06565b81526020808401356001600160401b03808211156158bd575f80fd5b9085019036601f8301126158cf575f80fd5b8135818111156158e1576158e1615249565b8060051b91506158f28483016152a7565b818152918301840191848101903684111561590b575f80fd5b938501935b838510156159355784359250615925836151a3565b8282529385019390850190615910565b94860194909452509295945050505050565b5f60208284031215615957575f80fd5b61159382614f5e565b5f60208284031215615970575f80fd5b813560ff81168114611593575f80fd5b5f6001600160401b03808316818103615517576155176154d8565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516159e181602a850160208b01615002565b8651908301906159f881602a840160208b01615002565b60c087901b6001600160c01b031916602a9290910191820152615a2a603282018660e01b6001600160e01b0319169052565b615a43603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615a66818460208801615002565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615a97818460208901615002565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351615ad2818460208801615002565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", + Bin: "0x608060405234801561000f575f80fd5b50604051615ae6380380615ae683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6159998061014d5f395ff3fe6080604052600436106101b5575f3560e01c80638280a25a116100ea578063ba3a4b971161008e578063ba3a4b97146104dc578063bc5fbfec146104fb578063bee0a03f1461052e578063c257a0f51461054d578063c599e24f1461056c578063c974d1b61461057f578063d5f20ff614610593578063df93d8de146105bf578063fd7ac5e7146105d5575f80fd5b80638280a25a1461040b57806393e245981461041f57806398f3e2b41461043e578063a3a65e481461045d578063a9778a7a146102df578063af2f5feb1461047c578063afb980961461048f578063b771b3bc146104c2575f80fd5b806335455ded1161015c57806335455ded146102df5780633a1cfff614610307578063467ef06f146103265780635297fae61461034557806360305d6214610364578063620658561461038d57806366435abf146103ba578063732214f8146103d957806376f78621146103ec575f80fd5b80630118acc4146101b95780630322ed98146101da578063151d30d1146101f95780631ec447241461022457806320d91b7a1461024357806325e1c776146102625780632e2194d814610281578063329c3e12146102b8575b5f80fd5b3480156101c4575f80fd5b506101d86101d3366004614bf0565b6105f4565b005b3480156101e5575f80fd5b506101d86101f4366004614c2b565b610629565b348015610204575f80fd5b5061020d600a81565b60405160ff90911681526020015b60405180910390f35b34801561022f575f80fd5b506101d861023e366004614bf0565b61082c565b34801561024e575f80fd5b506101d861025d366004614c42565b610837565b34801561026d575f80fd5b506101d861027c366004614c90565b610cb4565b34801561028c575f80fd5b506102a061029b366004614c2b565b610d28565b6040516001600160401b03909116815260200161021b565b3480156102c3575f80fd5b506102d26001600160991b0181565b60405161021b9190614cb1565b3480156102ea575f80fd5b506102f461271081565b60405161ffff909116815260200161021b565b348015610312575f80fd5b506101d8610321366004614bf0565b610d7c565b348015610331575f80fd5b506101d8610340366004614cc5565b610d87565b348015610350575f80fd5b506101d861035f366004614cde565b610e37565b34801561036f575f80fd5b50610378601481565b60405163ffffffff909116815260200161021b565b348015610398575f80fd5b506103ac6103a7366004614d1c565b611092565b60405190815260200161021b565b3480156103c5575f80fd5b506102a06103d4366004614c2b565b6110b2565b3480156103e4575f80fd5b506103ac5f81565b3480156103f7575f80fd5b506101d8610406366004614bf0565b6110c6565b348015610416575f80fd5b5061020d603081565b34801561042a575f80fd5b506101d8610439366004614c2b565b6110f1565b348015610449575f80fd5b506101d8610458366004614cde565b6111ae565b348015610468575f80fd5b506101d8610477366004614cc5565b61136d565b6103ac61048a366004614d46565b6114f3565b34801561049a575f80fd5b506103ac7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104cd575f80fd5b506102d26005600160991b0181565b3480156104e7575f80fd5b506101d86104f6366004614c2b565b611519565b348015610506575f80fd5b506103ac7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b348015610539575f80fd5b506101d8610548366004614c2b565b6116f7565b348015610558575f80fd5b506101d8610567366004614d9a565b611814565b6103ac61057a366004614c2b565b6118f1565b34801561058a575f80fd5b5061020d601481565b34801561059e575f80fd5b506105b26105ad366004614c2b565b611914565b60405161021b9190614e26565b3480156105ca575f80fd5b506102a06202a30081565b3480156105e0575f80fd5b506103ac6105ef366004614ea6565b611a56565b6105ff838383611a8e565b61062457604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f610632611dd4565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561066b5761066b614db1565b600581111561067c5761067c614db1565b815260200160018201805461069090614f11565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc90614f11565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561077257610772614db1565b146107a5575f8381526007830160205260409081902054905163170cc93360e21b815261061b9160ff1690600401614f43565b6005600160991b016001600160a01b031663ee5b48eb6107ca8584606001515f611df8565b6040518263ffffffff1660e01b81526004016107e69190614f51565b6020604051808303815f875af1158015610802573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108269190614f63565b50505050565b610826838383611a8e565b5f610840611dd4565b600981015490915060ff161561086957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d09190614f63565b8360200135146108f9576040516372b0a7e760e11b81526020840135600482015260240161061b565b3061090a6060850160408601614f8e565b6001600160a01b031614610942576109286060840160408501614f8e565b604051632f88120d60e21b815260040161061b9190614cb1565b5f6109506060850185614fa9565b905090505f805b828163ffffffff161015610bb6575f6109736060880188614fa9565b8363ffffffff1681811061098957610989614fee565b905060200281019061099b9190615002565b6109a490615126565b80516040519192505f9160088801916109bc9161519f565b908152602001604051809103902054146109ec57805160405163a41f772f60e01b815261061b9190600401614f51565b5f6002885f013584604051602001610a1b92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a359161519f565b602060405180830381855afa158015610a50573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a739190614f63565b90508086600801835f0151604051610a8b919061519f565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610acb9082615208565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b0319909716929097169190911794909417169290921790915560030180546001600160401b0319169055610b4990856152d2565b8251604051919550610b5a9161519f565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610baf906152e5565b9050610957565b50600483018190556001830154606490610bda90600160401b900460ff1683615307565b1015610bfc57604051635943317f60e01b81526004810182905260240161061b565b5f610c12610c0986611e47565b60400151611f52565b90505f610c1e876120df565b90505f600282604051610c31919061519f565b602060405180830381855afa158015610c4c573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c6f9190614f63565b9050828114610c9b57604051631872fc8d60e01b8152600481018290526024810184905260440161061b565b5050506009909201805460ff1916600117905550505050565b610cbd826122b4565b610cdd576040516330efa98b60e01b81526004810183905260240161061b565b5f610ce783611914565b5190506002816005811115610cfe57610cfe614db1565b14610d1e578060405163170cc93360e21b815260040161061b9190614f43565b61082683836122dd565b5f80610d3261252b565b60030154610d40908461531e565b9050801580610d5557506001600160401b0381115b15610d765760405163222d164360e21b81526004810184905260240161061b565b92915050565b61082683838361254f565b610d8f61271a565b5f610d9861252b565b90505f80610da584612764565b91509150610db2826122b4565b610dbe57505050610e2c565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610dec57610dec614db1565b03610e11575f83815260088501602052604081208054919055610e0f8282612a9e565b505b610e2781610e228460400151611092565b612afc565b505050505b610e34612b0f565b50565b5f610e4061252b565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115610e7957610e79614db1565b6003811115610e8a57610e8a614db1565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610f0082611914565b9050600183516003811115610f1757610f17614db1565b14610f38578251604051633b0d540d60e21b815261061b919060040161533d565b600481516005811115610f4d57610f4d614db1565b03610f6357610f5b85612b35565b505050505050565b5f80610f7a610f7189611e47565b60400151612d55565b5091509150818414610fa757846040015160405163089938b360e11b815260040161061b91815260200190565b806001600160401b031683606001516001600160401b03161080610fe05750806001600160401b03168560a001516001600160401b0316115b1561100957604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5f878152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b19909216919091179091559151918252859189917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61109b61252b565b60030154610d76906001600160401b038416615307565b5f6110bc82611914565b6080015192915050565b6110d183838361254f565b61062457604051635bff683f60e11b81526004810184905260240161061b565b5f6110fa61252b565b90505f61110683611914565b519050600481600581111561111d5761111d614db1565b1461113d578060405163170cc93360e21b815260040161061b9190614f43565b5f8381526005830160205260409020546001600160a01b0316331461117857335b604051636e2ccd7560e11b815260040161061b9190614cb1565b5f83815260088301602090815260408083208054908490556005860190925290912054610826906001600160a01b031682612a9e565b6111b661271a565b5f6111bf61252b565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff1660038111156111f8576111f8614db1565b600381111561120957611209614db1565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561128257611282614db1565b146112a3578051604051633b0d540d60e21b815261061b919060040161533d565b60046112b28260400151611914565b5160058111156112c4576112c4614db1565b14611356575f6112d385611e47565b90505f806112e48360400151612d55565b5091509150818460400151146113105760405163089938b360e11b81526004810183905260240161061b565b806001600160401b03168460c001516001600160401b0316111561135257604051632e19bc2d60e11b81526001600160401b038216600482015260240161061b565b5050505b61135f83612b35565b5050611369612b0f565b5050565b5f611376611dd4565b90505f8061138f61138685611e47565b60400151612fab565b91509150806113b557604051632d07135360e01b8152811515600482015260240161061b565b5f828152600684016020526040902080546113cf90614f11565b90505f036113f35760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078501602052604090205460ff16600581111561141957611419614db1565b1461144c575f8281526007840160205260409081902054905163170cc93360e21b815261061b9160ff1690600401614f43565b5f828152600684016020526040812061146491614b44565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6114fc61271a565b61150884848434613167565b9050611512612b0f565b9392505050565b5f61152261252b565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600381111561155b5761155b614db1565b600381111561156c5761156c614db1565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156115e5576115e5614db1565b14158015611606575060038151600381111561160357611603614db1565b14155b15611627578051604051633b0d540d60e21b815261061b919060040161533d565b5f6116358260400151611914565b905080606001516001600160401b03165f03611667576040516339b894f960e21b81526004810185905260240161061b565b6005600160991b016001600160a01b031663ee5b48eb611694846040015184606001518560800151611df8565b6040518263ffffffff1660e01b81526004016116b09190614f51565b6020604051808303815f875af11580156116cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f09190614f63565b5050505050565b5f611700611dd4565b5f838152600682016020526040902080549192509061171e90614f11565b90505f036117425760405163089938b360e11b81526004810183905260240161061b565b60015f83815260078301602052604090205460ff16600581111561176857611768614db1565b1461179b575f8281526007820160205260409081902054905163170cc93360e21b815261061b9160ff1690600401614f43565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916117d49190600401615357565b6020604051808303815f875af11580156117f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106249190614f63565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061185d575080546001600160401b03808416911610155b1561187b5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556118a5836132c0565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f6118fa61271a565b6119058233346132d1565b905061190f612b0f565b919050565b61191c614b7b565b5f611925611dd4565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff16600581111561195c5761195c614db1565b600581111561196d5761196d614db1565b815260200160018201805461198190614f11565b80601f01602080910402602001604051908101604052809291908181526020018280546119ad90614f11565b80156119f85780601f106119cf576101008083540402835291602001916119f8565b820191905f5260205f20905b8154815290600101906020018083116119db57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b5f80611a60611dd4565b9050806008018484604051611a769291906153e1565b90815260200160405180910390205491505092915050565b5f80611a9861252b565b5f868152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115611ad157611ad1614db1565b6003811115611ae257611ae2614db1565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611b5882611914565b9050600283516003811115611b6f57611b6f614db1565b14611b90578251604051633b0d540d60e21b815261061b919060040161533d565b60208301516001600160a01b03163314611c2c575f8281526005850160205260409020546001600160a01b03163314611bc9573361115e565b5f82815260058501602052604090205460a0820151611bf891600160b01b90046001600160401b0316906153f0565b6001600160401b0316421015611c2c5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b600281516005811115611c4157611c41614db1565b03611d6f5760028401546080840151611c63916001600160401b0316906153f0565b6001600160401b0316421015611c975760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b8615611ca957611ca782876122dd565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611ce2918491611cdd9190615410565b613511565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155611d238461365b565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506115129350505050565b600481516005811115611d8457611d84614db1565b03611db857611d928361365b565b5f898152600786016020526040902055611dab88612b35565b6001945050505050611512565b805160405163170cc93360e21b815261061b9190600401614f43565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611eab573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ed2919081019061543b565b9150915080611ef457604051636b2f19e960e01b815260040160405180910390fd5b815115611f1a578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b031615611f4b578160200151604051624de75d60e31b815260040161061b9190614cb1565b5092915050565b5f8151602614611f8757815160405163cc92daa160e01b815263ffffffff90911660048201526026602482015260440161061b565b5f805b6002811015611fd657611f9e81600161550d565b611fa9906008615307565b61ffff16848281518110611fbf57611fbf614fee565b016020015160f81c901b9190911790600101611f8a565b5061ffff8116156120005760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b600481101561205b5761201781600361550d565b612022906008615307565b63ffffffff16856120348360026152d2565b8151811061204457612044614fee565b016020015160f81c901b9190911790600101612003565b5063ffffffff81161561208157604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156120d65761209881601f61550d565b6120a3906008615307565b866120af8360066152d2565b815181106120bf576120bf614fee565b016020015160f81c901b9190911790600101612084565b50949350505050565b60605f808335602085013560146120fb87870160408901614f8e565b6121086060890189614fa9565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6121896060850185614fa9565b9050811015611f4b57816121a06060860186614fa9565b838181106121b0576121b0614fee565b90506020028101906121c29190615002565b6121cc9080615520565b90506121db6060870187614fa9565b848181106121eb576121eb614fee565b90506020028101906121fd9190615002565b6122079080615520565b6122146060890189614fa9565b8681811061222457612224614fee565b90506020028101906122369190615002565b612244906020810190615520565b61225160608b018b614fa9565b8881811061226157612261614fee565b90506020028101906122739190615002565b612284906060810190604001614d1c565b60405160200161229a9796959493929190615562565b60408051601f19818403018152919052915060010161217c565b5f806122be61252b565b5f938452600501602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612328573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261234f919081019061543b565b915091508061237157604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d89190614f63565b8251146123fe578151604051636ba589a560e01b8152600481019190915260240161061b565b60208201516001600160a01b03161561242f578160200151604051624de75d60e31b815260040161061b9190614cb1565b5f8061243e84604001516137de565b915091508187146124655760405163089938b360e11b81526004810188905260240161061b565b5f61246e61252b565b5f8981526005820160205260409020600101549091506001600160401b039081169083161115612501575f88815260058201602090815260409182902060010180546001600160401b0319166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612520565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f8061255961252b565b90505f612565866139cf565b9050612570866122b4565b61257f57600192505050611512565b5f8681526005830160205260409020546001600160a01b031633146125a4573361115e565b5f86815260058301602052604090205460a08201516125d391600160b01b90046001600160401b0316906153f0565b6001600160401b03168160c001516001600160401b0316101561261a5760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161061b565b5f85156126325761262b87866122dd565b9050612650565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061267590611092565b60a086015160c08701516040516001600160e01b031960e086901b1681526126a5939291829189906004016155cb565b602060405180830381865afa1580156126c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126e49190614f63565b905080846008015f8a81526020019081526020015f205f82825461270891906152d2565b90915550501515979650505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161275e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f61276d614b7b565b5f612776611dd4565b90505f8061278661138687611e47565b9150915080156127ad57604051632d07135360e01b8152811515600482015260240161061b565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156127de576127de614db1565b60058111156127ef576127ef614db1565b815260200160018201805461280390614f11565b80601f016020809104026020016040519081016040528092919081815260200182805461282f90614f11565b801561287a5780601f106128515761010080835404028352916020019161287a565b820191905f5260205f20905b81548152906001019060200180831161285d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156128e5576128e5614db1565b14158015612906575060018151600581111561290357612903614db1565b14155b1561292757805160405163170cc93360e21b815261061b9190600401614f43565b60038151600581111561293c5761293c614db1565b0361294a576004815261294f565b600581525b836008018160200151604051612965919061519f565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156129a9576129a9614db1565b0217905550602082015160018201906129c29082615208565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b0319169190921617905580516005811115612a6757612a67614db1565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612aea575f80fd5b505af1158015610f5b573d5f803e3d5ffd5b6113696001600160a01b03831682613ca7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612b3e61252b565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff166003811115612b7757612b77614db1565b6003811115612b8857612b88614db1565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612bfc613d3a565b8260800151612c0b91906153f0565b6001600160401b0316421015612c3f5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161061b565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612cfa575f84815260058701602052604090205461271090612cac90600160a01b900461ffff1685615307565b612cb6919061531e565b915081866008015f8681526020019081526020015f205f828254612cda91906152d2565b90915550612cea9050828461550d565b9050612cfa856020015182612a9e565b612d0f8560200151610e228760600151611092565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f805f8351603614612d8c57835160405163cc92daa160e01b815263ffffffff90911660048201526036602482015260440161061b565b5f805b6002811015612ddb57612da381600161550d565b612dae906008615307565b61ffff16868281518110612dc457612dc4614fee565b016020015160f81c901b9190911790600101612d8f565b5061ffff811615612e055760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b6004811015612e6057612e1c81600361550d565b612e27906008615307565b63ffffffff1687612e398360026152d2565b81518110612e4957612e49614fee565b016020015160f81c901b9190911790600101612e08565b5063ffffffff8116600314612e8857604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015612edd57612e9f81601f61550d565b612eaa906008615307565b88612eb68360066152d2565b81518110612ec657612ec6614fee565b016020015160f81c901b9190911790600101612e8b565b505f805b6008811015612f3c57612ef581600761550d565b612f00906008615307565b6001600160401b031689612f158360266152d2565b81518110612f2557612f25614fee565b016020015160f81c901b9190911790600101612ee1565b505f805b6008811015612f9b57612f5481600761550d565b612f5f906008615307565b6001600160401b03168a612f7483602e6152d2565b81518110612f8457612f84614fee565b016020015160f81c901b9190911790600101612f40565b5091989097509095509350505050565b5f808251602714612fe157825160405163cc92daa160e01b815263ffffffff90911660048201526027602482015260440161061b565b5f805b600281101561303057612ff881600161550d565b613003906008615307565b61ffff1685828151811061301957613019614fee565b016020015160f81c901b9190911790600101612fe4565b5061ffff81161561305a5760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b60048110156130b55761307181600361550d565b61307c906008615307565b63ffffffff168661308e8360026152d2565b8151811061309e5761309e614fee565b016020015160f81c901b919091179060010161305d565b5063ffffffff81166002146130dd57604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015613132576130f481601f61550d565b6130ff906008615307565b8761310b8360066152d2565b8151811061311b5761311b614fee565b016020015160f81c901b91909117906001016130e0565b505f8660268151811061314757613147614fee565b016020015191976001600160f81b03199092161515965090945050505050565b5f8061317161252b565b600281015490915061ffff600160401b9091048116908616108061319a575061271061ffff8616115b156131be57604051635f12e6c360e11b815261ffff8616600482015260240161061b565b60028101546001600160401b0390811690851610156131fa576040516202a06d60e11b81526001600160401b038516600482015260240161061b565b805483108061320c5750806001015483115b1561322d5760405163222d164360e21b81526004810184905260240161061b565b825f61323882610d28565b90505f6132458983613d55565b5f818152600595909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b0398909816979097029690961787555050600190940180546001600160401b031916905550919392505050565b6132c86141ef565b610e348161423a565b5f806132db61252b565b90505f6132e784610d28565b90505f6132f387611914565b90506132fe876122b4565b61331e576040516330efa98b60e01b81526004810188905260240161061b565b60028151600581111561333357613333614db1565b1461335457805160405163170cc93360e21b815261061b9190600401614f43565b5f82826080015161336591906153f0565b905083600201600a9054906101000a90046001600160401b0316826040015161338e91906155f9565b6001600160401b0316816001600160401b031611156133cb57604051636d51fe0560e11b81526001600160401b038216600482015260240161061b565b5f806133d78a84613511565b915091505f8a8360405160200161340592919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260068b019093529120805491925060019160ff1916828002179055505f8181526006880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b5f805f61351c611dd4565b5f868152600782016020526040902060020154909150600160801b90046001600160401b031661354c85826142ae565b5f613556876144d3565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6135a68a858b611df8565b6040518263ffffffff1660e01b81526004016135c29190614f51565b6020604051808303815f875af11580156135de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136029190614f63565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061366561252b565b90505f6136758460400151611914565b90505f60038251600581111561368d5761368d614db1565b14806136ab57506004825160058111156136a9576136a9614db1565b145b156136bb575060c08101516136f8565b6002825160058111156136d0576136d0614db1565b036136dc5750426136f8565b815160405163170cc93360e21b815261061b9190600401614f43565b84608001516001600160401b0316816001600160401b03161161371f57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061374490611092565b60a085015160808901516040808b01515f90815260058a016020528190206001015490516001600160e01b031960e087901b1681526137969493929188916001600160401b03909116906004016155cb565b602060405180830381865afa1580156137b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137d59190614f63565b95945050505050565b5f808251602e1461381457825160405163cc92daa160e01b815263ffffffff9091166004820152602e602482015260440161061b565b5f805b60028110156138635761382b81600161550d565b613836906008615307565b61ffff1685828151811061384c5761384c614fee565b016020015160f81c901b9190911790600101613817565b5061ffff81161561388d5760405163407b587360e01b815261ffff8216600482015260240161061b565b5f805b60048110156138e8576138a481600361550d565b6138af906008615307565b63ffffffff16866138c18360026152d2565b815181106138d1576138d1614fee565b016020015160f81c901b9190911790600101613890565b5063ffffffff81161561390e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156139635761392581601f61550d565b613930906008615307565b8761393c8360066152d2565b8151811061394c5761394c614fee565b016020015160f81c901b9190911790600101613911565b505f805b60088110156139c25761397b81600761550d565b613986906008615307565b6001600160401b03168861399b8360266152d2565b815181106139ab576139ab614fee565b016020015160f81c901b9190911790600101613967565b5090969095509350505050565b6139d7614b7b565b5f6139e0611dd4565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613a1957613a19614db1565b6005811115613a2a57613a2a614db1565b8152602001600182018054613a3e90614f11565b80601f0160208091040260200160405190810160405280929190818152602001828054613a6a90614f11565b8015613ab55780601f10613a8c57610100808354040283529160200191613ab5565b820191905f5260205f20905b815481529060010190602001808311613a9857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613b2357613b23614db1565b14613b56575f8481526007830160205260409081902054905163170cc93360e21b815261061b9160ff1690600401614f43565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613b9a57613b9a614db1565b021790555060208201516001820190613bb39082615208565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f613c508582613511565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b80471015613cca573060405163cd78605960e01b815260040161061b9190614cb1565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613d13576040519150601f19603f3d011682016040523d82523d5f602084013e613d18565b606091505b505090508061062457604051630a12f52160e11b815260040160405180910390fd5b5f613d43611dd4565b600101546001600160401b0316919050565b5f613d5e611dd4565b6009015460ff16613d8257604051637fab81e560e01b815260040160405180910390fd5b5f613d8b611dd4565b905042613d9e6060860160408701614d1c565b6001600160401b0316111580613dd85750613dbc6202a300426152d2565b613dcc6060860160408701614d1c565b6001600160401b031610155b15613e1257613ded6060850160408601614d1c565b604051635879da1360e11b81526001600160401b03909116600482015260240161061b565b613e27613e226060860186615624565b61453c565b613e37613e226080860186615624565b6030613e466020860186615520565b905014613e7857613e5a6020850185615520565b6040516326475b2f60e11b815261061b925060040190815260200190565b613e828480615520565b90505f03613eaf57613e948480615520565b604051633e08a12560e11b815260040161061b929190615638565b5f60088201613ebe8680615520565b604051613ecc9291906153e1565b90815260200160405180910390205414613f0557613eea8480615520565b60405163a41f772f60e01b815260040161061b929190615638565b613f0f835f6142ae565b6040805160e08101909152815481525f90819061401b9060208101613f348980615520565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613f7c908a018a615520565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613fc560608a0160408b01614d1c565b6001600160401b03168152602001613fe060608a018a615624565b613fe990615666565b8152602001613ffb60808a018a615624565b61400490615666565b8152602001876001600160401b03168152506146a5565b5f828152600686016020526040902091935091506140398282615208565b5081600884016140498880615520565b6040516140579291906153e1565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90614093908590600401614f51565b6020604051808303815f875af11580156140af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140d39190614f63565b5f8481526007860160205260409020805460ff1916600117905590506140f98780615520565b5f85815260078701602052604090206001019161411791908361572d565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b0316905560030180546001600160401b0319169055806141758880615520565b6040516141839291906153e1565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906141c19190614d1c565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661423857604051631afcd79f60e31b815260040160405180910390fd5b565b6142426141ef565b61424b81614892565b6142536148ab565b610e346060820135608083013561427060c0850160a08601614d1c565b61428060e0860160c087016157e1565b614291610100870160e088016157fa565b6101008701356142a961014089016101208a01614f8e565b6148bb565b5f6142b7611dd4565b90505f826001600160401b0316846001600160401b031611156142e5576142de8385615410565b90506142f2565b6142ef8484615410565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580614354575060018401548151614350916001600160401b0316906152d2565b8210155b1561437a576001600160401b038316606082015281815260408101516020820152614399565b828160600181815161438c91906153f0565b6001600160401b03169052505b60608101516143a99060646155f9565b602082015160018601546001600160401b0392909216916143d49190600160401b900460ff16615307565b101561440457606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161061b565b856001600160401b03168160400181815161441f91906152d2565b9052506040810180516001600160401b038716919061443f90839061550d565b9052506001840154604082015160649161446491600160401b90910460ff1690615307565b101561448b578060400151604051635943317f60e01b815260040161061b91815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f806144dd611dd4565b5f848152600782016020526040902060020180549192509060089061451190600160401b90046001600160401b031661581a565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6145496020820182614cc5565b63ffffffff1615801561456957506145646020820182614fa9565b151590505b156145b05761457b6020820182614cc5565b6145886020830183614fa9565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161061b565b6145bd6020820182614fa9565b90506145cc6020830183614cc5565b63ffffffff1611156145e55761457b6020820182614cc5565b60015b6145f56020830183614fa9565b90508110156113695761460b6020830183614fa9565b61461660018461550d565b81811061462557614625614fee565b905060200201602081019061463a9190614f8e565b6001600160a01b03166146506020840184614fa9565b8381811061466057614660614fee565b90506020020160208101906146759190614f8e565b6001600160a01b0316101561469d57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016145e8565b5f60608260400151516030146146ce5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861470f988a986001989297929690959094909390929101615835565b60405160208183030381529060405290505f5b846080015160200151518110156147815781856080015160200151828151811061474e5761474e614fee565b60200260200101516040516020016147679291906158ef565b60408051601f198184030181529190529150600101614722565b5060a08401518051602091820151516040516147a1938593929101615920565b60405160208183030381529060405290505f5b8460a00151602001515181101561481357818560a001516020015182815181106147e0576147e0614fee565b60200260200101516040516020016147f99291906158ef565b60408051601f1981840301815291905291506001016147b4565b5060c084015160405161482a91839160200161595b565b604051602081830303815290604052905060028160405161484b919061519f565b602060405180830381855afa158015614866573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906148899190614f63565b94909350915050565b61489a6141ef565b6148a2614a51565b610e3481614a59565b6148b36141ef565b614238614b3c565b6148c36141ef565b5f6148cc61252b565b905061ffff851615806148e4575061271061ffff8616115b1561490857604051635f12e6c360e11b815261ffff8616600482015260240161061b565b8688111561492c5760405163222d164360e21b81526004810189905260240161061b565b60ff8416158061493f5750600a60ff8516115b156149625760405163170db35960e31b815260ff8516600482015260240161061b565b61496a613d3a565b6001600160401b0316866001600160401b031610156149a6576040516202a06d60e11b81526001600160401b038716600482015260240161061b565b825f036149c65760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b6142386141ef565b614a616141ef565b5f614a6a611dd4565b8235815590506014614a8260608401604085016157fa565b60ff161180614aa15750614a9c60608301604084016157fa565b60ff16155b15614ad557614ab660608301604084016157fa565b604051634a59bbff60e11b815260ff909116600482015260240161061b565b614ae560608301604084016157fa565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614b166040830160208401614d1c565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b612b0f6141ef565b508054614b5090614f11565b5f825580601f10614b5f575050565b601f0160209004905f5260205f2090810190610e349190614bb8565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614bcc575f8155600101614bb9565b5090565b8015158114610e34575f80fd5b803563ffffffff8116811461190f575f80fd5b5f805f60608486031215614c02575f80fd5b833592506020840135614c1481614bd0565b9150614c2260408501614bdd565b90509250925092565b5f60208284031215614c3b575f80fd5b5035919050565b5f8060408385031215614c53575f80fd5b82356001600160401b03811115614c68575f80fd5b830160808186031215614c79575f80fd5b9150614c8760208401614bdd565b90509250929050565b5f8060408385031215614ca1575f80fd5b82359150614c8760208401614bdd565b6001600160a01b0391909116815260200190565b5f60208284031215614cd5575f80fd5b61151282614bdd565b5f8060408385031215614cef575f80fd5b614cf883614bdd565b946020939093013593505050565b80356001600160401b038116811461190f575f80fd5b5f60208284031215614d2c575f80fd5b61151282614d06565b803561ffff8116811461190f575f80fd5b5f805f60608486031215614d58575f80fd5b83356001600160401b03811115614d6d575f80fd5b840160a08187031215614d7e575f80fd5b9250614d8c60208501614d35565b9150614c2260408501614d06565b5f6101408284031215614dab575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60068110614dd557614dd5614db1565b9052565b5f5b83811015614df3578181015183820152602001614ddb565b50505f910152565b5f8151808452614e12816020860160208601614dd9565b601f01601f19169290920160200192915050565b60208152614e38602082018351614dc5565b5f602083015160e06040840152614e53610100840182614dfb565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614eb7575f80fd5b82356001600160401b0380821115614ecd575f80fd5b818501915085601f830112614ee0575f80fd5b813581811115614eee575f80fd5b866020828501011115614eff575f80fd5b60209290920196919550909350505050565b600181811c90821680614f2557607f821691505b602082108103614dab57634e487b7160e01b5f52602260045260245ffd5b60208101610d768284614dc5565b602081525f6115126020830184614dfb565b5f60208284031215614f73575f80fd5b5051919050565b6001600160a01b0381168114610e34575f80fd5b5f60208284031215614f9e575f80fd5b813561151281614f7a565b5f808335601e19843603018112614fbe575f80fd5b8301803591506001600160401b03821115614fd7575f80fd5b6020019150600581901b3603821315613654575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615016575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561505657615056615020565b60405290565b604080519081016001600160401b038111828210171561505657615056615020565b604051601f8201601f191681016001600160401b03811182821017156150a6576150a6615020565b604052919050565b5f6001600160401b038211156150c6576150c6615020565b50601f01601f191660200190565b5f82601f8301126150e3575f80fd5b81356150f66150f1826150ae565b61507e565b81815284602083860101111561510a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615136575f80fd5b61513e615034565b82356001600160401b0380821115615154575f80fd5b615160368387016150d4565b83526020850135915080821115615175575f80fd5b50615182368286016150d4565b60208301525061519460408401614d06565b604082015292915050565b5f8251615016818460208701614dd9565b601f82111561062457805f5260205f20601f840160051c810160208510156151d55750805b601f840160051c820191505b818110156116f0575f81556001016151e1565b5f19600383901b1c191660019190911b1790565b81516001600160401b0381111561522157615221615020565b6152358161522f8454614f11565b846151b0565b602080601f831160018114615263575f84156152515750858301515b61525b85826151f4565b865550610f5b565b5f85815260208120601f198616915b8281101561529157888601518255948401946001909101908401615272565b50858210156152ae57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610d7657610d766152be565b5f63ffffffff8083168181036152fd576152fd6152be565b6001019392505050565b8082028115828204841417610d7657610d766152be565b5f8261533857634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061535157615351614db1565b91905290565b5f60208083525f845461536981614f11565b806020870152604060018084165f811461538a57600181146153a6576153d3565b60ff19851660408a0152604084151560051b8a010195506153d3565b895f5260205f205f5b858110156153ca5781548b82018601529083019088016153af565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115611f4b57611f4b6152be565b6001600160401b03828116828216039080821115611f4b57611f4b6152be565b805161190f81614bd0565b5f806040838503121561544c575f80fd5b82516001600160401b0380821115615462575f80fd5b9084019060608287031215615475575f80fd5b61547d615034565b8251815260208084015161549081614f7a565b828201526040840151838111156154a5575f80fd5b80850194505087601f8501126154b9575f80fd5b835192506154c96150f1846150ae565b83815288828587010111156154dc575f80fd5b6154eb84838301848801614dd9565b80604084015250819550615500818801615430565b9450505050509250929050565b81810381811115610d7657610d766152be565b5f808335601e19843603018112615535575f80fd5b8301803591506001600160401b0382111561554e575f80fd5b602001915036819003821315613654575f80fd5b5f8851615573818460208d01614dd9565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b9485526001600160401b03938416602086015291831660408501528216606084015216608082015260a00190565b6001600160401b0381811683821602808216919082811461561c5761561c6152be565b505092915050565b5f8235603e19833603018112615016575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215615676575f80fd5b61567e61505c565b61568783614bdd565b81526020808401356001600160401b03808211156156a3575f80fd5b9085019036601f8301126156b5575f80fd5b8135818111156156c7576156c7615020565b8060051b91506156d884830161507e565b81815291830184019184810190368411156156f1575f80fd5b938501935b8385101561571b578435925061570b83614f7a565b82825293850193908501906156f6565b94860194909452509295945050505050565b6001600160401b0383111561574457615744615020565b615758836157528354614f11565b836151b0565b5f601f841160018114615784575f85156157725750838201355b61577c86826151f4565b8455506116f0565b5f83815260208120601f198716915b828110156157b35786850135825560209485019460019092019101615793565b50868210156157cf575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f602082840312156157f1575f80fd5b61151282614d35565b5f6020828403121561580a575f80fd5b813560ff81168114611512575f80fd5b5f6001600160401b038083168181036152fd576152fd6152be565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b16602684015250865161587b81602a850160208b01614dd9565b86519083019061589281602a840160208b01614dd9565b60c087901b6001600160c01b031916602a92909101918201526158c4603282018660e01b6001600160e01b0319169052565b6158dd603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351615900818460208801614dd9565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451615931818460208901614dd9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f835161596c818460208801614dd9565b60c09390931b6001600160c01b031916919092019081526008019291505056fea164736f6c6343000819000a", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 26d2e2aa7..b22cdb6d5 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -80,7 +80,7 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]},{\"name\":\"disableOwner\",\"type\":\"tuple\",\"internalType\":\"structPChainOwner\",\"components\":[{\"name\":\"threshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"addresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}]}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registeredValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes\",\"indexed\":true,\"internalType\":\"bytes\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidBLSKeyLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBLSPublicKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodecID\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitializationStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidMaximumChurnPercentage\",\"inputs\":[{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageLength\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"expected\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidMessageType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNodeID\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidPChainOwnerThreshold\",\"inputs\":[{\"name\":\"threshold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addressesLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidRegistrationExpiry\",\"inputs\":[{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidSubnetConversionID\",\"inputs\":[{\"name\":\"encodedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expectedSubnetConversionID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidTotalWeight\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValidationID\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerAddress\",\"inputs\":[{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorManagerBlockchainID\",\"inputs\":[{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidValidatorStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpMessage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWarpOriginSenderAddress\",\"inputs\":[{\"name\":\"senderAddress\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidWarpSourceChainID\",\"inputs\":[{\"name\":\"sourceChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"MaxChurnRateExceeded\",\"inputs\":[{\"name\":\"churnAmount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"NodeAlreadyRegistered\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"PChainOwnerAddressesNotSorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedRegistrationStatus\",\"inputs\":[{\"name\":\"validRegistration\",\"type\":\"bool\",\"internalType\":\"bool\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161395638038061395683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6138098061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b61461028b578063d588c18f14610293578063d5f20ff6146102a6578063df93d8de146102c6578063f2fde38b146102d0578063fd7ac5e7146102e3575f80fd5b80639ba96b861461021d578063a3a65e4814610230578063b771b3bc14610243578063bc5fbfec14610251578063bee0a03f14610278575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d41461020a575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b610149610144366004612be2565b6102f6565b005b610149610159366004612c11565b610502565b61014961016c366004612c5f565b610a00565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a1366004612be2565b610a0e565b6040516001600160401b03909116815260200161018a565b610149610a22565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b6101fd610a35565b60405161018a9190612c78565b610149610218366004612be2565b610a63565b6101cd61022b366004612ca2565b610a78565b61014961023e366004612c5f565b610a94565b6101fd6005600160991b0181565b6101cd7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b610149610286366004612be2565b610c1a565b6101e3601481565b6101496102a1366004612cfb565b610d37565b6102b96102b4366004612be2565b610e44565b60405161018a9190612db8565b6101a66202a30081565b6101496102de366004612e38565b610f86565b6101cd6102f1366004612e5a565b610fc3565b5f6102ff610ffb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561033857610338612d37565b600581111561034957610349612d37565b815260200160018201805461035d90612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461038990612ec5565b80156103d45780601f106103ab576101008083540402835291602001916103d4565b820191905f5260205f20905b8154815290600101906020018083116103b757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561043f5761043f612d37565b1461047b575f8381526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb6104a08584606001515f61101f565b6040518263ffffffff1660e01b81526004016104bc9190612f0b565b6020604051808303815f875af11580156104d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fc9190612f1d565b50505050565b5f61050b610ffb565b600981015490915060ff161561053457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610577573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059b9190612f1d565b8360200135146105c4576040516372b0a7e760e11b815260208401356004820152602401610472565b306105d56060850160408601612e38565b6001600160a01b03161461060d576105f36060840160408501612e38565b604051632f88120d60e21b81526004016104729190612c78565b5f61061b6060850185612f34565b905090505f805b828163ffffffff161015610902575f61063e6060880188612f34565b8363ffffffff1681811061065457610654612f79565b90506020028101906106669190612f8d565b61066f906130b1565b80516040519192505f9160088801916106879161312a565b908152602001604051809103902054146106b757805160405163a41f772f60e01b81526104729190600401612f0b565b5f6002885f0135846040516020016106e692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107009161312a565b602060405180830381855afa15801561071b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061073e9190612f1d565b90508086600801835f0151604051610756919061312a565b90815260408051602092819003830181209390935560e0830181526002835284518284015284810180516001600160401b03908116858401525f60608601819052915181166080860152421660a085015260c0840181905284815260078a01909252902081518154829060ff191660018360058111156107d8576107d8612d37565b0217905550602082015160018201906107f19082613186565b506040828101516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090930151600390920180546001600160401b03191692841692909217909155830151610895911685613259565b82516040519195506108a69161312a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806108fb9061326c565b9050610622565b5060048301819055600183015460649061092690600160401b900460ff168361328e565b101561094857604051635943317f60e01b815260048101829052602401610472565b5f61095e6109558661106e565b60400151611179565b90505f61096a87611306565b90505f60028260405161097d919061312a565b602060405180830381855afa158015610998573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109bb9190612f1d565b90508281146109e757604051631872fc8d60e01b81526004810182905260248101849052604401610472565b5050506009909201805460ff1916600117905550505050565b610a09816114db565b505050565b5f610a1882610e44565b6080015192915050565b610a2a611815565b610a335f611847565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b610a6b611815565b610a74816118b7565b5050565b5f610a81611815565b610a8b8383611b8f565b90505b92915050565b5f610a9d610ffb565b90505f80610ab6610aad8561106e565b604001516120ec565b9150915080610adc57604051632d07135360e01b81528115156004820152602401610472565b5f82815260068401602052604090208054610af690612ec5565b90505f03610b1a5760405163089938b360e11b815260048101839052602401610472565b60015f83815260078501602052604090205460ff166005811115610b4057610b40612d37565b14610b73575f8281526007840160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f8281526006840160205260408120610b8b91612b56565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f610c23610ffb565b5f8381526006820160205260409020805491925090610c4190612ec5565b90505f03610c655760405163089938b360e11b815260048101839052602401610472565b60015f83815260078301602052604090205460ff166005811115610c8b57610c8b612d37565b14610cbe575f8281526007820160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610cf791906004016132a5565b6020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a099190612f1d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610d7b5750825b90505f826001600160401b03166001148015610d965750303b155b905081158015610da4575080155b15610dc25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610deb57845460ff60401b1916600160401b1785555b610df587876122a8565b8315610e3b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610e4c612b8d565b5f610e55610ffb565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff166005811115610e8c57610e8c612d37565b6005811115610e9d57610e9d612d37565b8152602001600182018054610eb190612ec5565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90612ec5565b8015610f285780601f10610eff57610100808354040283529160200191610f28565b820191905f5260205f20905b815481529060010190602001808311610f0b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b610f8e611815565b6001600160a01b038116610fb7575f604051631e4fbdf760e01b81526004016104729190612c78565b610fc081611847565b50565b5f80610fcd610ffb565b9050806008018484604051610fe392919061332f565b90815260200160405180910390205491505092915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156110d2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110f9919081019061334d565b915091508061111b57604051636b2f19e960e01b815260040160405180910390fd5b815115611141578151604051636ba589a560e01b81526004810191909152602401610472565b60208201516001600160a01b031615611172578160200151604051624de75d60e31b81526004016104729190612c78565b5092915050565b5f81516026146111ae57815160405163cc92daa160e01b815263ffffffff909116600482015260266024820152604401610472565b5f805b60028110156111fd576111c581600161341f565b6111d090600861328e565b61ffff168482815181106111e6576111e6612f79565b016020015160f81c901b91909117906001016111b1565b5061ffff8116156112275760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156112825761123e81600361341f565b61124990600861328e565b63ffffffff168561125b836002613259565b8151811061126b5761126b612f79565b016020015160f81c901b919091179060010161122a565b5063ffffffff8116156112a857604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156112fd576112bf81601f61341f565b6112ca90600861328e565b866112d6836006613259565b815181106112e6576112e6612f79565b016020015160f81c901b91909117906001016112ab565b50949350505050565b60605f8083356020850135601461132287870160408901612e38565b61132f6060890189612f34565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b6113b06060850185612f34565b905081101561117257816113c76060860186612f34565b838181106113d7576113d7612f79565b90506020028101906113e99190612f8d565b6113f39080613432565b90506114026060870187612f34565b8481811061141257611412612f79565b90506020028101906114249190612f8d565b61142e9080613432565b61143b6060890189612f34565b8681811061144b5761144b612f79565b905060200281019061145d9190612f8d565b61146b906020810190613432565b61147860608b018b612f34565b8881811061148857611488612f79565b905060200281019061149a9190612f8d565b6114ab906060810190604001613474565b6040516020016114c1979695949392919061348d565b60408051601f1981840301815291905291506001016113a3565b5f6114e4612b8d565b5f6114ed610ffb565b90505f806114fd610aad8761106e565b91509150801561152457604051632d07135360e01b81528115156004820152602401610472565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561155557611555612d37565b600581111561156657611566612d37565b815260200160018201805461157a90612ec5565b80601f01602080910402602001604051908101604052809291908181526020018280546115a690612ec5565b80156115f15780601f106115c8576101008083540402835291602001916115f1565b820191905f5260205f20905b8154815290600101906020018083116115d457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561165c5761165c612d37565b1415801561167d575060018151600581111561167a5761167a612d37565b14155b1561169e57805160405163170cc93360e21b81526104729190600401612efd565b6003815160058111156116b3576116b3612d37565b036116c157600481526116c6565b600581525b8360080181602001516040516116dc919061312a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561172057611720612d37565b0217905550602082015160018201906117399082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055805160058111156117de576117de612d37565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b3361181e610a35565b6001600160a01b031614610a33573360405163118cdaa760e01b81526004016104729190612c78565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6118bf612b8d565b5f6118c8610ffb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561190157611901612d37565b600581111561191257611912612d37565b815260200160018201805461192690612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461195290612ec5565b801561199d5780601f106119745761010080835404028352916020019161199d565b820191905f5260205f20905b81548152906001019060200180831161198057829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611a0b57611a0b612d37565b14611a3e575f8481526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612efd565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115611a8257611a82612d37565b021790555060208201516001820190611a9b9082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f611b3885826122c2565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f611b98610ffb565b6009015460ff16611bbc57604051637fab81e560e01b815260040160405180910390fd5b5f611bc5610ffb565b905042611bd86060860160408701613474565b6001600160401b0316111580611c125750611bf66202a30042613259565b611c066060860160408701613474565b6001600160401b031610155b15611c4c57611c276060850160408601613474565b604051635879da1360e11b81526001600160401b039091166004820152602401610472565b611c61611c5c60608601866134f6565b61240c565b611c71611c5c60808601866134f6565b6030611c806020860186613432565b905014611cb257611c946020850185613432565b6040516326475b2f60e11b8152610472925060040190815260200190565b611cbc8480613432565b90505f03611ce957611cce8480613432565b604051633e08a12560e11b815260040161047292919061350a565b5f60088201611cf88680613432565b604051611d0692919061332f565b90815260200160405180910390205414611d3f57611d248480613432565b60405163a41f772f60e01b815260040161047292919061350a565b611d49835f612575565b6040805160e08101909152815481525f908190611e559060208101611d6e8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611db6908a018a613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611dff60608a0160408b01613474565b6001600160401b03168152602001611e1a60608a018a6134f6565b611e2390613538565b8152602001611e3560808a018a6134f6565b611e3e90613538565b8152602001876001600160401b031681525061279a565b5f82815260068601602052604090209193509150611e738282613186565b508160088401611e838880613432565b604051611e9192919061332f565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611ecd908590600401612f0b565b6020604051808303815f875af1158015611ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0d9190612f1d565b6040805160e081019091529091508060018152602001611f2d8980613432565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509385525050506001600160401b0389166020808401829052604080850184905260608501929092526080840183905260a0909301829052868252600788019092522081518154829060ff19166001836005811115611fbc57611fbc612d37565b021790555060208201516001820190611fd59082613186565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b03191691909216179055806120728880613432565b60405161208092919061332f565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906120be9190613474565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f80825160271461212257825160405163cc92daa160e01b815263ffffffff909116600482015260276024820152604401610472565b5f805b60028110156121715761213981600161341f565b61214490600861328e565b61ffff1685828151811061215a5761215a612f79565b016020015160f81c901b9190911790600101612125565b5061ffff81161561219b5760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156121f6576121b281600361341f565b6121bd90600861328e565b63ffffffff16866121cf836002613259565b815181106121df576121df612f79565b016020015160f81c901b919091179060010161219e565b5063ffffffff811660021461221e57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156122735761223581601f61341f565b61224090600861328e565b8761224c836006613259565b8151811061225c5761225c612f79565b016020015160f81c901b9190911790600101612221565b505f8660268151811061228857612288612f79565b016020015191976001600160f81b03199092161515965090945050505050565b6122b0612987565b6122b9826129d0565b610a74816129e9565b5f805f6122cd610ffb565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166122fd8582612575565b5f612307876129fa565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6123578a858b61101f565b6040518263ffffffff1660e01b81526004016123739190612f0b565b6020604051808303815f875af115801561238f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b39190612f1d565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6124196020820182612c5f565b63ffffffff1615801561243957506124346020820182612f34565b151590505b156124805761244b6020820182612c5f565b6124586020830183612f34565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610472565b61248d6020820182612f34565b905061249c6020830183612c5f565b63ffffffff1611156124b55761244b6020820182612c5f565b60015b6124c56020830183612f34565b9050811015610a74576124db6020830183612f34565b6124e660018461341f565b8181106124f5576124f5612f79565b905060200201602081019061250a9190612e38565b6001600160a01b03166125206020840184612f34565b8381811061253057612530612f79565b90506020020160208101906125459190612e38565b6001600160a01b0316101561256d57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016124b8565b5f61257e610ffb565b90505f826001600160401b0316846001600160401b031611156125ac576125a583856135ff565b90506125b9565b6125b684846135ff565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061261b575060018401548151612617916001600160401b031690613259565b8210155b15612641576001600160401b038316606082015281815260408101516020820152612660565b8281606001818151612653919061361f565b6001600160401b03169052505b606081015161267090606461363f565b602082015160018601546001600160401b03929092169161269b9190600160401b900460ff1661328e565b10156126cb57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610472565b856001600160401b0316816040018181516126e69190613259565b9052506040810180516001600160401b038716919061270690839061341f565b9052506001840154604082015160649161272b91600160401b90910460ff169061328e565b1015612752578060400151604051635943317f60e01b815260040161047291815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f60608260400151516030146127c35760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f98612804988a98600198929792969095909490939092910161366a565b60405160208183030381529060405290505f5b846080015160200151518110156128765781856080015160200151828151811061284357612843612f79565b602002602001015160405160200161285c929190613724565b60408051601f198184030181529190529150600101612817565b5060a0840151805160209182015151604051612896938593929101613755565b60405160208183030381529060405290505f5b8460a00151602001515181101561290857818560a001516020015182815181106128d5576128d5612f79565b60200260200101516040516020016128ee929190613724565b60408051601f1981840301815291905291506001016128a9565b5060c084015160405161291f918391602001613790565b6040516020818303038152906040529050600281604051612940919061312a565b602060405180830381855afa15801561295b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061297e9190612f1d565b94909350915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a3357604051631afcd79f60e31b815260040160405180910390fd5b6129d8612987565b6129e0612a63565b610fc081612a6b565b6129f1612987565b610fc081612b4e565b5f80612a04610ffb565b5f8481526007820160205260409020600201805491925090600890612a3890600160401b90046001600160401b03166137c1565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610a33612987565b612a73612987565b5f612a7c610ffb565b8235815590506014612a9460608401604085016137dc565b60ff161180612ab35750612aae60608301604084016137dc565b60ff16155b15612ae757612ac860608301604084016137dc565b604051634a59bbff60e11b815260ff9091166004820152602401610472565b612af760608301604084016137dc565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055612b286040830160208401613474565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b610f8e612987565b508054612b6290612ec5565b5f825580601f10612b71575050565b601f0160209004905f5260205f2090810190610fc09190612bca565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612bde575f8155600101612bcb565b5090565b5f60208284031215612bf2575f80fd5b5035919050565b803563ffffffff81168114612c0c575f80fd5b919050565b5f8060408385031215612c22575f80fd5b82356001600160401b03811115612c37575f80fd5b830160808186031215612c48575f80fd5b9150612c5660208401612bf9565b90509250929050565b5f60208284031215612c6f575f80fd5b610a8b82612bf9565b6001600160a01b0391909116815260200190565b80356001600160401b0381168114612c0c575f80fd5b5f8060408385031215612cb3575f80fd5b82356001600160401b03811115612cc8575f80fd5b830160a08186031215612cd9575f80fd5b9150612c5660208401612c8c565b6001600160a01b0381168114610fc0575f80fd5b5f808284036080811215612d0d575f80fd5b6060811215612d1a575f80fd5b508291506060830135612d2c81612ce7565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612d6757634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612d85578181015183820152602001612d6d565b50505f910152565b5f8151808452612da4816020860160208601612d6b565b601f01601f19169290920160200192915050565b60208152612dca602082018351612d4b565b5f602083015160e06040840152612de5610100840182612d8d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612e48575f80fd5b8135612e5381612ce7565b9392505050565b5f8060208385031215612e6b575f80fd5b82356001600160401b0380821115612e81575f80fd5b818501915085601f830112612e94575f80fd5b813581811115612ea2575f80fd5b866020828501011115612eb3575f80fd5b60209290920196919550909350505050565b600181811c90821680612ed957607f821691505b602082108103612ef757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610a8e8284612d4b565b602081525f610a8b6020830184612d8d565b5f60208284031215612f2d575f80fd5b5051919050565b5f808335601e19843603018112612f49575f80fd5b8301803591506001600160401b03821115612f62575f80fd5b6020019150600581901b3603821315612405575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612fa1575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612fe157612fe1612fab565b60405290565b604080519081016001600160401b0381118282101715612fe157612fe1612fab565b604051601f8201601f191681016001600160401b038111828210171561303157613031612fab565b604052919050565b5f6001600160401b0382111561305157613051612fab565b50601f01601f191660200190565b5f82601f83011261306e575f80fd5b813561308161307c82613039565b613009565b818152846020838601011115613095575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156130c1575f80fd5b6130c9612fbf565b82356001600160401b03808211156130df575f80fd5b6130eb3683870161305f565b83526020850135915080821115613100575f80fd5b5061310d3682860161305f565b60208301525061311f60408401612c8c565b604082015292915050565b5f8251612fa1818460208701612d6b565b601f821115610a0957805f5260205f20601f840160051c810160208510156131605750805b601f840160051c820191505b8181101561317f575f815560010161316c565b5050505050565b81516001600160401b0381111561319f5761319f612fab565b6131b3816131ad8454612ec5565b8461313b565b602080601f8311600181146131e6575f84156131cf5750858301515b5f19600386901b1c1916600185901b17855561323d565b5f85815260208120601f198616915b82811015613214578886015182559484019460019091019084016131f5565b508582101561323157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a8e57610a8e613245565b5f63ffffffff80831681810361328457613284613245565b6001019392505050565b8082028115828204841417610a8e57610a8e613245565b5f60208083525f84546132b781612ec5565b806020870152604060018084165f81146132d857600181146132f457613321565b60ff19851660408a0152604084151560051b8a01019550613321565b895f5260205f205f5b858110156133185781548b82018601529083019088016132fd565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b80518015158114612c0c575f80fd5b5f806040838503121561335e575f80fd5b82516001600160401b0380821115613374575f80fd5b9084019060608287031215613387575f80fd5b61338f612fbf565b825181526020808401516133a281612ce7565b828201526040840151838111156133b7575f80fd5b80850194505087601f8501126133cb575f80fd5b835192506133db61307c84613039565b83815288828587010111156133ee575f80fd5b6133fd84838301848801612d6b565b8060408401525081955061341281880161333e565b9450505050509250929050565b81810381811115610a8e57610a8e613245565b5f808335601e19843603018112613447575f80fd5b8301803591506001600160401b03821115613460575f80fd5b602001915036819003821315612405575f80fd5b5f60208284031215613484575f80fd5b610a8b82612c8c565b5f885161349e818460208d01612d6b565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b5f8235603e19833603018112612fa1575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215613548575f80fd5b613550612fe7565b61355983612bf9565b81526020808401356001600160401b0380821115613575575f80fd5b9085019036601f830112613587575f80fd5b81358181111561359957613599612fab565b8060051b91506135aa848301613009565b81815291830184019184810190368411156135c3575f80fd5b938501935b838510156135ed57843592506135dd83612ce7565b82825293850193908501906135c8565b94860194909452509295945050505050565b6001600160401b0382811682821603908082111561117257611172613245565b6001600160401b0381811683821601908082111561117257611172613245565b6001600160401b0381811683821602808216919082811461366257613662613245565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b1660268401525086516136b081602a850160208b01612d6b565b8651908301906136c781602a840160208b01612d6b565b60c087901b6001600160c01b031916602a92909101918201526136f9603282018660e01b6001600160e01b0319169052565b613712603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351613735818460208801612d6b565b60609390931b6001600160601b0319169190920190815260140192915050565b5f8451613766818460208901612d6b565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516137a1818460208801612d6b565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f6001600160401b0380831681810361328457613284613245565b5f602082840312156137ec575f80fd5b813560ff81168114612e53575f80fdfea164736f6c6343000819000a", + Bin: "0x608060405234801561000f575f80fd5b506040516138d53803806138d583398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6137888061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b61461028b578063d588c18f14610293578063d5f20ff6146102a6578063df93d8de146102c6578063f2fde38b146102d0578063fd7ac5e7146102e3575f80fd5b80639ba96b861461021d578063a3a65e4814610230578063b771b3bc14610243578063bc5fbfec14610251578063bee0a03f14610278575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d41461020a575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b610149610144366004612a9e565b6102f6565b005b610149610159366004612acd565b610502565b61014961016c366004612b1b565b61097f565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a1366004612a9e565b61098d565b6040516001600160401b03909116815260200161018a565b6101496109a1565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b6101fd6109b4565b60405161018a9190612b34565b610149610218366004612a9e565b6109e2565b6101cd61022b366004612b5e565b6109f7565b61014961023e366004612b1b565b610a13565b6101fd6005600160991b0181565b6101cd7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b610149610286366004612a9e565b610b99565b6101e3601481565b6101496102a1366004612bb7565b610cb6565b6102b96102b4366004612a9e565b610dc3565b60405161018a9190612c74565b6101a66202a30081565b6101496102de366004612cf4565b610f05565b6101cd6102f1366004612d16565b610f42565b5f6102ff610f7a565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561033857610338612bf3565b600581111561034957610349612bf3565b815260200160018201805461035d90612d81565b80601f016020809104026020016040519081016040528092919081815260200182805461038990612d81565b80156103d45780601f106103ab576101008083540402835291602001916103d4565b820191905f5260205f20905b8154815290600101906020018083116103b757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561043f5761043f612bf3565b1461047b575f8381526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612db9565b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb6104a08584606001515f610f9e565b6040518263ffffffff1660e01b81526004016104bc9190612dc7565b6020604051808303815f875af11580156104d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fc9190612dd9565b50505050565b5f61050b610f7a565b600981015490915060ff161561053457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610577573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059b9190612dd9565b8360200135146105c4576040516372b0a7e760e11b815260208401356004820152602401610472565b306105d56060850160408601612cf4565b6001600160a01b03161461060d576105f36060840160408501612cf4565b604051632f88120d60e21b81526004016104729190612b34565b5f61061b6060850185612df0565b905090505f805b828163ffffffff161015610881575f61063e6060880188612df0565b8363ffffffff1681811061065457610654612e35565b90506020028101906106669190612e49565b61066f90612f6d565b80516040519192505f91600888019161068791612fe6565b908152602001604051809103902054146106b757805160405163a41f772f60e01b81526104729190600401612dc7565b5f6002885f0135846040516020016106e692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f198184030181529082905261070091612fe6565b602060405180830381855afa15801561071b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061073e9190612dd9565b90508086600801835f01516040516107569190612fe6565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff1916600217815582516001909101906107969082613056565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b0319909716929097169190911794909417169290921790915560030180546001600160401b03191690556108149085613124565b825160405191955061082591612fe6565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a350508061087a90613137565b9050610622565b506004830181905560018301546064906108a590600160401b900460ff1683613159565b10156108c757604051635943317f60e01b815260048101829052602401610472565b5f6108dd6108d486610fed565b604001516110f8565b90505f6108e987611285565b90505f6002826040516108fc9190612fe6565b602060405180830381855afa158015610917573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061093a9190612dd9565b905082811461096657604051631872fc8d60e01b81526004810182905260248101849052604401610472565b5050506009909201805460ff1916600117905550505050565b6109888161145a565b505050565b5f61099782610dc3565b6080015192915050565b6109a9611794565b6109b25f6117c6565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6109ea611794565b6109f381611836565b5050565b5f610a00611794565b610a0a8383611b0e565b90505b92915050565b5f610a1c610f7a565b90505f80610a35610a2c85610fed565b60400151611fa8565b9150915080610a5b57604051632d07135360e01b81528115156004820152602401610472565b5f82815260068401602052604090208054610a7590612d81565b90505f03610a995760405163089938b360e11b815260048101839052602401610472565b60015f83815260078501602052604090205460ff166005811115610abf57610abf612bf3565b14610af2575f8281526007840160205260409081902054905163170cc93360e21b81526104729160ff1690600401612db9565b5f8281526006840160205260408120610b0a91612a12565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f610ba2610f7a565b5f8381526006820160205260409020805491925090610bc090612d81565b90505f03610be45760405163089938b360e11b815260048101839052602401610472565b60015f83815260078301602052604090205460ff166005811115610c0a57610c0a612bf3565b14610c3d575f8281526007820160205260409081902054905163170cc93360e21b81526104729160ff1690600401612db9565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610c769190600401613170565b6020604051808303815f875af1158015610c92573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109889190612dd9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610cfa5750825b90505f826001600160401b03166001148015610d155750303b155b905081158015610d23575080155b15610d415760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610d6a57845460ff60401b1916600160401b1785555b610d748787612164565b8315610dba57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610dcb612a49565b5f610dd4610f7a565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff166005811115610e0b57610e0b612bf3565b6005811115610e1c57610e1c612bf3565b8152602001600182018054610e3090612d81565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5c90612d81565b8015610ea75780601f10610e7e57610100808354040283529160200191610ea7565b820191905f5260205f20905b815481529060010190602001808311610e8a57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b610f0d611794565b6001600160a01b038116610f36575f604051631e4fbdf760e01b81526004016104729190612b34565b610f3f816117c6565b50565b5f80610f4c610f7a565b9050806008018484604051610f629291906131fa565b90815260200160405180910390205491505092915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611051573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110789190810190613218565b915091508061109a57604051636b2f19e960e01b815260040160405180910390fd5b8151156110c0578151604051636ba589a560e01b81526004810191909152602401610472565b60208201516001600160a01b0316156110f1578160200151604051624de75d60e31b81526004016104729190612b34565b5092915050565b5f815160261461112d57815160405163cc92daa160e01b815263ffffffff909116600482015260266024820152604401610472565b5f805b600281101561117c576111448160016132ea565b61114f906008613159565b61ffff1684828151811061116557611165612e35565b016020015160f81c901b9190911790600101611130565b5061ffff8116156111a65760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b6004811015611201576111bd8160036132ea565b6111c8906008613159565b63ffffffff16856111da836002613124565b815181106111ea576111ea612e35565b016020015160f81c901b91909117906001016111a9565b5063ffffffff81161561122757604051635b60892f60e01b815260040160405180910390fd5b5f805b602081101561127c5761123e81601f6132ea565b611249906008613159565b86611255836006613124565b8151811061126557611265612e35565b016020015160f81c901b919091179060010161122a565b50949350505050565b60605f808335602085013560146112a187870160408901612cf4565b6112ae6060890189612df0565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6001600160601b03191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b61132f6060850185612df0565b90508110156110f157816113466060860186612df0565b8381811061135657611356612e35565b90506020028101906113689190612e49565b61137290806132fd565b90506113816060870187612df0565b8481811061139157611391612e35565b90506020028101906113a39190612e49565b6113ad90806132fd565b6113ba6060890189612df0565b868181106113ca576113ca612e35565b90506020028101906113dc9190612e49565b6113ea9060208101906132fd565b6113f760608b018b612df0565b8881811061140757611407612e35565b90506020028101906114199190612e49565b61142a90606081019060400161333f565b6040516020016114409796959493929190613358565b60408051601f198184030181529190529150600101611322565b5f611463612a49565b5f61146c610f7a565b90505f8061147c610a2c87610fed565b9150915080156114a357604051632d07135360e01b81528115156004820152602401610472565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156114d4576114d4612bf3565b60058111156114e5576114e5612bf3565b81526020016001820180546114f990612d81565b80601f016020809104026020016040519081016040528092919081815260200182805461152590612d81565b80156115705780601f1061154757610100808354040283529160200191611570565b820191905f5260205f20905b81548152906001019060200180831161155357829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156115db576115db612bf3565b141580156115fc57506001815160058111156115f9576115f9612bf3565b14155b1561161d57805160405163170cc93360e21b81526104729190600401612db9565b60038151600581111561163257611632612bf3565b036116405760048152611645565b600581525b83600801816020015160405161165b9190612fe6565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561169f5761169f612bf3565b0217905550602082015160018201906116b89082613056565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790558051600581111561175d5761175d612bf3565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b3361179d6109b4565b6001600160a01b0316146109b2573360405163118cdaa760e01b81526004016104729190612b34565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61183e612a49565b5f611847610f7a565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561188057611880612bf3565b600581111561189157611891612bf3565b81526020016001820180546118a590612d81565b80601f01602080910402602001604051908101604052809291908181526020018280546118d190612d81565b801561191c5780601f106118f35761010080835404028352916020019161191c565b820191905f5260205f20905b8154815290600101906020018083116118ff57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561198a5761198a612bf3565b146119bd575f8481526007830160205260409081902054905163170cc93360e21b81526104729160ff1690600401612db9565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115611a0157611a01612bf3565b021790555060208201516001820190611a1a9082613056565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c090920151600390910180546001600160401b031916919092161790555f611ab7858261217e565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f611b17610f7a565b6009015460ff16611b3b57604051637fab81e560e01b815260040160405180910390fd5b5f611b44610f7a565b905042611b57606086016040870161333f565b6001600160401b0316111580611b915750611b756202a30042613124565b611b85606086016040870161333f565b6001600160401b031610155b15611bcb57611ba6606085016040860161333f565b604051635879da1360e11b81526001600160401b039091166004820152602401610472565b611be0611bdb60608601866133c1565b6122c8565b611bf0611bdb60808601866133c1565b6030611bff60208601866132fd565b905014611c3157611c1360208501856132fd565b6040516326475b2f60e11b8152610472925060040190815260200190565b611c3b84806132fd565b90505f03611c6857611c4d84806132fd565b604051633e08a12560e11b81526004016104729291906133d5565b5f60088201611c7786806132fd565b604051611c859291906131fa565b90815260200160405180910390205414611cbe57611ca384806132fd565b60405163a41f772f60e01b81526004016104729291906133d5565b611cc8835f612431565b6040805160e08101909152815481525f908190611dd49060208101611ced89806132fd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d35908a018a6132fd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d7e60608a0160408b0161333f565b6001600160401b03168152602001611d9960608a018a6133c1565b611da290613403565b8152602001611db460808a018a6133c1565b611dbd90613403565b8152602001876001600160401b0316815250612656565b5f82815260068601602052604090209193509150611df28282613056565b508160088401611e0288806132fd565b604051611e109291906131fa565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e4c908590600401612dc7565b6020604051808303815f875af1158015611e68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8c9190612dd9565b5f8481526007860160205260409020805460ff191660011790559050611eb287806132fd565b5f858152600787016020526040902060010191611ed09190836134ca565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b0316905560030180546001600160401b031916905580611f2e88806132fd565b604051611f3c9291906131fa565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190611f7a919061333f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f808251602714611fde57825160405163cc92daa160e01b815263ffffffff909116600482015260276024820152604401610472565b5f805b600281101561202d57611ff58160016132ea565b612000906008613159565b61ffff1685828151811061201657612016612e35565b016020015160f81c901b9190911790600101611fe1565b5061ffff8116156120575760405163407b587360e01b815261ffff82166004820152602401610472565b5f805b60048110156120b25761206e8160036132ea565b612079906008613159565b63ffffffff168661208b836002613124565b8151811061209b5761209b612e35565b016020015160f81c901b919091179060010161205a565b5063ffffffff81166002146120da57604051635b60892f60e01b815260040160405180910390fd5b5f805b602081101561212f576120f181601f6132ea565b6120fc906008613159565b87612108836006613124565b8151811061211857612118612e35565b016020015160f81c901b91909117906001016120dd565b505f8660268151811061214457612144612e35565b016020015191976001600160f81b03199092161515965090945050505050565b61216c612843565b6121758261288c565b6109f3816128a5565b5f805f612189610f7a565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166121b98582612431565b5f6121c3876128b6565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6122138a858b610f9e565b6040518263ffffffff1660e01b815260040161222f9190612dc7565b6020604051808303815f875af115801561224b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226f9190612dd9565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6122d56020820182612b1b565b63ffffffff161580156122f557506122f06020820182612df0565b151590505b1561233c576123076020820182612b1b565b6123146020830183612df0565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610472565b6123496020820182612df0565b90506123586020830183612b1b565b63ffffffff161115612371576123076020820182612b1b565b60015b6123816020830183612df0565b90508110156109f3576123976020830183612df0565b6123a26001846132ea565b8181106123b1576123b1612e35565b90506020020160208101906123c69190612cf4565b6001600160a01b03166123dc6020840184612df0565b838181106123ec576123ec612e35565b90506020020160208101906124019190612cf4565b6001600160a01b0316101561242957604051630dbc8d5f60e31b815260040160405180910390fd5b600101612374565b5f61243a610f7a565b90505f826001600160401b0316846001600160401b0316111561246857612461838561357e565b9050612475565b612472848461357e565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806124d75750600184015481516124d3916001600160401b031690613124565b8210155b156124fd576001600160401b03831660608201528181526040810151602082015261251c565b828160600181815161250f919061359e565b6001600160401b03169052505b606081015161252c9060646135be565b602082015160018601546001600160401b0392909216916125579190600160401b900460ff16613159565b101561258757606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610472565b856001600160401b0316816040018181516125a29190613124565b9052506040810180516001600160401b03871691906125c29083906132ea565b905250600184015460408201516064916125e791600160401b90910460ff1690613159565b101561260e578060400151604051635943317f60e01b815260040161047291815260200190565b80516002850155602081015160038501556040810151600485015560600151600590930180546001600160401b0319166001600160401b039094169390931790925550505050565b5f606082604001515160301461267f5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f986126c0988a9860019892979296909590949093909291016135e9565b60405160208183030381529060405290505f5b84608001516020015151811015612732578185608001516020015182815181106126ff576126ff612e35565b60200260200101516040516020016127189291906136a3565b60408051601f1981840301815291905291506001016126d3565b5060a08401518051602091820151516040516127529385939291016136d4565b60405160208183030381529060405290505f5b8460a0015160200151518110156127c457818560a0015160200151828151811061279157612791612e35565b60200260200101516040516020016127aa9291906136a3565b60408051601f198184030181529190529150600101612765565b5060c08401516040516127db91839160200161370f565b60405160208183030381529060405290506002816040516127fc9190612fe6565b602060405180830381855afa158015612817573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061283a9190612dd9565b94909350915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109b257604051631afcd79f60e31b815260040160405180910390fd5b612894612843565b61289c61291f565b610f3f81612927565b6128ad612843565b610f3f81612a0a565b5f806128c0610f7a565b5f84815260078201602052604090206002018054919250906008906128f490600160401b90046001600160401b0316613740565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6109b2612843565b61292f612843565b5f612938610f7a565b8235815590506014612950606084016040850161375b565b60ff16118061296f575061296a606083016040840161375b565b60ff16155b156129a357612984606083016040840161375b565b604051634a59bbff60e11b815260ff9091166004820152602401610472565b6129b3606083016040840161375b565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556129e4604083016020840161333f565b60019190910180546001600160401b0319166001600160401b0390921691909117905550565b610f0d612843565b508054612a1e90612d81565b5f825580601f10612a2d575050565b601f0160209004905f5260205f2090810190610f3f9190612a86565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612a9a575f8155600101612a87565b5090565b5f60208284031215612aae575f80fd5b5035919050565b803563ffffffff81168114612ac8575f80fd5b919050565b5f8060408385031215612ade575f80fd5b82356001600160401b03811115612af3575f80fd5b830160808186031215612b04575f80fd5b9150612b1260208401612ab5565b90509250929050565b5f60208284031215612b2b575f80fd5b610a0a82612ab5565b6001600160a01b0391909116815260200190565b80356001600160401b0381168114612ac8575f80fd5b5f8060408385031215612b6f575f80fd5b82356001600160401b03811115612b84575f80fd5b830160a08186031215612b95575f80fd5b9150612b1260208401612b48565b6001600160a01b0381168114610f3f575f80fd5b5f808284036080811215612bc9575f80fd5b6060811215612bd6575f80fd5b508291506060830135612be881612ba3565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612c2357634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612c41578181015183820152602001612c29565b50505f910152565b5f8151808452612c60816020860160208601612c27565b601f01601f19169290920160200192915050565b60208152612c86602082018351612c07565b5f602083015160e06040840152612ca1610100840182612c49565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612d04575f80fd5b8135612d0f81612ba3565b9392505050565b5f8060208385031215612d27575f80fd5b82356001600160401b0380821115612d3d575f80fd5b818501915085601f830112612d50575f80fd5b813581811115612d5e575f80fd5b866020828501011115612d6f575f80fd5b60209290920196919550909350505050565b600181811c90821680612d9557607f821691505b602082108103612db357634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610a0d8284612c07565b602081525f610a0a6020830184612c49565b5f60208284031215612de9575f80fd5b5051919050565b5f808335601e19843603018112612e05575f80fd5b8301803591506001600160401b03821115612e1e575f80fd5b6020019150600581901b36038213156122c1575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612e5d575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612e9d57612e9d612e67565b60405290565b604080519081016001600160401b0381118282101715612e9d57612e9d612e67565b604051601f8201601f191681016001600160401b0381118282101715612eed57612eed612e67565b604052919050565b5f6001600160401b03821115612f0d57612f0d612e67565b50601f01601f191660200190565b5f82601f830112612f2a575f80fd5b8135612f3d612f3882612ef5565b612ec5565b818152846020838601011115612f51575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612f7d575f80fd5b612f85612e7b565b82356001600160401b0380821115612f9b575f80fd5b612fa736838701612f1b565b83526020850135915080821115612fbc575f80fd5b50612fc936828601612f1b565b602083015250612fdb60408401612b48565b604082015292915050565b5f8251612e5d818460208701612c27565b601f82111561098857805f5260205f20601f840160051c8101602085101561301c5750805b601f840160051c820191505b8181101561303b575f8155600101613028565b5050505050565b5f19600383901b1c191660019190911b1790565b81516001600160401b0381111561306f5761306f612e67565b6130838161307d8454612d81565b84612ff7565b602080601f8311600181146130b1575f841561309f5750858301515b6130a98582613042565b865550613108565b5f85815260208120601f198616915b828110156130df578886015182559484019460019091019084016130c0565b50858210156130fc57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a0d57610a0d613110565b5f63ffffffff80831681810361314f5761314f613110565b6001019392505050565b8082028115828204841417610a0d57610a0d613110565b5f60208083525f845461318281612d81565b806020870152604060018084165f81146131a357600181146131bf576131ec565b60ff19851660408a0152604084151560051b8a010195506131ec565b895f5260205f205f5b858110156131e35781548b82018601529083019088016131c8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b80518015158114612ac8575f80fd5b5f8060408385031215613229575f80fd5b82516001600160401b038082111561323f575f80fd5b9084019060608287031215613252575f80fd5b61325a612e7b565b8251815260208084015161326d81612ba3565b82820152604084015183811115613282575f80fd5b80850194505087601f850112613296575f80fd5b835192506132a6612f3884612ef5565b83815288828587010111156132b9575f80fd5b6132c884838301848801612c27565b806040840152508195506132dd818801613209565b9450505050509250929050565b81810381811115610a0d57610a0d613110565b5f808335601e19843603018112613312575f80fd5b8301803591506001600160401b0382111561332b575f80fd5b6020019150368190038213156122c1575f80fd5b5f6020828403121561334f575f80fd5b610a0a82612b48565b5f8851613369818460208d01612c27565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b5f8235603e19833603018112612e5d575f80fd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60408236031215613413575f80fd5b61341b612ea3565b61342483612ab5565b81526020808401356001600160401b0380821115613440575f80fd5b9085019036601f830112613452575f80fd5b81358181111561346457613464612e67565b8060051b9150613475848301612ec5565b818152918301840191848101903684111561348e575f80fd5b938501935b838510156134b857843592506134a883612ba3565b8282529385019390850190613493565b94860194909452509295945050505050565b6001600160401b038311156134e1576134e1612e67565b6134f5836134ef8354612d81565b83612ff7565b5f601f841160018114613521575f851561350f5750838201355b6135198682613042565b84555061303b565b5f83815260208120601f198716915b828110156135505786850135825560209485019460019092019101613530565b508682101561356c575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160401b038281168282160390808211156110f1576110f1613110565b6001600160401b038181168382160190808211156110f1576110f1613110565b6001600160401b038181168382160280821691908281146135e1576135e1613110565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b16602684015250865161362f81602a850160208b01612c27565b86519083019061364681602a840160208b01612c27565b60c087901b6001600160c01b031916602a9290910191820152613678603282018660e01b6001600160e01b0319169052565b613691603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516136b4818460208801612c27565b60609390931b6001600160601b0319169190920190815260140192915050565b5f84516136e5818460208901612c27565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f8351613720818460208801612c27565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f6001600160401b0380831681810361314f5761314f613110565b5f6020828403121561376b575f80fd5b813560ff81168114612d0f575f80fdfea164736f6c6343000819000a", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index eacff333a..5b6f2f683 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -365,12 +365,10 @@ abstract contract PoSValidatorManager is uint64 weight = valueToWeight(lockedValue); bytes32 validationID = _initializeValidatorRegistration(registrationInput, weight); - $._posValidatorInfo[validationID] = PoSValidatorInfo({ - owner: _msgSender(), - delegationFeeBips: delegationFeeBips, - minStakeDuration: minStakeDuration, - uptimeSeconds: 0 - }); + $._posValidatorInfo[validationID].owner = _msgSender(); + $._posValidatorInfo[validationID].delegationFeeBips = delegationFeeBips; + $._posValidatorInfo[validationID].minStakeDuration = minStakeDuration; + $._posValidatorInfo[validationID].uptimeSeconds = 0; return validationID; } @@ -438,15 +436,13 @@ abstract contract PoSValidatorManager is // Store the delegation information. Set the delegator status to pending added, // so that it can be properly started in the complete step, even if the delivered // nonce is greater than the nonce used to initialize registration. - $._delegatorStakes[delegationID] = Delegator({ - status: DelegatorStatus.PendingAdded, - owner: delegatorAddress, - validationID: validationID, - weight: weight, - startedAt: 0, - startingNonce: nonce, - endingNonce: 0 - }); + $._delegatorStakes[delegationID].status = DelegatorStatus.PendingAdded; + $._delegatorStakes[delegationID].owner = delegatorAddress; + $._delegatorStakes[delegationID].validationID = validationID; + $._delegatorStakes[delegationID].weight = weight; + $._delegatorStakes[delegationID].startedAt = 0; + $._delegatorStakes[delegationID].startingNonce = nonce; + $._delegatorStakes[delegationID].endingNonce = 0; emit DelegatorAdded({ delegationID: delegationID, diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index 943a7b356..e061e2388 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -180,15 +180,13 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida // Save the initial validator as an active validator. $._registeredValidators[initialValidator.nodeID] = validationID; - $._validationPeriods[validationID] = Validator({ - status: ValidatorStatus.Active, - nodeID: initialValidator.nodeID, - startingWeight: initialValidator.weight, - messageNonce: 0, - weight: initialValidator.weight, - startedAt: uint64(block.timestamp), - endedAt: 0 - }); + $._validationPeriods[validationID].status = ValidatorStatus.Active; + $._validationPeriods[validationID].nodeID = initialValidator.nodeID; + $._validationPeriods[validationID].startingWeight = initialValidator.weight; + $._validationPeriods[validationID].messageNonce = 0; + $._validationPeriods[validationID].weight = initialValidator.weight; + $._validationPeriods[validationID].startedAt = uint64(block.timestamp); + $._validationPeriods[validationID].endedAt = 0; totalWeight += initialValidator.weight; emit InitialValidatorCreated( @@ -290,15 +288,13 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida // Submit the message to the Warp precompile. bytes32 messageID = WARP_MESSENGER.sendWarpMessage(registerSubnetValidatorMessage); - $._validationPeriods[validationID] = Validator({ - status: ValidatorStatus.PendingAdded, - nodeID: input.nodeID, - startingWeight: weight, - messageNonce: 0, - weight: weight, - startedAt: 0, // The validation period only starts once the registration is acknowledged. - endedAt: 0 - }); + $._validationPeriods[validationID].status = ValidatorStatus.PendingAdded; + $._validationPeriods[validationID].nodeID = input.nodeID; + $._validationPeriods[validationID].startingWeight = weight; + $._validationPeriods[validationID].messageNonce = 0; + $._validationPeriods[validationID].weight = weight; + $._validationPeriods[validationID].startedAt = 0; // The validation period only starts once the registration is acknowledged. + $._validationPeriods[validationID].endedAt = 0; emit ValidationPeriodCreated( validationID, input.nodeID, messageID, weight, input.registrationExpiry From 870dc9c062bb18f3110b6052347e68022f839a67 Mon Sep 17 00:00:00 2001 From: Meaghan FitzGerald Date: Thu, 31 Oct 2024 13:46:33 -0400 Subject: [PATCH 38/43] Update contracts/validator-manager/README.md Co-authored-by: bernard-avalabs <53795885+bernard-avalabs@users.noreply.github.com> Signed-off-by: Meaghan FitzGerald --- contracts/validator-manager/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index 8684e78a9..d3d405c06 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -101,7 +101,7 @@ Proof-of-Stake validator management is provided by the abstract contract `PoSVal ### Convert PoA to PoS -A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upgrading the implementation contract pointed to by the proxy. After performing the upgrade, the `PoSValidatorManager` contract should be initialized by calling `initialize` as described above. The validator set contained in the `PoAValidatorManager` will be tracked by the `PoSValidatorManager` after the upgrade, but will neither be eligible to stake and earn staking rewards, nor provide any such capability for potential delegators. +A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upgrading the implementation contract pointed to by the proxy. After performing the upgrade, the `PoSValidatorManager` contract should be initialized by calling `initialize` as described above. The validator set contained in the `PoAValidatorManager` will be tracked by the `PoSValidatorManager` after the upgrade, but these validators will neither be eligible to stake and earn staking rewards, nor support delegation. ## Usage From 5ac7b86a86b14d6fd7778f5cfeea459b87a2d311 Mon Sep 17 00:00:00 2001 From: meaghanfitzgerald Date: Thu, 31 Oct 2024 13:50:49 -0400 Subject: [PATCH 39/43] capitalization --- contracts/validator-manager/README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index d3d405c06..ef63c1bba 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -63,12 +63,13 @@ Proof-of-Authority validator management is provided via `PoAValidatorManager`, w Proof-of-Stake validator management is provided by the abstract contract `PoSValidatorManager`, which has two concrete implementations: `NativeTokenStakingManager` and `ERC20TokenStakingManager`. In addition to basic validator management provided in `ValidatorManager`, `PoSValidatorManager` supports uptime-based validation rewards, as well as delegation to a chosen validator. This [state transition diagram](./StateTransition.md) illustrates the relationship between validators and delegators. > [!NOTE] -> The `weightToValueFactor` fields of the `PoSValidatorManagerSettings` passed to `PoSValidatorManager`'s `initialize` function sets the factor used to convert between the weight that the Validator is registered with on the P-Chain, and the value transferred to the contract as stake. This involves integer division, which may result in loss of precision. When selecting `weightToValueFactor`, it's important to make the following considerations: +> The `weightToValueFactor` fields of the `PoSValidatorManagerSettings` passed to `PoSValidatorManager`'s `initialize` function sets the factor used to convert between the weight that the validator is registered with on the P-Chain, and the value transferred to the contract as stake. This involves integer division, which may result in loss of precision. When selecting `weightToValueFactor`, it's important to make the following considerations: +> > 1. If `weightToValueFactor` is near the denomination of the asset, then staking amounts on the order of 1 unit of the asset may cause the converted weight to round down to 0. This may impose a larger-than-expected minimum stake amount. -> - Ex: If USDC (denomination of 6) is used as the staking token and `weightToValueFactor` is 1e9, then any amount less than 1,000 USDC will round down to 0 and therefore be invalid. -> 2. Staked amounts up to `weightValueFactor - 1` may be lost in the contract as dust, as the Validator's registered weight is used to calculate the original staked amount. -> - Ex: `value=1001` and `weightToValueFactor=1e3`. The resulting weight will be `1`. Converting the weight back to a value results in `value=1000`. -> 3. The Validator's weight is represented on the P-Chain as a `uint64`. `PoSValidatorManager` restricts values such that the calculated weight does not exceed the maximum value for that type. +> - Ex: If USDC (denomination of 6) is used as the staking token and `weightToValueFactor` is 1e9, then any amount less than 1,000 USDC will round down to 0 and therefore be invalid. +> 2. Staked amounts up to `weightValueFactor - 1` may be lost in the contract as dust, as the validator's registered weight is used to calculate the original staked amount. +> - Ex: `value=1001` and `weightToValueFactor=1e3`. The resulting weight will be `1`. Converting the weight back to a value results in `value=1000`. +> 3. The validator's weight is represented on the P-Chain as a `uint64`. `PoSValidatorManager` restricts values such that the calculated weight does not exceed the maximum value for that type. #### NativeTokenStakingManager @@ -107,15 +108,15 @@ A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upg ### Register a Validator -Validator registration is initiated with a call to `initializeValidatorRegistration`. The sender of this transaction is registered as the validator owner. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterL1ValidatorMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatormessage) Warp message to be sent to the P-Chain. Each Validator registration request includes all of the information needed to identify the Validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterL1ValidatorMessage` must be delivered to the P-Chain. If the Validator is not registered on the P-Chain before the `expiry`, then the Validator may be removed from the contract state by calling `completeEndValidation`. +Validator registration is initiated with a call to `initializeValidatorRegistration`. The sender of this transaction is registered as the validator owner. Churn limitations are checked - only a certain (configurable) percentage of the total weight is allowed to be added or removed in a (configurable) period of time. The `ValidatorManager` then constructs a [`RegisterL1ValidatorMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatormessage) Warp message to be sent to the P-Chain. Each validator registration request includes all of the information needed to identify the validator and its stake weight, as well as an `expiry` timestamp before which the `RegisterL1ValidatorMessage` must be delivered to the P-Chain. If the validator is not registered on the P-Chain before the `expiry`, then the validator may be removed from the contract state by calling `completeEndValidation`. -The `RegisterL1ValidatorMessage` is delivered to the P-Chain as the Warp message payload of a `RegisterL1ValidatorTx`. Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatortx) for validity requirements. The P-Chain then signs a [`L1ValidatorRegistrationMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorregistrationmessage) Warp message indicating that the specified Validator was successfully registered on the P-Chain. +The `RegisterL1ValidatorMessage` is delivered to the P-Chain as the Warp message payload of a `RegisterL1ValidatorTx`. Please see the transaction [specification](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#registerl1validatortx) for validity requirements. The P-Chain then signs a [`L1ValidatorRegistrationMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorregistrationmessage) Warp message indicating that the specified validator was successfully registered on the P-Chain. The `L1ValidatorRegistrationMessage` is delivered to the `ValidatorManager` via a call to `completeValidatorRegistration`. For PoS Validator Managers, staking rewards begin accruing at this time. ### Remove a Validator -Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager`. Only the validator owner may initiate exit. For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./UptimeMessageSpec.md) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. +Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager`. Only the validator owner may initiate exit. For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./UptimeMessageSpec.md) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. The `ValidatorManager` contructs an [`L1ValidatorWeightMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. @@ -136,7 +137,7 @@ Disabled L1 validators can re-activate at any time by increasing their balance w Delegators removal may be initiated by calling `initializeEndDelegation`, as long as churn restrictions are not violated. Similar to `initializeEndValidation`, an uptime proof may be provided to be used to determine delegator rewards eligibility. If no proof is provided, the latest known uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). The validator's weight is updated on the P-Chain by the same mechanism used to register a delegator. The `SubnetValidatorWeightUpdateMessage` from the P-Chain is delivered to the `PoSValidatorManager` in the call to `completeEndDelegation`. -Either the Delegator owner or the Validator owner may initiate removing a Delegator. This is to prevent the Validator from being unable to remove itself due to churn limitations if it is has too high a proportion of the Subnet's total weight due to Delegator additions. The Validator owner may only remove Delegators after the minimum stake duration has elapsed. +Either the delegator owner or the validator owner may initiate removing a delegator. This is to prevent the validator from being unable to remove itself due to churn limitations if it is has too high a proportion of the Subnet's total weight due to delegator additions. The validator owner may only remove Delegators after the minimum stake duration has elapsed. ### (PoS only) Submit an Uptime Proof From 4f99b6f3d0b01e64b071180ac2253b53c6e810ec Mon Sep 17 00:00:00 2001 From: Geoff Stuart Date: Thu, 31 Oct 2024 14:59:33 -0400 Subject: [PATCH 40/43] Add ictt tests --- .github/workflows/test.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b9a206780..6ebb39aca 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -120,3 +120,27 @@ jobs: export PATH=$PATH:$HOME/.foundry/bin export PATH="$PATH:$GOPATH/bin" ./scripts/local/e2e_test.sh --components validator-manager + + ictt_e2e: + name: ictt-e2e-tests + runs-on: ubuntu-22.04 + steps: + - name: Checkout repositories and submodules + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + + - name: Install Foundry + run: ./scripts/install_foundry.sh + + - name: Run E2E Tests + # Forge installs to BASE_DIR, but updates the PATH definition in $HOME/.bashrc + run: | + export PATH=$PATH:$HOME/.foundry/bin + export PATH="$PATH:$GOPATH/bin" + ./scripts/local/e2e_test.sh --components ictt From 0c8a107217c0e7a65abc04d36263bb455eb5d2ce Mon Sep 17 00:00:00 2001 From: Geoff Stuart Date: Thu, 31 Oct 2024 15:26:38 -0400 Subject: [PATCH 41/43] Before and after suite --- tests/local/ictt/ictt_suite_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/local/ictt/ictt_suite_test.go b/tests/local/ictt/ictt_suite_test.go index 7b56b3d28..fbdae4187 100644 --- a/tests/local/ictt/ictt_suite_test.go +++ b/tests/local/ictt/ictt_suite_test.go @@ -45,7 +45,7 @@ func TestValidatorManager(t *testing.T) { } // Define the Teleporter before and after suite functions. -var _ = ginkgo.BeforeEach(func() { +var _ = ginkgo.BeforeSuite(func() { // Generate the Teleporter deployment values teleporterDeployerTransaction, teleporterDeployedBytecode, @@ -105,7 +105,7 @@ var _ = ginkgo.BeforeEach(func() { } }) -var _ = ginkgo.AfterEach(func() { +var _ = ginkgo.AfterSuite(func() { LocalNetworkInstance.TearDownNetwork() LocalNetworkInstance = nil }) From acc20e1a6e54a1a604f3fc197ec7a2d0b59a86c5 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 31 Oct 2024 15:17:14 -0500 Subject: [PATCH 42/43] recursively expand remappings --- scripts/abi_bindings.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 6a96ab2cd..8a79ff82a 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -65,9 +65,26 @@ if ! [[ "$extracted_version" == "$SOLIDITY_VERSION" ]]; then echo "Expected solc version $SOLIDITY_VERSION, but found $extracted_version. Please install the correct version." && exit 1 fi +# Install abigen echo "Building subnet-evm abigen" go install github.com/ava-labs/subnet-evm/cmd/abigen@${SUBNET_EVM_VERSION} +# Solc does not recursively expand remappings, so we must construct them manually +remappings=$(cat $TELEPORTER_PATH/remappings.txt) + +# Recursively search for all remappings.txt files in the lib directory. +# For each file, prepend the remapping with the relative path to the file. +while read -r filepath; do + relative_path="${filepath#$TELEPORTER_PATH/}" + dir_path=$(dirname "$relative_path") + echo $dir_path + + # Use sed to transform each line with the relative path if it matches the @token=remapping pattern, + # so that each remapping is of the form @token=lib/path/to/remapping + transformed_lines=$(sed -n "s|^\(@[^=]*=\)\(.*\)|\1$dir_path/\2|p" "$filepath") + remappings+=" $transformed_lines " +done < <(find "$TELEPORTER_PATH/lib" -type f -name "remappings.txt" ) + function convertToLower() { if [ "$ARCH" = 'arm64' ]; then echo $1 | perl -ne 'print lc' @@ -114,7 +131,7 @@ function generate_bindings() { cwd=$(pwd) cd $TELEPORTER_PATH - solc --optimize --evm-version $EVM_VERSION --combined-json abi,bin,metadata,ast,devdoc,userdoc --pretty-json $cwd/$dir/$contract_name.sol $(cat $TELEPORTER_PATH/remappings.txt) > $combined_json + solc --optimize --evm-version $EVM_VERSION --combined-json abi,bin,metadata,ast,devdoc,userdoc --pretty-json $cwd/$dir/$contract_name.sol $remappings > $combined_json cd $cwd # construct the exclude list From 85f354e8a7d3e8f1b35f45694ffabd8e22bb686b Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 31 Oct 2024 15:17:24 -0500 Subject: [PATCH 43/43] update bindings --- abi-bindings/go/ProxyAdmin/ProxyAdmin.go | 2 +- .../TransparentUpgradeableProxy.go | 2 +- abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go | 2 +- .../go/ictt/TokenHome/ERC20TokenHome/ERC20TokenHome.go | 2 +- .../ERC20TokenHomeUpgradeable/ERC20TokenHomeUpgradeable.go | 2 +- .../go/ictt/TokenHome/NativeTokenHome/NativeTokenHome.go | 2 +- .../NativeTokenHomeUpgradeable/NativeTokenHomeUpgradeable.go | 2 +- .../go/ictt/TokenRemote/ERC20TokenRemote/ERC20TokenRemote.go | 2 +- .../ERC20TokenRemoteUpgradeable.go | 2 +- .../ictt/TokenRemote/NativeTokenRemote/NativeTokenRemote.go | 2 +- .../NativeTokenRemoteUpgradeable.go | 2 +- abi-bindings/go/ictt/WrappedNativeToken/WrappedNativeToken.go | 2 +- .../ictt/mocks/ExampleERC20Decimals/ExampleERC20Decimals.go | 2 +- .../MockERC20SendAndCallReceiver.go | 2 +- .../MockNativeSendAndCallReceiver.go | 2 +- abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go | 2 +- .../go/teleporter/TeleporterMessenger/TeleporterMessenger.go | 2 +- .../registry/TeleporterRegistry/TeleporterRegistry.go | 2 +- .../go/teleporter/tests/TestMessenger/TestMessenger.go | 2 +- .../ERC20TokenStakingManager/ERC20TokenStakingManager.go | 4 ++-- .../ExampleRewardCalculator/ExampleRewardCalculator.go | 2 +- .../NativeTokenStakingManager/NativeTokenStakingManager.go | 4 ++-- .../PoAValidatorManager/PoAValidatorManager.go | 4 ++-- 23 files changed, 26 insertions(+), 26 deletions(-) diff --git a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go index c9fdbdb38..3709781cf 100644 --- a/abi-bindings/go/ProxyAdmin/ProxyAdmin.go +++ b/abi-bindings/go/ProxyAdmin/ProxyAdmin.go @@ -32,7 +32,7 @@ var ( // ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. var ProxyAdminMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220419d6632987eb917157bb03c317541902fd0ab9ce622250754cc0a1435fc135064736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220d59a4e8733dc17249b11e0c0a7cde5355ac9476021592bb25155b31d6330456e64736f6c63430008190033", } // ProxyAdminABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go index 8e294451f..d5f60915f 100644 --- a/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go +++ b/abi-bindings/go/TransparentUpgradeableProxy/TransparentUpgradeableProxy.go @@ -32,7 +32,7 @@ var ( // TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. var TransparentUpgradeableProxyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}]", - Bin: "0x60a0604052604051610e0d380380610e0d8339810160408190526100229161038c565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610471565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610ded833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610456565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610ded8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806108f183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561038457818101518382015260200161036c565b50505f910152565b5f805f6060848603121561039e575f80fd5b6103a78461033b565b92506103b56020850161033b565b60408501519092506001600160401b03808211156103d1575f80fd5b818601915086601f8301126103e4575f80fd5b8151818111156103f6576103f6610356565b604051601f8201601f19908116603f0116810190838211818310171561041e5761041e610356565b81604052828152896020848701011115610436575f80fd5b61044783602083016020880161036a565b80955050505050509250925092565b5f825161046781846020870161036a565b9190910192915050565b6080516104696104885f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea26469706673582212201eb4d463f964f98216e0d28d55099dcab101910791cb0c79245ccdfa3503db6864736f6c63430008190033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220419d6632987eb917157bb03c317541902fd0ab9ce622250754cc0a1435fc135064736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + Bin: "0x60a0604052604051610e0d380380610e0d8339810160408190526100229161038c565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610471565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610ded833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f19190610456565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610ded8339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806108f183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561038457818101518382015260200161036c565b50505f910152565b5f805f6060848603121561039e575f80fd5b6103a78461033b565b92506103b56020850161033b565b60408501519092506001600160401b03808211156103d1575f80fd5b818601915086601f8301126103e4575f80fd5b8151818111156103f6576103f6610356565b604051601f8201601f19908116603f0116810190838211818310171561041e5761041e610356565b81604052828152896020848701011115610436575f80fd5b61044783602083016020880161036a565b80955050505050509250925092565b5f825161046781846020870161036a565b9190910192915050565b6080516104696104885f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea2646970667358221220625f778065ac20e59b0e4b6eed7a7975160f78a005a445285c44ed04f51527e764736f6c63430008190033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220d59a4e8733dc17249b11e0c0a7cde5355ac9476021592bb25155b31d6330456e64736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go index 780cd7e82..a3dee70ed 100644 --- a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go +++ b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go @@ -42,7 +42,7 @@ type ValidatorSetSigMessage struct { // ValidatorSetSigMetaData contains all meta data concerning the ValidatorSetSig contract. var ValidatorSetSigMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Delivered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"executeCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"targetBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorSetSigAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structValidatorSetSigMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"validateMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60c060405234801561000f575f80fd5b50604051610b76380380610b7683398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a7e6100f85f395f818161017701526104ba01525f818161012a01526102790152610a7e5ff3fe608060405260043610610071575f3560e01c80637ecebe001161004c5780637ecebe00146100e05780638d6e579d14610119578063b771b3bc1461014c578063d127dc9b14610166575f80fd5b80630731775d1461007c5780635433da42146100ac5780637d969c34146100c1575f80fd5b3661007857005b5f80fd5b348015610087575f80fd5b5061008f5f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf6100ba366004610642565b610199565b005b3480156100cc575f80fd5b506100bf6100db36600461079a565b6104b6565b3480156100eb575f80fd5b5061010b6100fa366004610842565b60016020525f908152604090205481565b6040519081526020016100a3565b348015610124575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610157575f80fd5b5061008f6005600160991b0181565b348015610171575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a161061a565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261021191908101906108c9565b91509150806102755760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102f45760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161026c565b60208201516001600160a01b0316156103655760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161026c565b5f826040015180602001905181019061037e9190610969565b9050610389816104b6565b6060810151610399906001610a08565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103d791610a2d565b5f6040518083038185875af1925050503d805f8114610411576040519150601f19603f3d011682016040523d82523d5f602084013e610416565b606091505b50509050806104675760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161026c565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104b360015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461053a5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161026c565b60208101516001600160a01b031630146105ae5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161026c565b60608101516040808301516001600160a01b03165f90815260016020522054146104b35760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161026c565b60025f540361063c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610652575f80fd5b813563ffffffff81168114610665575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156106a3576106a361066c565b60405290565b6040516060810167ffffffffffffffff811182821017156106a3576106a361066c565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f5576106f561066c565b604052919050565b6001600160a01b03811681146104b3575f80fd5b803561071c816106fd565b919050565b5f67ffffffffffffffff82111561073a5761073a61066c565b50601f01601f191660200190565b5f82601f830112610757575f80fd5b813561076a61076582610721565b6106cc565b81815284602083860101111561077e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107aa575f80fd5b813567ffffffffffffffff808211156107c1575f80fd5b9083019060c082860312156107d4575f80fd5b6107dc610680565b823581526107ec60208401610711565b60208201526107fd60408401610711565b6040820152606083013560608201526080830135608082015260a083013582811115610827575f80fd5b61083387828601610748565b60a08301525095945050505050565b5f60208284031215610852575f80fd5b8135610665816106fd565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b5f82601f83011261088e575f80fd5b815161089c61076582610721565b8181528460208386010111156108b0575f80fd5b6108c182602083016020870161085d565b949350505050565b5f80604083850312156108da575f80fd5b825167ffffffffffffffff808211156108f1575f80fd5b9084019060608287031215610904575f80fd5b61090c6106a9565b82518152602083015161091e816106fd565b6020820152604083015182811115610934575f80fd5b6109408882860161087f565b6040830152508094505050506020830151801515811461095e575f80fd5b809150509250929050565b5f60208284031215610979575f80fd5b815167ffffffffffffffff80821115610990575f80fd5b9083019060c082860312156109a3575f80fd5b6109ab610680565b8251815260208301516109bd816106fd565b602082015260408301516109d0816106fd565b80604083015250606083015160608201526080830151608082015260a0830151828111156109fc575f80fd5b6108338782860161087f565b80820180821115610a2757634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8251610a3e81846020870161085d565b919091019291505056fea264697066735822122055654e58044a348d2df384d13a27514f1346b87f40a2e59ab0ceb6eacb21144c64736f6c63430008190033", + Bin: "0x60c060405234801561000f575f80fd5b50604051610b76380380610b7683398101604081905261002e916100b2565b60015f5560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610085573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a991906100b2565b60a052506100c9565b5f602082840312156100c2575f80fd5b5051919050565b60805160a051610a7e6100f85f395f818161017701526104ba01525f818161012a01526102790152610a7e5ff3fe608060405260043610610071575f3560e01c80637ecebe001161004c5780637ecebe00146100e05780638d6e579d14610119578063b771b3bc1461014c578063d127dc9b14610166575f80fd5b80630731775d1461007c5780635433da42146100ac5780637d969c34146100c1575f80fd5b3661007857005b5f80fd5b348015610087575f80fd5b5061008f5f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf6100ba366004610642565b610199565b005b3480156100cc575f80fd5b506100bf6100db36600461079a565b6104b6565b3480156100eb575f80fd5b5061010b6100fa366004610842565b60016020525f908152604090205481565b6040519081526020016100a3565b348015610124575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610157575f80fd5b5061008f6005600160991b0181565b348015610171575f80fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a161061a565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261021191908101906108c9565b91509150806102755760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102f45760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b606482015260840161026c565b60208201516001600160a01b0316156103655760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b606482015260840161026c565b5f826040015180602001905181019061037e9190610969565b9050610389816104b6565b6060810151610399906001610a08565b604080830180516001600160a01b039081165f9081526001602052838120949094559051608085015160a0860151935191909216926103d791610a2d565b5f6040518083038185875af1925050503d805f8114610411576040519150601f19603f3d011682016040523d82523d5f602084013e610416565b606091505b50509050806104675760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c656400000000604482015260640161026c565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104b360015f55565b50565b80517f00000000000000000000000000000000000000000000000000000000000000001461053a5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b606482015260840161026c565b60208101516001600160a01b031630146105ae5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b606482015260840161026c565b60608101516040808301516001600160a01b03165f90815260016020522054146104b35760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e63650000604482015260640161026c565b60025f540361063c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60208284031215610652575f80fd5b813563ffffffff81168114610665575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156106a3576106a361066c565b60405290565b6040516060810167ffffffffffffffff811182821017156106a3576106a361066c565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f5576106f561066c565b604052919050565b6001600160a01b03811681146104b3575f80fd5b803561071c816106fd565b919050565b5f67ffffffffffffffff82111561073a5761073a61066c565b50601f01601f191660200190565b5f82601f830112610757575f80fd5b813561076a61076582610721565b6106cc565b81815284602083860101111561077e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107aa575f80fd5b813567ffffffffffffffff808211156107c1575f80fd5b9083019060c082860312156107d4575f80fd5b6107dc610680565b823581526107ec60208401610711565b60208201526107fd60408401610711565b6040820152606083013560608201526080830135608082015260a083013582811115610827575f80fd5b61083387828601610748565b60a08301525095945050505050565b5f60208284031215610852575f80fd5b8135610665816106fd565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b5f82601f83011261088e575f80fd5b815161089c61076582610721565b8181528460208386010111156108b0575f80fd5b6108c182602083016020870161085d565b949350505050565b5f80604083850312156108da575f80fd5b825167ffffffffffffffff808211156108f1575f80fd5b9084019060608287031215610904575f80fd5b61090c6106a9565b82518152602083015161091e816106fd565b6020820152604083015182811115610934575f80fd5b6109408882860161087f565b6040830152508094505050506020830151801515811461095e575f80fd5b809150509250929050565b5f60208284031215610979575f80fd5b815167ffffffffffffffff80821115610990575f80fd5b9083019060c082860312156109a3575f80fd5b6109ab610680565b8251815260208301516109bd816106fd565b602082015260408301516109d0816106fd565b80604083015250606083015160608201526080830151608082015260a0830151828111156109fc575f80fd5b6108338782860161087f565b80820180821115610a2757634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8251610a3e81846020870161085d565b919091019291505056fea2646970667358221220b37908d0698377f4a4cfd2a85b528b65bbfde731fa649fdc7fa8fcd5fbad682864736f6c63430008190033", } // ValidatorSetSigABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenHome/ERC20TokenHome/ERC20TokenHome.go b/abi-bindings/go/ictt/TokenHome/ERC20TokenHome/ERC20TokenHome.go index b4c18cd45..66399d77f 100644 --- a/abi-bindings/go/ictt/TokenHome/ERC20TokenHome/ERC20TokenHome.go +++ b/abi-bindings/go/ictt/TokenHome/ERC20TokenHome/ERC20TokenHome.go @@ -67,7 +67,7 @@ type SendTokensInput struct { // ERC20TokenHomeMetaData contains all meta data concerning the ERC20TokenHome contract. var ERC20TokenHomeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialCollateralNeeded\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"RemoteRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getRemoteTokenTransferrerSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralNeeded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"multiplyOnRemote\",\"type\":\"bool\"}],\"internalType\":\"structRemoteTokenTransferrerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getTransferredBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161502438038061502483398101604081905261002e91610893565b61003b8585858585610048565b505050505061090d565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100915750825b90505f826001600160401b031660011480156100ac5750303b155b9050811580156100ba575080155b156100d85760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010657845460ff60401b1916680100000000000000001785555b6101138a8a8a8a8a610165565b831561015957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b61016d61018a565b61017a85858585856101da565b610183826101ff565b5050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101d857604051631afcd79f60e31b815260040160405180910390fd5b565b6101e261018a565b6101ed858585610248565b6101f5610268565b6101838282610278565b61020761018a565b7f914a9547f6c3ddce1d5efbd9e687708f0d1d408ce129e8e1a88bce4f40e2950080546001600160a01b0319166001600160a01b0392909216919091179055565b61025061018a565b61025a8382610404565b6102638261042a565b505050565b61027061018a565b6101d861043b565b61028061018a565b6001600160a01b0382166102db5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064015b60405180910390fd5b60128160ff16111561033a5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016102d2565b5f7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e60090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d291906108f6565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b61040c61018a565b610414610465565b61041c610475565b610426828261047d565b5050565b61043261018a565b61004581610607565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b61046d61018a565b6101d8610641565b6101d861018a565b61048561018a565b6001600160a01b0382166105015760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016102d2565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610566573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058a91906108f6565b116105df5760405162461bcd60e51b815260206004820152603260248201525f80516020615004833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102d2565b81546001600160a01b0319166001600160a01b03821617825561060183610670565b50505050565b61060f61018a565b6001600160a01b03811661063857604051631e4fbdf760e01b81525f60048201526024016102d2565b61004581610808565b61064961018a565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061045e565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156106d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fb91906108f6565b60028301549091508184111561075a5760405162461bcd60e51b815260206004820152603160248201525f8051602061500483398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102d2565b8084116107cf5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102d2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b038116811461088e575f80fd5b919050565b5f805f805f60a086880312156108a7575f80fd5b6108b086610878565b94506108be60208701610878565b9350604086015192506108d360608701610878565b9150608086015160ff811681146108e8575f80fd5b809150509295509295909350565b5f60208284031215610906575f80fd5b5051919050565b6146ea8061091a5f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c806365690038116100a9578063c8511ada1161006e578063c8511ada146102b4578063c868efaa14610388578063d2cc7a701461039b578063f2fde38b146103c2578063fd658268146103d5575f80fd5b80636569003814610232578063715018a6146102455780638da5cb5b1461024d578063909a6ac01461027d5780639731429714610291575f80fd5b80634511243e116100ef5780634511243e146101d15780634797735f146101e45780635d16225d146101f85780635eb995141461020b57806362e3901b1461021e575f80fd5b806310fe9ae81461012b578063154d625a146101745780632b0d8f18146101955780633bb03890146101aa5780634213cf78146101bd575b5f80fd5b7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61018761018236600461368c565b6103e8565b60405190815260200161016b565b6101a86101a33660046136ba565b610430565b005b6101a86101b83660046136e3565b610532565b5f8051602061461583398151915254610187565b6101a86101df3660046136ba565b610646565b6101875f8051602061467583398151915281565b6101a8610206366004613747565b610735565b6101a8610219366004613776565b610751565b6101875f8051602061461583398151915281565b6101a861024036600461378d565b610765565b6101a861078e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610157565b6101875f8051602061469583398151915281565b6102a461029f3660046136ba565b6107a1565b604051901515815260200161016b565b6103516102c236600461368c565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061463583398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161016b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b6101a86103963660046137d3565b6107c1565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610187565b6101a86103d03660046136ba565b61097e565b6101a86103e3366004613854565b6109b8565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f805160206146958339815191526104466109c8565b6001600160a01b0382166104755760405162461bcd60e51b815260040161046c90613889565b60405180910390fd5b61047f81836109d0565b156104e25760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161046c565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156105765750825b90505f826001600160401b031660011480156105915750303b155b90508115801561059f575080155b156105bd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105e757845460ff60401b1916600160401b1785555b6105f48a8a8a8a8a6109f1565b831561063a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f8051602061469583398151915261065c6109c8565b6001600160a01b0382166106825760405162461bcd60e51b815260040161046c90613889565b61068c81836109d0565b6106ea5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161046c565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61074d61074736849003840184613989565b82610a16565b5050565b6107596109c8565b61076281610c27565b50565b61074d61077d5f805160206146158339815191525490565b303361078886613a8b565b85610dbf565b610796610fcb565b61079f5f611026565b565b5f5f805160206146958339815191526107ba81846109d0565b9392505050565b6107c9611096565b5f5f8051602061469583398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108589190613b59565b10156108bf5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161046c565b6108c981336109d0565b1561092f5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161046c565b61096f858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506110e092505050565b506109786114d3565b50505050565b610986610fcb565b6001600160a01b0381166109af57604051631e4fbdf760e01b81525f600482015260240161046c565b61076281611026565b6109c38383836114fd565b505050565b61079f610fcb565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6109f96116ed565b610a068585858585611736565b610a0f8261175b565b5050505050565b5f805160206146558339815191528054600114610a455760405162461bcd60e51b815260040161046c90613b70565b60028155610a5283611791565b60e08301516001600160a01b031615610a7d5760405162461bcd60e51b815260040161046c90613bb4565b5f80610a9b855f01518660200151868860600151896080015161183a565b915091505f604051806040016040528060016004811115610abe57610abe613bfa565b8152602001604051806040016040528089604001516001600160a01b0316815260200186815250604051602001610af59190613c0e565b60405160208183030381529060405281525090505f610bd46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b604051908082528060200260200182016040528015610ba6578160200160208202803683370190505b50815260200184604051602001610bbd9190613c7b565b6040516020818303038152906040528152506119ff565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528987604051610c12929190613cbd565b60405180910390a35050600190925550505050565b5f8051602061469583398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f9190613b59565b600283015490915081841115610d115760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161046c565b808411610d865760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161046c565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f805160206146558339815191528054600114610dee5760405162461bcd60e51b815260040161046c90613b70565b60028155610dfb83611b1a565b60c08301516001600160a01b031615610e265760405162461bcd60e51b815260040161046c90613bb4565b5f80610e46855f015186602001518688610100015189610120015161183a565b915091505f604051806040016040528060026004811115610e6957610e69613bfa565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610eec9190613d3e565b60405160208183030381529060405281525090505f610f756040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610fb3929190613ddc565b60405180910390a35050600190925550505050505050565b33610ffd7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461079f5760405163118cdaa760e01b815233600482015260240161046c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016110da57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f8051602061461583398151915290505f828060200190518101906111069190613f00565b905060018151600481111561111d5761111d613bfa565b03611165575f816020015180602001905181019061113b9190613f88565b90505f61114d87878460200151611cff565b905061115c825f015182611d8a565b50505050505050565b60028151600481111561117a5761117a613bfa565b03611293575f81602001518060200190518101906111989190613fc0565b90505f6111aa87878460800151611cff565b825190915087146112105760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b606482015260840161046c565b856001600160a01b031682602001516001600160a01b0316146112895760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b606482015260840161046c565b61115c8282611ded565b6003815160048111156112a8576112a8613bfa565b0361137c575f81602001518060200190518101906112c6919061408a565b90505f806112de888885606001518660800151611fcd565b91509150611372604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b031681525083612078565b5050505050505050565b60048151600481111561139157611391613bfa565b0361148c575f81602001518060200190518101906113af9190614123565b90505f806113c888888560800151866101400151611fcd565b915091506113728888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612203565b5f815160048111156114a0576114a0613bfa565b03610a0f575f81602001518060200190518101906114be919061421b565b90506114cb8686836123e0565b505050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614655833981519152805460011461152c5760405162461bcd60e51b815260040161046c90613b70565b60028082555f8581525f80516020614635833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f80516020614615833981519152916115c35760405162461bcd60e51b815260040161046c90614281565b5f8160200151116116205760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b606482015260840161046c565b611629846127e7565b93505f80826020015186106116585760208301515f925061164a90876142ca565b90508260200151955061166b565b85836020015161166891906142ca565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156116df576116df3382611d8a565b505060019092555050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661079f57604051631afcd79f60e31b815260040160405180910390fd5b61173e6116ed565b61174985858561280e565b611751612829565b610a0f8282612839565b6117636116ed565b5f8051602061467583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60408101516001600160a01b03166117f55760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b606482015260840161046c565b5f8160c00151116118185760405162461bcd60e51b815260040161046c906142dd565b60a0810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8581525f80516020614635833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f8051602061461583398151915291906118d15760405162461bcd60e51b815260040161046c90614281565b6020810151156119335760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b606482015260840161046c565b61193c876127e7565b965084156119525761194f8633876129a0565b94505b5f611966826040015183606001518a612af9565b90505f81116119b75760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e74000000604482015260640161046c565b5f8a815260038401602090815260408083206001600160a01b038d168452909152812080548392906119ea908490614360565b90915550909a95995094975050505050505050565b5f80611a09612b0f565b60408401516020015190915015611aae576040830151516001600160a01b0316611a8b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b606482015260840161046c565b604083015160208101519051611aae916001600160a01b03909116908390612bff565b604051630624488560e41b81526001600160a01b03821690636244885090611ada908690600401614373565b6020604051808303815f875af1158015611af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ba9190613b59565b60408101516001600160a01b0316611b875760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b606482015260840161046c565b5f816080015111611baa5760405162461bcd60e51b815260040161046c906142dd565b5f8160a0015111611c095760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b606482015260840161046c565b80608001518160a0015110611c6f5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b606482015260840161046c565b60e08101516001600160a01b0316611cdc5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b606482015260840161046c565b610140810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8381525f80516020614635833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f8051602061461583398151915290611d8081878787612c86565b9695505050505050565b6040518181525f80516020614675833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a280546109c3906001600160a01b03168484612d7d565b5f80516020614675833981519152805460608401516001600160a01b0390911690611e1a90829085612bff565b5f845f01518560200151866040015184878960a00151604051602401611e459695949392919061442a565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c086015160608701519192505f91611e89919084612ddc565b6060870151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192505f919085169063dd62ed3e90604401602060405180830381865afa158015611ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f029190613b59565b9050611f138488606001515f612de9565b8115611f655786606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff487604051611f5891815260200190565b60405180910390a2611fad565b86606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb087604051611fa491815260200190565b60405180910390a25b801561115c5760e087015161115c906001600160a01b0386169083612d7d565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206146158339815191529082612051828a8a8a612c86565b90505f6120678360400151846060015189612e78565b919a91995090975050505050505050565b5f8051602061465583398151915280546001146120a75760405162461bcd60e51b815260040161046c90613b70565b600281556120b483611791565b5f6120cc845f01518560200151858760800151612e85565b9050805f036120e9576120e38460e0015184611d8a565b506121fb565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161212f9190613c0e565b60405160208183030381529060405281525090505f6121bb6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf087856040516121ef929190613cbd565b60405180910390a25050505b600190555050565b5f8051602061465583398151915280546001146122325760405162461bcd60e51b815260040161046c90613b70565b6002815561223f83611b1a565b5f612258845f0151856020015185876101200151612e85565b9050805f036122755761226f8460c0015184611d8a565b506123d5565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016123079190613d3e565b60405160208183030381529060405281525090505f6123956040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb3087856040516123c9929190613ddc565b60405180910390a25050505b600190555050505050565b5f80516020614615833981519152836124475760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b606482015260840161046c565b805484036124af5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b606482015260840161046c565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b606482015260840161046c565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561259e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b606482015260840161046c565b6012826040015160ff1611156126085760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b606482015260840161046c565b6001810154602083015160ff908116600160a01b909204161461267c5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b606482015260840161046c565b5f8061269d8360010160149054906101000a900460ff168560400151612ff6565b915091505f6126b08383875f0151612e78565b90508180156126ca575084516126c790849061447e565b15155b156126dd576126da600182614360565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b908388604001516040516127d692919091825260ff16602082015260400190565b60405180910390a350505050505050565b5f8051602061467583398151915280545f91906107ba906001600160a01b031633856129a0565b6128166116ed565b612820838261303e565b6109c382613060565b6128316116ed565b61079f613071565b6128416116ed565b6001600160a01b0382166128975760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e2061646472657373000000604482015260640161046c565b60128160ff1611156128f65760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b606482015260840161046c565b5f5f8051602061461583398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561294a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296e9190613b59565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156129e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0a9190613b59565b9050612a216001600160a01b038616853086613085565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a899190613b59565b9050818111612aef5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161046c565b611d8082826142ca565b5f612b0784848460016130be565b949350505050565b5f8051602061469583398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8d9190614491565b9050612b9982826109d0565b1561042a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161046c565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c709190613b59565b90506109788484612c818585614360565b612de9565b83515f90612ca65760405162461bcd60e51b815260040161046c90614281565b602085015115612d045760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b606482015260840161046c565b612d0f8484846130e5565b5f612d238660400151876060015185612e78565b90505f8111612d745760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e7400000000604482015260640161046c565b95945050505050565b6040516001600160a01b038381166024830152604482018390526109c391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506131d2565b5f612b07845f8585613233565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612e3a8482613303565b610978576040516001600160a01b0384811660248301525f6044830152612e6e91869182169063095ea7b390606401612daa565b61097884826131d2565b5f612b078484845f6130be565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206146158339815191529180612f0b57505f8160200151115b15612f1a575f92505050612b07565b838511612f7e5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b606482015260840161046c565b612f8884866142ca565b94505f612f9e8260400151836060015188612af9565b9050805f03612fb2575f9350505050612b07565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290612fe5908490614360565b909155509098975050505050505050565b5f8060ff8085169084161181816130195761301185876144ac565b60ff16613027565b61302386866144ac565b60ff165b61303290600a6145a5565b96919550909350505050565b6130466116ed565b61304e6133a0565b6130566133b0565b61074d82826133b8565b6130686116ed565b6107628161353c565b5f5f805160206146558339815191526114f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526109789186918216906323b872dd90608401612daa565b5f811515841515036130db576130d485846145b0565b9050612b07565b612d7485846145c7565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f80516020614615833981519152908281101561319c5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b606482015260840161046c565b6131a683826142ca565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6131e66001600160a01b03841683613544565b905080515f1415801561320a57508080602001905181019061320891906145da565b155b156109c357604051635274afe760e01b81526001600160a01b038416600482015260240161046c565b5f845a10156132845760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e74206761730000000000604482015260640161046c565b834710156132d45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c7565000000604482015260640161046c565b826001600160a01b03163b5f036132ec57505f612b07565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b03168460405161331e91906145f9565b5f604051808303815f865af19150503d805f8114613357576040519150601f19603f3d011682016040523d82523d5f602084013e61335c565b606091505b509150915081801561338657508051158061338657508080602001905181019061338691906145da565b8015612d745750505050506001600160a01b03163b151590565b6133a86116ed565b61079f613551565b61079f6116ed565b6133c06116ed565b6001600160a01b03821661343c5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840161046c565b5f5f8051602061469583398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b29190613b59565b1161351a5760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b606482015260840161046c565b81546001600160a01b0319166001600160a01b03821617825561097883610c27565b6109866116ed565b60606107ba83835f613559565b6114d36116ed565b60608147101561357e5760405163cd78605960e01b815230600482015260240161046c565b5f80856001600160a01b0316848660405161359991906145f9565b5f6040518083038185875af1925050503d805f81146135d3576040519150601f19603f3d011682016040523d82523d5f602084013e6135d8565b606091505b5091509150611d808683836060826135f8576135f38261363f565b6107ba565b815115801561360f57506001600160a01b0384163b155b1561363857604051639996b31560e01b81526001600160a01b038516600482015260240161046c565b50806107ba565b80511561364f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610762575f80fd5b803561368781613668565b919050565b5f806040838503121561369d575f80fd5b8235915060208301356136af81613668565b809150509250929050565b5f602082840312156136ca575f80fd5b81356107ba81613668565b60ff81168114610762575f80fd5b5f805f805f60a086880312156136f7575f80fd5b853561370281613668565b9450602086013561371281613668565b935060408601359250606086013561372981613668565b91506080860135613739816136d5565b809150509295509295909350565b5f8082840361012081121561375a575f80fd5b61010080821215613769575f80fd5b9395938601359450505050565b5f60208284031215613786575f80fd5b5035919050565b5f806040838503121561379e575f80fd5b82356001600160401b038111156137b3575f80fd5b830161016081860312156137c5575f80fd5b946020939093013593505050565b5f805f80606085870312156137e6575f80fd5b8435935060208501356137f881613668565b925060408501356001600160401b0380821115613813575f80fd5b818701915087601f830112613826575f80fd5b813581811115613834575f80fd5b886020828501011115613845575f80fd5b95989497505060200194505050565b5f805f60608486031215613866575f80fd5b83359250602084013561387881613668565b929592945050506040919091013590565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b038111828210171561390e5761390e6138d7565b60405290565b60405161016081016001600160401b038111828210171561390e5761390e6138d7565b604080519081016001600160401b038111828210171561390e5761390e6138d7565b604051601f8201601f191681016001600160401b0381118282101715613981576139816138d7565b604052919050565b5f610100828403121561399a575f80fd5b6139a26138eb565b8235815260208301356139b481613668565b602082015260408301356139c781613668565b60408201526139d86060840161367c565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613a0760e0840161367c565b60e08201529392505050565b5f6001600160401b03821115613a2b57613a2b6138d7565b50601f01601f191660200190565b5f82601f830112613a48575f80fd5b8135613a5b613a5682613a13565b613959565b818152846020838601011115613a6f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613a9c575f80fd5b613aa4613914565b82358152613ab46020840161367c565b6020820152613ac56040840161367c565b604082015260608301356001600160401b03811115613ae2575f80fd5b613aee36828601613a39565b6060830152506080830135608082015260a083013560a0820152613b1460c0840161367c565b60c0820152613b2560e0840161367c565b60e0820152610100613b3881850161367c565b90820152610120838101359082015261014092830135928101929092525090565b5f60208284031215613b69575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b03168152602080830151908201526040810161042a565b5f5b83811015613c48578181015183820152602001613c30565b50505f910152565b5f8151808452613c67816020860160208601613c2e565b601f01601f19169290920160200192915050565b602081525f825160058110613c9e57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612b076060840182613c50565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e0840151613d2f60e08401826001600160a01b03169052565b50826101008301529392505050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613d8660808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613dad610120850183613c50565b915060c085015160e085015260e0850151613dd2828601826001600160a01b03169052565b5090949350505050565b60408152825160408201525f6020840151613e0260608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a08401819052613e336101a0850183613c50565b9150608086015160c085015260a086015160e085015260c0860151610100613e65818701836001600160a01b03169052565b60e08801519150610120613e83818801846001600160a01b03169052565b90880151915061014090613ea1878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b5f82601f830112613ecd575f80fd5b8151613edb613a5682613a13565b818152846020838601011115613eef575f80fd5b612b07826020830160208701613c2e565b5f60208284031215613f10575f80fd5b81516001600160401b0380821115613f26575f80fd5b9083019060408286031215613f39575f80fd5b613f41613937565b825160058110613f4f575f80fd5b8152602083015182811115613f62575f80fd5b613f6e87828601613ebe565b60208301525095945050505050565b805161368781613668565b5f60408284031215613f98575f80fd5b613fa0613937565b8251613fab81613668565b81526020928301519281019290925250919050565b5f60208284031215613fd0575f80fd5b81516001600160401b0380821115613fe6575f80fd5b908301906101008286031215613ffa575f80fd5b6140026138eb565b8251815261401260208401613f7d565b602082015261402360408401613f7d565b604082015261403460608401613f7d565b60608201526080830151608082015260a083015182811115614054575f80fd5b61406087828601613ebe565b60a08301525060c083015160c082015261407c60e08401613f7d565b60e082015295945050505050565b5f60e0828403121561409a575f80fd5b60405160e081018181106001600160401b03821117156140bc576140bc6138d7565b6040528251815260208301516140d181613668565b602082015260408301516140e481613668565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161411781613668565b60c08201529392505050565b5f60208284031215614133575f80fd5b81516001600160401b0380821115614149575f80fd5b90830190610160828603121561415d575f80fd5b614165613914565b61416e83613f7d565b81526020830151602082015261418660408401613f7d565b604082015261419760608401613f7d565b60608201526080830151608082015260a0830151828111156141b7575f80fd5b6141c387828601613ebe565b60a08301525060c083015160c08201526141df60e08401613f7d565b60e0820152610100838101519082015261012091506141ff828401613f7d565b9181019190915261014091820151918101919091529392505050565b5f6060828403121561422b575f80fd5b604051606081018181106001600160401b038211171561424d5761424d6138d7565b604052825181526020830151614262816136d5565b60208201526040830151614275816136d5565b60408201529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561042a5761042a6142b6565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b8082018082111561042a5761042a6142b6565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015614400578451831682529385019360019390930192908501906143de565b5060a0880151878203601f190160e0890152945061441e8186613c50565b98975050505050505050565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f9061441e90830184613c50565b634e487b7160e01b5f52601260045260245ffd5b5f8261448c5761448c61446a565b500690565b5f602082840312156144a1575f80fd5b81516107ba81613668565b60ff828116828216039081111561042a5761042a6142b6565b600181815b808511156144ff57815f19048211156144e5576144e56142b6565b808516156144f257918102915b93841c93908002906144ca565b509250929050565b5f826145155750600161042a565b8161452157505f61042a565b816001811461453757600281146145415761455d565b600191505061042a565b60ff841115614552576145526142b6565b50506001821b61042a565b5060208310610133831016604e8410600b8410161715614580575081810a61042a565b61458a83836144c5565b805f190482111561459d5761459d6142b6565b029392505050565b5f6107ba8383614507565b808202811582820484141761042a5761042a6142b6565b5f826145d5576145d561446a565b500490565b5f602082840312156145ea575f80fd5b815180151581146107ba575f80fd5b5f825161460a818460208701613c2e565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500914a9547f6c3ddce1d5efbd9e687708f0d1d408ce129e8e1a88bce4f40e29500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220b58257299bb9f8f4b83ec3469a66611a693a5e9ffc990457921d2c4cacebbb2464736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", + Bin: "0x608060405234801561000f575f80fd5b5060405161502438038061502483398101604081905261002e91610893565b61003b8585858585610048565b505050505061090d565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100915750825b90505f826001600160401b031660011480156100ac5750303b155b9050811580156100ba575080155b156100d85760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010657845460ff60401b1916680100000000000000001785555b6101138a8a8a8a8a610165565b831561015957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b61016d61018a565b61017a85858585856101da565b610183826101ff565b5050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101d857604051631afcd79f60e31b815260040160405180910390fd5b565b6101e261018a565b6101ed858585610248565b6101f5610268565b6101838282610278565b61020761018a565b7f914a9547f6c3ddce1d5efbd9e687708f0d1d408ce129e8e1a88bce4f40e2950080546001600160a01b0319166001600160a01b0392909216919091179055565b61025061018a565b61025a8382610404565b6102638261042a565b505050565b61027061018a565b6101d861043b565b61028061018a565b6001600160a01b0382166102db5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064015b60405180910390fd5b60128160ff16111561033a5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016102d2565b5f7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e60090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d291906108f6565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b61040c61018a565b610414610465565b61041c610475565b610426828261047d565b5050565b61043261018a565b61004581610607565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b61046d61018a565b6101d8610641565b6101d861018a565b61048561018a565b6001600160a01b0382166105015760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016102d2565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610566573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058a91906108f6565b116105df5760405162461bcd60e51b815260206004820152603260248201525f80516020615004833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102d2565b81546001600160a01b0319166001600160a01b03821617825561060183610670565b50505050565b61060f61018a565b6001600160a01b03811661063857604051631e4fbdf760e01b81525f60048201526024016102d2565b61004581610808565b61064961018a565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061045e565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156106d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fb91906108f6565b60028301549091508184111561075a5760405162461bcd60e51b815260206004820152603160248201525f8051602061500483398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102d2565b8084116107cf5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102d2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b038116811461088e575f80fd5b919050565b5f805f805f60a086880312156108a7575f80fd5b6108b086610878565b94506108be60208701610878565b9350604086015192506108d360608701610878565b9150608086015160ff811681146108e8575f80fd5b809150509295509295909350565b5f60208284031215610906575f80fd5b5051919050565b6146ea8061091a5f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c806365690038116100a9578063c8511ada1161006e578063c8511ada146102b4578063c868efaa14610388578063d2cc7a701461039b578063f2fde38b146103c2578063fd658268146103d5575f80fd5b80636569003814610232578063715018a6146102455780638da5cb5b1461024d578063909a6ac01461027d5780639731429714610291575f80fd5b80634511243e116100ef5780634511243e146101d15780634797735f146101e45780635d16225d146101f85780635eb995141461020b57806362e3901b1461021e575f80fd5b806310fe9ae81461012b578063154d625a146101745780632b0d8f18146101955780633bb03890146101aa5780634213cf78146101bd575b5f80fd5b7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61018761018236600461368c565b6103e8565b60405190815260200161016b565b6101a86101a33660046136ba565b610430565b005b6101a86101b83660046136e3565b610532565b5f8051602061461583398151915254610187565b6101a86101df3660046136ba565b610646565b6101875f8051602061467583398151915281565b6101a8610206366004613747565b610735565b6101a8610219366004613776565b610751565b6101875f8051602061461583398151915281565b6101a861024036600461378d565b610765565b6101a861078e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610157565b6101875f8051602061469583398151915281565b6102a461029f3660046136ba565b6107a1565b604051901515815260200161016b565b6103516102c236600461368c565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061463583398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161016b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b6101a86103963660046137d3565b6107c1565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610187565b6101a86103d03660046136ba565b61097e565b6101a86103e3366004613854565b6109b8565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f805160206146958339815191526104466109c8565b6001600160a01b0382166104755760405162461bcd60e51b815260040161046c90613889565b60405180910390fd5b61047f81836109d0565b156104e25760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161046c565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156105765750825b90505f826001600160401b031660011480156105915750303b155b90508115801561059f575080155b156105bd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105e757845460ff60401b1916600160401b1785555b6105f48a8a8a8a8a6109f1565b831561063a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f8051602061469583398151915261065c6109c8565b6001600160a01b0382166106825760405162461bcd60e51b815260040161046c90613889565b61068c81836109d0565b6106ea5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161046c565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61074d61074736849003840184613989565b82610a16565b5050565b6107596109c8565b61076281610c27565b50565b61074d61077d5f805160206146158339815191525490565b303361078886613a8b565b85610dbf565b610796610fcb565b61079f5f611026565b565b5f5f805160206146958339815191526107ba81846109d0565b9392505050565b6107c9611096565b5f5f8051602061469583398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108589190613b59565b10156108bf5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161046c565b6108c981336109d0565b1561092f5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161046c565b61096f858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506110e092505050565b506109786114d3565b50505050565b610986610fcb565b6001600160a01b0381166109af57604051631e4fbdf760e01b81525f600482015260240161046c565b61076281611026565b6109c38383836114fd565b505050565b61079f610fcb565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6109f96116ed565b610a068585858585611736565b610a0f8261175b565b5050505050565b5f805160206146558339815191528054600114610a455760405162461bcd60e51b815260040161046c90613b70565b60028155610a5283611791565b60e08301516001600160a01b031615610a7d5760405162461bcd60e51b815260040161046c90613bb4565b5f80610a9b855f01518660200151868860600151896080015161183a565b915091505f604051806040016040528060016004811115610abe57610abe613bfa565b8152602001604051806040016040528089604001516001600160a01b0316815260200186815250604051602001610af59190613c0e565b60405160208183030381529060405281525090505f610bd46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b604051908082528060200260200182016040528015610ba6578160200160208202803683370190505b50815260200184604051602001610bbd9190613c7b565b6040516020818303038152906040528152506119ff565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528987604051610c12929190613cbd565b60405180910390a35050600190925550505050565b5f8051602061469583398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f9190613b59565b600283015490915081841115610d115760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161046c565b808411610d865760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161046c565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f805160206146558339815191528054600114610dee5760405162461bcd60e51b815260040161046c90613b70565b60028155610dfb83611b1a565b60c08301516001600160a01b031615610e265760405162461bcd60e51b815260040161046c90613bb4565b5f80610e46855f015186602001518688610100015189610120015161183a565b915091505f604051806040016040528060026004811115610e6957610e69613bfa565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610eec9190613d3e565b60405160208183030381529060405281525090505f610f756040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610fb3929190613ddc565b60405180910390a35050600190925550505050505050565b33610ffd7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461079f5760405163118cdaa760e01b815233600482015260240161046c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016110da57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f8051602061461583398151915290505f828060200190518101906111069190613f00565b905060018151600481111561111d5761111d613bfa565b03611165575f816020015180602001905181019061113b9190613f88565b90505f61114d87878460200151611cff565b905061115c825f015182611d8a565b50505050505050565b60028151600481111561117a5761117a613bfa565b03611293575f81602001518060200190518101906111989190613fc0565b90505f6111aa87878460800151611cff565b825190915087146112105760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b606482015260840161046c565b856001600160a01b031682602001516001600160a01b0316146112895760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b606482015260840161046c565b61115c8282611ded565b6003815160048111156112a8576112a8613bfa565b0361137c575f81602001518060200190518101906112c6919061408a565b90505f806112de888885606001518660800151611fcd565b91509150611372604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b031681525083612078565b5050505050505050565b60048151600481111561139157611391613bfa565b0361148c575f81602001518060200190518101906113af9190614123565b90505f806113c888888560800151866101400151611fcd565b915091506113728888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612203565b5f815160048111156114a0576114a0613bfa565b03610a0f575f81602001518060200190518101906114be919061421b565b90506114cb8686836123e0565b505050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614655833981519152805460011461152c5760405162461bcd60e51b815260040161046c90613b70565b60028082555f8581525f80516020614635833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f80516020614615833981519152916115c35760405162461bcd60e51b815260040161046c90614281565b5f8160200151116116205760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b606482015260840161046c565b611629846127e7565b93505f80826020015186106116585760208301515f925061164a90876142ca565b90508260200151955061166b565b85836020015161166891906142ca565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156116df576116df3382611d8a565b505060019092555050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661079f57604051631afcd79f60e31b815260040160405180910390fd5b61173e6116ed565b61174985858561280e565b611751612829565b610a0f8282612839565b6117636116ed565b5f8051602061467583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60408101516001600160a01b03166117f55760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b606482015260840161046c565b5f8160c00151116118185760405162461bcd60e51b815260040161046c906142dd565b60a0810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8581525f80516020614635833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f8051602061461583398151915291906118d15760405162461bcd60e51b815260040161046c90614281565b6020810151156119335760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b606482015260840161046c565b61193c876127e7565b965084156119525761194f8633876129a0565b94505b5f611966826040015183606001518a612af9565b90505f81116119b75760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e74000000604482015260640161046c565b5f8a815260038401602090815260408083206001600160a01b038d168452909152812080548392906119ea908490614360565b90915550909a95995094975050505050505050565b5f80611a09612b0f565b60408401516020015190915015611aae576040830151516001600160a01b0316611a8b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b606482015260840161046c565b604083015160208101519051611aae916001600160a01b03909116908390612bff565b604051630624488560e41b81526001600160a01b03821690636244885090611ada908690600401614373565b6020604051808303815f875af1158015611af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ba9190613b59565b60408101516001600160a01b0316611b875760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b606482015260840161046c565b5f816080015111611baa5760405162461bcd60e51b815260040161046c906142dd565b5f8160a0015111611c095760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b606482015260840161046c565b80608001518160a0015110611c6f5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b606482015260840161046c565b60e08101516001600160a01b0316611cdc5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b606482015260840161046c565b610140810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8381525f80516020614635833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f8051602061461583398151915290611d8081878787612c86565b9695505050505050565b6040518181525f80516020614675833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a280546109c3906001600160a01b03168484612d7d565b5f80516020614675833981519152805460608401516001600160a01b0390911690611e1a90829085612bff565b5f845f01518560200151866040015184878960a00151604051602401611e459695949392919061442a565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c086015160608701519192505f91611e89919084612ddc565b6060870151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192505f919085169063dd62ed3e90604401602060405180830381865afa158015611ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f029190613b59565b9050611f138488606001515f612de9565b8115611f655786606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff487604051611f5891815260200190565b60405180910390a2611fad565b86606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb087604051611fa491815260200190565b60405180910390a25b801561115c5760e087015161115c906001600160a01b0386169083612d7d565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206146158339815191529082612051828a8a8a612c86565b90505f6120678360400151846060015189612e78565b919a91995090975050505050505050565b5f8051602061465583398151915280546001146120a75760405162461bcd60e51b815260040161046c90613b70565b600281556120b483611791565b5f6120cc845f01518560200151858760800151612e85565b9050805f036120e9576120e38460e0015184611d8a565b506121fb565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161212f9190613c0e565b60405160208183030381529060405281525090505f6121bb6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf087856040516121ef929190613cbd565b60405180910390a25050505b600190555050565b5f8051602061465583398151915280546001146122325760405162461bcd60e51b815260040161046c90613b70565b6002815561223f83611b1a565b5f612258845f0151856020015185876101200151612e85565b9050805f036122755761226f8460c0015184611d8a565b506123d5565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016123079190613d3e565b60405160208183030381529060405281525090505f6123956040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb3087856040516123c9929190613ddc565b60405180910390a25050505b600190555050505050565b5f80516020614615833981519152836124475760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b606482015260840161046c565b805484036124af5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b606482015260840161046c565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b606482015260840161046c565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561259e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b606482015260840161046c565b6012826040015160ff1611156126085760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b606482015260840161046c565b6001810154602083015160ff908116600160a01b909204161461267c5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b606482015260840161046c565b5f8061269d8360010160149054906101000a900460ff168560400151612ff6565b915091505f6126b08383875f0151612e78565b90508180156126ca575084516126c790849061447e565b15155b156126dd576126da600182614360565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b908388604001516040516127d692919091825260ff16602082015260400190565b60405180910390a350505050505050565b5f8051602061467583398151915280545f91906107ba906001600160a01b031633856129a0565b6128166116ed565b612820838261303e565b6109c382613060565b6128316116ed565b61079f613071565b6128416116ed565b6001600160a01b0382166128975760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e2061646472657373000000604482015260640161046c565b60128160ff1611156128f65760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b606482015260840161046c565b5f5f8051602061461583398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561294a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296e9190613b59565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156129e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0a9190613b59565b9050612a216001600160a01b038616853086613085565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a899190613b59565b9050818111612aef5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161046c565b611d8082826142ca565b5f612b0784848460016130be565b949350505050565b5f8051602061469583398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8d9190614491565b9050612b9982826109d0565b1561042a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161046c565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c709190613b59565b90506109788484612c818585614360565b612de9565b83515f90612ca65760405162461bcd60e51b815260040161046c90614281565b602085015115612d045760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b606482015260840161046c565b612d0f8484846130e5565b5f612d238660400151876060015185612e78565b90505f8111612d745760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e7400000000604482015260640161046c565b95945050505050565b6040516001600160a01b038381166024830152604482018390526109c391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506131d2565b5f612b07845f8585613233565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612e3a8482613303565b610978576040516001600160a01b0384811660248301525f6044830152612e6e91869182169063095ea7b390606401612daa565b61097884826131d2565b5f612b078484845f6130be565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206146158339815191529180612f0b57505f8160200151115b15612f1a575f92505050612b07565b838511612f7e5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b606482015260840161046c565b612f8884866142ca565b94505f612f9e8260400151836060015188612af9565b9050805f03612fb2575f9350505050612b07565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290612fe5908490614360565b909155509098975050505050505050565b5f8060ff8085169084161181816130195761301185876144ac565b60ff16613027565b61302386866144ac565b60ff165b61303290600a6145a5565b96919550909350505050565b6130466116ed565b61304e6133a0565b6130566133b0565b61074d82826133b8565b6130686116ed565b6107628161353c565b5f5f805160206146558339815191526114f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526109789186918216906323b872dd90608401612daa565b5f811515841515036130db576130d485846145b0565b9050612b07565b612d7485846145c7565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f80516020614615833981519152908281101561319c5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b606482015260840161046c565b6131a683826142ca565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6131e66001600160a01b03841683613544565b905080515f1415801561320a57508080602001905181019061320891906145da565b155b156109c357604051635274afe760e01b81526001600160a01b038416600482015260240161046c565b5f845a10156132845760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e74206761730000000000604482015260640161046c565b834710156132d45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c7565000000604482015260640161046c565b826001600160a01b03163b5f036132ec57505f612b07565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b03168460405161331e91906145f9565b5f604051808303815f865af19150503d805f8114613357576040519150601f19603f3d011682016040523d82523d5f602084013e61335c565b606091505b509150915081801561338657508051158061338657508080602001905181019061338691906145da565b8015612d745750505050506001600160a01b03163b151590565b6133a86116ed565b61079f613551565b61079f6116ed565b6133c06116ed565b6001600160a01b03821661343c5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840161046c565b5f5f8051602061469583398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b29190613b59565b1161351a5760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b606482015260840161046c565b81546001600160a01b0319166001600160a01b03821617825561097883610c27565b6109866116ed565b60606107ba83835f613559565b6114d36116ed565b60608147101561357e5760405163cd78605960e01b815230600482015260240161046c565b5f80856001600160a01b0316848660405161359991906145f9565b5f6040518083038185875af1925050503d805f81146135d3576040519150601f19603f3d011682016040523d82523d5f602084013e6135d8565b606091505b5091509150611d808683836060826135f8576135f38261363f565b6107ba565b815115801561360f57506001600160a01b0384163b155b1561363857604051639996b31560e01b81526001600160a01b038516600482015260240161046c565b50806107ba565b80511561364f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610762575f80fd5b803561368781613668565b919050565b5f806040838503121561369d575f80fd5b8235915060208301356136af81613668565b809150509250929050565b5f602082840312156136ca575f80fd5b81356107ba81613668565b60ff81168114610762575f80fd5b5f805f805f60a086880312156136f7575f80fd5b853561370281613668565b9450602086013561371281613668565b935060408601359250606086013561372981613668565b91506080860135613739816136d5565b809150509295509295909350565b5f8082840361012081121561375a575f80fd5b61010080821215613769575f80fd5b9395938601359450505050565b5f60208284031215613786575f80fd5b5035919050565b5f806040838503121561379e575f80fd5b82356001600160401b038111156137b3575f80fd5b830161016081860312156137c5575f80fd5b946020939093013593505050565b5f805f80606085870312156137e6575f80fd5b8435935060208501356137f881613668565b925060408501356001600160401b0380821115613813575f80fd5b818701915087601f830112613826575f80fd5b813581811115613834575f80fd5b886020828501011115613845575f80fd5b95989497505060200194505050565b5f805f60608486031215613866575f80fd5b83359250602084013561387881613668565b929592945050506040919091013590565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b038111828210171561390e5761390e6138d7565b60405290565b60405161016081016001600160401b038111828210171561390e5761390e6138d7565b604080519081016001600160401b038111828210171561390e5761390e6138d7565b604051601f8201601f191681016001600160401b0381118282101715613981576139816138d7565b604052919050565b5f610100828403121561399a575f80fd5b6139a26138eb565b8235815260208301356139b481613668565b602082015260408301356139c781613668565b60408201526139d86060840161367c565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613a0760e0840161367c565b60e08201529392505050565b5f6001600160401b03821115613a2b57613a2b6138d7565b50601f01601f191660200190565b5f82601f830112613a48575f80fd5b8135613a5b613a5682613a13565b613959565b818152846020838601011115613a6f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613a9c575f80fd5b613aa4613914565b82358152613ab46020840161367c565b6020820152613ac56040840161367c565b604082015260608301356001600160401b03811115613ae2575f80fd5b613aee36828601613a39565b6060830152506080830135608082015260a083013560a0820152613b1460c0840161367c565b60c0820152613b2560e0840161367c565b60e0820152610100613b3881850161367c565b90820152610120838101359082015261014092830135928101929092525090565b5f60208284031215613b69575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b03168152602080830151908201526040810161042a565b5f5b83811015613c48578181015183820152602001613c30565b50505f910152565b5f8151808452613c67816020860160208601613c2e565b601f01601f19169290920160200192915050565b602081525f825160058110613c9e57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612b076060840182613c50565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e0840151613d2f60e08401826001600160a01b03169052565b50826101008301529392505050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613d8660808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613dad610120850183613c50565b915060c085015160e085015260e0850151613dd2828601826001600160a01b03169052565b5090949350505050565b60408152825160408201525f6020840151613e0260608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a08401819052613e336101a0850183613c50565b9150608086015160c085015260a086015160e085015260c0860151610100613e65818701836001600160a01b03169052565b60e08801519150610120613e83818801846001600160a01b03169052565b90880151915061014090613ea1878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b5f82601f830112613ecd575f80fd5b8151613edb613a5682613a13565b818152846020838601011115613eef575f80fd5b612b07826020830160208701613c2e565b5f60208284031215613f10575f80fd5b81516001600160401b0380821115613f26575f80fd5b9083019060408286031215613f39575f80fd5b613f41613937565b825160058110613f4f575f80fd5b8152602083015182811115613f62575f80fd5b613f6e87828601613ebe565b60208301525095945050505050565b805161368781613668565b5f60408284031215613f98575f80fd5b613fa0613937565b8251613fab81613668565b81526020928301519281019290925250919050565b5f60208284031215613fd0575f80fd5b81516001600160401b0380821115613fe6575f80fd5b908301906101008286031215613ffa575f80fd5b6140026138eb565b8251815261401260208401613f7d565b602082015261402360408401613f7d565b604082015261403460608401613f7d565b60608201526080830151608082015260a083015182811115614054575f80fd5b61406087828601613ebe565b60a08301525060c083015160c082015261407c60e08401613f7d565b60e082015295945050505050565b5f60e0828403121561409a575f80fd5b60405160e081018181106001600160401b03821117156140bc576140bc6138d7565b6040528251815260208301516140d181613668565b602082015260408301516140e481613668565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161411781613668565b60c08201529392505050565b5f60208284031215614133575f80fd5b81516001600160401b0380821115614149575f80fd5b90830190610160828603121561415d575f80fd5b614165613914565b61416e83613f7d565b81526020830151602082015261418660408401613f7d565b604082015261419760608401613f7d565b60608201526080830151608082015260a0830151828111156141b7575f80fd5b6141c387828601613ebe565b60a08301525060c083015160c08201526141df60e08401613f7d565b60e0820152610100838101519082015261012091506141ff828401613f7d565b9181019190915261014091820151918101919091529392505050565b5f6060828403121561422b575f80fd5b604051606081018181106001600160401b038211171561424d5761424d6138d7565b604052825181526020830151614262816136d5565b60208201526040830151614275816136d5565b60408201529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561042a5761042a6142b6565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b8082018082111561042a5761042a6142b6565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015614400578451831682529385019360019390930192908501906143de565b5060a0880151878203601f190160e0890152945061441e8186613c50565b98975050505050505050565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f9061441e90830184613c50565b634e487b7160e01b5f52601260045260245ffd5b5f8261448c5761448c61446a565b500690565b5f602082840312156144a1575f80fd5b81516107ba81613668565b60ff828116828216039081111561042a5761042a6142b6565b600181815b808511156144ff57815f19048211156144e5576144e56142b6565b808516156144f257918102915b93841c93908002906144ca565b509250929050565b5f826145155750600161042a565b8161452157505f61042a565b816001811461453757600281146145415761455d565b600191505061042a565b60ff841115614552576145526142b6565b50506001821b61042a565b5060208310610133831016604e8410600b8410161715614580575081810a61042a565b61458a83836144c5565b805f190482111561459d5761459d6142b6565b029392505050565b5f6107ba8383614507565b808202811582820484141761042a5761042a6142b6565b5f826145d5576145d561446a565b500490565b5f602082840312156145ea575f80fd5b815180151581146107ba575f80fd5b5f825161460a818460208701613c2e565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500914a9547f6c3ddce1d5efbd9e687708f0d1d408ce129e8e1a88bce4f40e29500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220eed07797a6ba88dde0a2fe869683f192fbb93dec6ee27cf4eee014b4907fe4f764736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // ERC20TokenHomeABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenHome/ERC20TokenHomeUpgradeable/ERC20TokenHomeUpgradeable.go b/abi-bindings/go/ictt/TokenHome/ERC20TokenHomeUpgradeable/ERC20TokenHomeUpgradeable.go index 07ee41d30..4f6b39cf1 100644 --- a/abi-bindings/go/ictt/TokenHome/ERC20TokenHomeUpgradeable/ERC20TokenHomeUpgradeable.go +++ b/abi-bindings/go/ictt/TokenHome/ERC20TokenHomeUpgradeable/ERC20TokenHomeUpgradeable.go @@ -67,7 +67,7 @@ type SendTokensInput struct { // ERC20TokenHomeUpgradeableMetaData contains all meta data concerning the ERC20TokenHomeUpgradeable contract. var ERC20TokenHomeUpgradeableMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialCollateralNeeded\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"RemoteRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getRemoteTokenTransferrerSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralNeeded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"multiplyOnRemote\",\"type\":\"bool\"}],\"internalType\":\"structRemoteTokenTransferrerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getTransferredBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161483738038061483783398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6146ea8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c806365690038116100a9578063c8511ada1161006e578063c8511ada146102b4578063c868efaa14610388578063d2cc7a701461039b578063f2fde38b146103c2578063fd658268146103d5575f80fd5b80636569003814610232578063715018a6146102455780638da5cb5b1461024d578063909a6ac01461027d5780639731429714610291575f80fd5b80634511243e116100ef5780634511243e146101d15780634797735f146101e45780635d16225d146101f85780635eb995141461020b57806362e3901b1461021e575f80fd5b806310fe9ae81461012b578063154d625a146101745780632b0d8f18146101955780633bb03890146101aa5780634213cf78146101bd575b5f80fd5b7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61018761018236600461368c565b6103e8565b60405190815260200161016b565b6101a86101a33660046136ba565b610430565b005b6101a86101b83660046136e3565b610532565b5f8051602061461583398151915254610187565b6101a86101df3660046136ba565b610646565b6101875f8051602061467583398151915281565b6101a8610206366004613747565b610735565b6101a8610219366004613776565b610751565b6101875f8051602061461583398151915281565b6101a861024036600461378d565b610765565b6101a861078e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610157565b6101875f8051602061469583398151915281565b6102a461029f3660046136ba565b6107a1565b604051901515815260200161016b565b6103516102c236600461368c565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061463583398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161016b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b6101a86103963660046137d3565b6107c1565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610187565b6101a86103d03660046136ba565b61097e565b6101a86103e3366004613854565b6109b8565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f805160206146958339815191526104466109c8565b6001600160a01b0382166104755760405162461bcd60e51b815260040161046c90613889565b60405180910390fd5b61047f81836109d0565b156104e25760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161046c565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156105765750825b90505f826001600160401b031660011480156105915750303b155b90508115801561059f575080155b156105bd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105e757845460ff60401b1916600160401b1785555b6105f48a8a8a8a8a6109f1565b831561063a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f8051602061469583398151915261065c6109c8565b6001600160a01b0382166106825760405162461bcd60e51b815260040161046c90613889565b61068c81836109d0565b6106ea5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161046c565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61074d61074736849003840184613989565b82610a16565b5050565b6107596109c8565b61076281610c27565b50565b61074d61077d5f805160206146158339815191525490565b303361078886613a8b565b85610dbf565b610796610fcb565b61079f5f611026565b565b5f5f805160206146958339815191526107ba81846109d0565b9392505050565b6107c9611096565b5f5f8051602061469583398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108589190613b59565b10156108bf5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161046c565b6108c981336109d0565b1561092f5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161046c565b61096f858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506110e092505050565b506109786114d3565b50505050565b610986610fcb565b6001600160a01b0381166109af57604051631e4fbdf760e01b81525f600482015260240161046c565b61076281611026565b6109c38383836114fd565b505050565b61079f610fcb565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6109f96116ed565b610a068585858585611736565b610a0f8261175b565b5050505050565b5f805160206146558339815191528054600114610a455760405162461bcd60e51b815260040161046c90613b70565b60028155610a5283611791565b60e08301516001600160a01b031615610a7d5760405162461bcd60e51b815260040161046c90613bb4565b5f80610a9b855f01518660200151868860600151896080015161183a565b915091505f604051806040016040528060016004811115610abe57610abe613bfa565b8152602001604051806040016040528089604001516001600160a01b0316815260200186815250604051602001610af59190613c0e565b60405160208183030381529060405281525090505f610bd46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b604051908082528060200260200182016040528015610ba6578160200160208202803683370190505b50815260200184604051602001610bbd9190613c7b565b6040516020818303038152906040528152506119ff565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528987604051610c12929190613cbd565b60405180910390a35050600190925550505050565b5f8051602061469583398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f9190613b59565b600283015490915081841115610d115760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161046c565b808411610d865760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161046c565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f805160206146558339815191528054600114610dee5760405162461bcd60e51b815260040161046c90613b70565b60028155610dfb83611b1a565b60c08301516001600160a01b031615610e265760405162461bcd60e51b815260040161046c90613bb4565b5f80610e46855f015186602001518688610100015189610120015161183a565b915091505f604051806040016040528060026004811115610e6957610e69613bfa565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610eec9190613d3e565b60405160208183030381529060405281525090505f610f756040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610fb3929190613ddc565b60405180910390a35050600190925550505050505050565b33610ffd7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461079f5760405163118cdaa760e01b815233600482015260240161046c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016110da57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f8051602061461583398151915290505f828060200190518101906111069190613f00565b905060018151600481111561111d5761111d613bfa565b03611165575f816020015180602001905181019061113b9190613f88565b90505f61114d87878460200151611cff565b905061115c825f015182611d8a565b50505050505050565b60028151600481111561117a5761117a613bfa565b03611293575f81602001518060200190518101906111989190613fc0565b90505f6111aa87878460800151611cff565b825190915087146112105760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b606482015260840161046c565b856001600160a01b031682602001516001600160a01b0316146112895760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b606482015260840161046c565b61115c8282611ded565b6003815160048111156112a8576112a8613bfa565b0361137c575f81602001518060200190518101906112c6919061408a565b90505f806112de888885606001518660800151611fcd565b91509150611372604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b031681525083612078565b5050505050505050565b60048151600481111561139157611391613bfa565b0361148c575f81602001518060200190518101906113af9190614123565b90505f806113c888888560800151866101400151611fcd565b915091506113728888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612203565b5f815160048111156114a0576114a0613bfa565b03610a0f575f81602001518060200190518101906114be919061421b565b90506114cb8686836123e0565b505050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614655833981519152805460011461152c5760405162461bcd60e51b815260040161046c90613b70565b60028082555f8581525f80516020614635833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f80516020614615833981519152916115c35760405162461bcd60e51b815260040161046c90614281565b5f8160200151116116205760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b606482015260840161046c565b611629846127e7565b93505f80826020015186106116585760208301515f925061164a90876142ca565b90508260200151955061166b565b85836020015161166891906142ca565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156116df576116df3382611d8a565b505060019092555050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661079f57604051631afcd79f60e31b815260040160405180910390fd5b61173e6116ed565b61174985858561280e565b611751612829565b610a0f8282612839565b6117636116ed565b5f8051602061467583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60408101516001600160a01b03166117f55760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b606482015260840161046c565b5f8160c00151116118185760405162461bcd60e51b815260040161046c906142dd565b60a0810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8581525f80516020614635833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f8051602061461583398151915291906118d15760405162461bcd60e51b815260040161046c90614281565b6020810151156119335760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b606482015260840161046c565b61193c876127e7565b965084156119525761194f8633876129a0565b94505b5f611966826040015183606001518a612af9565b90505f81116119b75760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e74000000604482015260640161046c565b5f8a815260038401602090815260408083206001600160a01b038d168452909152812080548392906119ea908490614360565b90915550909a95995094975050505050505050565b5f80611a09612b0f565b60408401516020015190915015611aae576040830151516001600160a01b0316611a8b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b606482015260840161046c565b604083015160208101519051611aae916001600160a01b03909116908390612bff565b604051630624488560e41b81526001600160a01b03821690636244885090611ada908690600401614373565b6020604051808303815f875af1158015611af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ba9190613b59565b60408101516001600160a01b0316611b875760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b606482015260840161046c565b5f816080015111611baa5760405162461bcd60e51b815260040161046c906142dd565b5f8160a0015111611c095760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b606482015260840161046c565b80608001518160a0015110611c6f5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b606482015260840161046c565b60e08101516001600160a01b0316611cdc5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b606482015260840161046c565b610140810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8381525f80516020614635833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f8051602061461583398151915290611d8081878787612c86565b9695505050505050565b6040518181525f80516020614675833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a280546109c3906001600160a01b03168484612d7d565b5f80516020614675833981519152805460608401516001600160a01b0390911690611e1a90829085612bff565b5f845f01518560200151866040015184878960a00151604051602401611e459695949392919061442a565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c086015160608701519192505f91611e89919084612ddc565b6060870151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192505f919085169063dd62ed3e90604401602060405180830381865afa158015611ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f029190613b59565b9050611f138488606001515f612de9565b8115611f655786606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff487604051611f5891815260200190565b60405180910390a2611fad565b86606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb087604051611fa491815260200190565b60405180910390a25b801561115c5760e087015161115c906001600160a01b0386169083612d7d565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206146158339815191529082612051828a8a8a612c86565b90505f6120678360400151846060015189612e78565b919a91995090975050505050505050565b5f8051602061465583398151915280546001146120a75760405162461bcd60e51b815260040161046c90613b70565b600281556120b483611791565b5f6120cc845f01518560200151858760800151612e85565b9050805f036120e9576120e38460e0015184611d8a565b506121fb565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161212f9190613c0e565b60405160208183030381529060405281525090505f6121bb6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf087856040516121ef929190613cbd565b60405180910390a25050505b600190555050565b5f8051602061465583398151915280546001146122325760405162461bcd60e51b815260040161046c90613b70565b6002815561223f83611b1a565b5f612258845f0151856020015185876101200151612e85565b9050805f036122755761226f8460c0015184611d8a565b506123d5565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016123079190613d3e565b60405160208183030381529060405281525090505f6123956040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb3087856040516123c9929190613ddc565b60405180910390a25050505b600190555050505050565b5f80516020614615833981519152836124475760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b606482015260840161046c565b805484036124af5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b606482015260840161046c565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b606482015260840161046c565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561259e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b606482015260840161046c565b6012826040015160ff1611156126085760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b606482015260840161046c565b6001810154602083015160ff908116600160a01b909204161461267c5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b606482015260840161046c565b5f8061269d8360010160149054906101000a900460ff168560400151612ff6565b915091505f6126b08383875f0151612e78565b90508180156126ca575084516126c790849061447e565b15155b156126dd576126da600182614360565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b908388604001516040516127d692919091825260ff16602082015260400190565b60405180910390a350505050505050565b5f8051602061467583398151915280545f91906107ba906001600160a01b031633856129a0565b6128166116ed565b612820838261303e565b6109c382613060565b6128316116ed565b61079f613071565b6128416116ed565b6001600160a01b0382166128975760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e2061646472657373000000604482015260640161046c565b60128160ff1611156128f65760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b606482015260840161046c565b5f5f8051602061461583398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561294a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296e9190613b59565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156129e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0a9190613b59565b9050612a216001600160a01b038616853086613085565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a899190613b59565b9050818111612aef5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161046c565b611d8082826142ca565b5f612b0784848460016130be565b949350505050565b5f8051602061469583398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8d9190614491565b9050612b9982826109d0565b1561042a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161046c565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c709190613b59565b90506109788484612c818585614360565b612de9565b83515f90612ca65760405162461bcd60e51b815260040161046c90614281565b602085015115612d045760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b606482015260840161046c565b612d0f8484846130e5565b5f612d238660400151876060015185612e78565b90505f8111612d745760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e7400000000604482015260640161046c565b95945050505050565b6040516001600160a01b038381166024830152604482018390526109c391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506131d2565b5f612b07845f8585613233565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612e3a8482613303565b610978576040516001600160a01b0384811660248301525f6044830152612e6e91869182169063095ea7b390606401612daa565b61097884826131d2565b5f612b078484845f6130be565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206146158339815191529180612f0b57505f8160200151115b15612f1a575f92505050612b07565b838511612f7e5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b606482015260840161046c565b612f8884866142ca565b94505f612f9e8260400151836060015188612af9565b9050805f03612fb2575f9350505050612b07565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290612fe5908490614360565b909155509098975050505050505050565b5f8060ff8085169084161181816130195761301185876144ac565b60ff16613027565b61302386866144ac565b60ff165b61303290600a6145a5565b96919550909350505050565b6130466116ed565b61304e6133a0565b6130566133b0565b61074d82826133b8565b6130686116ed565b6107628161353c565b5f5f805160206146558339815191526114f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526109789186918216906323b872dd90608401612daa565b5f811515841515036130db576130d485846145b0565b9050612b07565b612d7485846145c7565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f80516020614615833981519152908281101561319c5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b606482015260840161046c565b6131a683826142ca565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6131e66001600160a01b03841683613544565b905080515f1415801561320a57508080602001905181019061320891906145da565b155b156109c357604051635274afe760e01b81526001600160a01b038416600482015260240161046c565b5f845a10156132845760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e74206761730000000000604482015260640161046c565b834710156132d45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c7565000000604482015260640161046c565b826001600160a01b03163b5f036132ec57505f612b07565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b03168460405161331e91906145f9565b5f604051808303815f865af19150503d805f8114613357576040519150601f19603f3d011682016040523d82523d5f602084013e61335c565b606091505b509150915081801561338657508051158061338657508080602001905181019061338691906145da565b8015612d745750505050506001600160a01b03163b151590565b6133a86116ed565b61079f613551565b61079f6116ed565b6133c06116ed565b6001600160a01b03821661343c5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840161046c565b5f5f8051602061469583398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b29190613b59565b1161351a5760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b606482015260840161046c565b81546001600160a01b0319166001600160a01b03821617825561097883610c27565b6109866116ed565b60606107ba83835f613559565b6114d36116ed565b60608147101561357e5760405163cd78605960e01b815230600482015260240161046c565b5f80856001600160a01b0316848660405161359991906145f9565b5f6040518083038185875af1925050503d805f81146135d3576040519150601f19603f3d011682016040523d82523d5f602084013e6135d8565b606091505b5091509150611d808683836060826135f8576135f38261363f565b6107ba565b815115801561360f57506001600160a01b0384163b155b1561363857604051639996b31560e01b81526001600160a01b038516600482015260240161046c565b50806107ba565b80511561364f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610762575f80fd5b803561368781613668565b919050565b5f806040838503121561369d575f80fd5b8235915060208301356136af81613668565b809150509250929050565b5f602082840312156136ca575f80fd5b81356107ba81613668565b60ff81168114610762575f80fd5b5f805f805f60a086880312156136f7575f80fd5b853561370281613668565b9450602086013561371281613668565b935060408601359250606086013561372981613668565b91506080860135613739816136d5565b809150509295509295909350565b5f8082840361012081121561375a575f80fd5b61010080821215613769575f80fd5b9395938601359450505050565b5f60208284031215613786575f80fd5b5035919050565b5f806040838503121561379e575f80fd5b82356001600160401b038111156137b3575f80fd5b830161016081860312156137c5575f80fd5b946020939093013593505050565b5f805f80606085870312156137e6575f80fd5b8435935060208501356137f881613668565b925060408501356001600160401b0380821115613813575f80fd5b818701915087601f830112613826575f80fd5b813581811115613834575f80fd5b886020828501011115613845575f80fd5b95989497505060200194505050565b5f805f60608486031215613866575f80fd5b83359250602084013561387881613668565b929592945050506040919091013590565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b038111828210171561390e5761390e6138d7565b60405290565b60405161016081016001600160401b038111828210171561390e5761390e6138d7565b604080519081016001600160401b038111828210171561390e5761390e6138d7565b604051601f8201601f191681016001600160401b0381118282101715613981576139816138d7565b604052919050565b5f610100828403121561399a575f80fd5b6139a26138eb565b8235815260208301356139b481613668565b602082015260408301356139c781613668565b60408201526139d86060840161367c565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613a0760e0840161367c565b60e08201529392505050565b5f6001600160401b03821115613a2b57613a2b6138d7565b50601f01601f191660200190565b5f82601f830112613a48575f80fd5b8135613a5b613a5682613a13565b613959565b818152846020838601011115613a6f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613a9c575f80fd5b613aa4613914565b82358152613ab46020840161367c565b6020820152613ac56040840161367c565b604082015260608301356001600160401b03811115613ae2575f80fd5b613aee36828601613a39565b6060830152506080830135608082015260a083013560a0820152613b1460c0840161367c565b60c0820152613b2560e0840161367c565b60e0820152610100613b3881850161367c565b90820152610120838101359082015261014092830135928101929092525090565b5f60208284031215613b69575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b03168152602080830151908201526040810161042a565b5f5b83811015613c48578181015183820152602001613c30565b50505f910152565b5f8151808452613c67816020860160208601613c2e565b601f01601f19169290920160200192915050565b602081525f825160058110613c9e57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612b076060840182613c50565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e0840151613d2f60e08401826001600160a01b03169052565b50826101008301529392505050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613d8660808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613dad610120850183613c50565b915060c085015160e085015260e0850151613dd2828601826001600160a01b03169052565b5090949350505050565b60408152825160408201525f6020840151613e0260608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a08401819052613e336101a0850183613c50565b9150608086015160c085015260a086015160e085015260c0860151610100613e65818701836001600160a01b03169052565b60e08801519150610120613e83818801846001600160a01b03169052565b90880151915061014090613ea1878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b5f82601f830112613ecd575f80fd5b8151613edb613a5682613a13565b818152846020838601011115613eef575f80fd5b612b07826020830160208701613c2e565b5f60208284031215613f10575f80fd5b81516001600160401b0380821115613f26575f80fd5b9083019060408286031215613f39575f80fd5b613f41613937565b825160058110613f4f575f80fd5b8152602083015182811115613f62575f80fd5b613f6e87828601613ebe565b60208301525095945050505050565b805161368781613668565b5f60408284031215613f98575f80fd5b613fa0613937565b8251613fab81613668565b81526020928301519281019290925250919050565b5f60208284031215613fd0575f80fd5b81516001600160401b0380821115613fe6575f80fd5b908301906101008286031215613ffa575f80fd5b6140026138eb565b8251815261401260208401613f7d565b602082015261402360408401613f7d565b604082015261403460608401613f7d565b60608201526080830151608082015260a083015182811115614054575f80fd5b61406087828601613ebe565b60a08301525060c083015160c082015261407c60e08401613f7d565b60e082015295945050505050565b5f60e0828403121561409a575f80fd5b60405160e081018181106001600160401b03821117156140bc576140bc6138d7565b6040528251815260208301516140d181613668565b602082015260408301516140e481613668565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161411781613668565b60c08201529392505050565b5f60208284031215614133575f80fd5b81516001600160401b0380821115614149575f80fd5b90830190610160828603121561415d575f80fd5b614165613914565b61416e83613f7d565b81526020830151602082015261418660408401613f7d565b604082015261419760608401613f7d565b60608201526080830151608082015260a0830151828111156141b7575f80fd5b6141c387828601613ebe565b60a08301525060c083015160c08201526141df60e08401613f7d565b60e0820152610100838101519082015261012091506141ff828401613f7d565b9181019190915261014091820151918101919091529392505050565b5f6060828403121561422b575f80fd5b604051606081018181106001600160401b038211171561424d5761424d6138d7565b604052825181526020830151614262816136d5565b60208201526040830151614275816136d5565b60408201529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561042a5761042a6142b6565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b8082018082111561042a5761042a6142b6565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015614400578451831682529385019360019390930192908501906143de565b5060a0880151878203601f190160e0890152945061441e8186613c50565b98975050505050505050565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f9061441e90830184613c50565b634e487b7160e01b5f52601260045260245ffd5b5f8261448c5761448c61446a565b500690565b5f602082840312156144a1575f80fd5b81516107ba81613668565b60ff828116828216039081111561042a5761042a6142b6565b600181815b808511156144ff57815f19048211156144e5576144e56142b6565b808516156144f257918102915b93841c93908002906144ca565b509250929050565b5f826145155750600161042a565b8161452157505f61042a565b816001811461453757600281146145415761455d565b600191505061042a565b60ff841115614552576145526142b6565b50506001821b61042a565b5060208310610133831016604e8410600b8410161715614580575081810a61042a565b61458a83836144c5565b805f190482111561459d5761459d6142b6565b029392505050565b5f6107ba8383614507565b808202811582820484141761042a5761042a6142b6565b5f826145d5576145d561446a565b500490565b5f602082840312156145ea575f80fd5b815180151581146107ba575f80fd5b5f825161460a818460208701613c2e565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500914a9547f6c3ddce1d5efbd9e687708f0d1d408ce129e8e1a88bce4f40e29500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220c9dcc445d730bf06b0a8bab2f9a46004b6ddb6801b00ffa9c056e4e39d98e11e64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b5060405161483738038061483783398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6146ea8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c806365690038116100a9578063c8511ada1161006e578063c8511ada146102b4578063c868efaa14610388578063d2cc7a701461039b578063f2fde38b146103c2578063fd658268146103d5575f80fd5b80636569003814610232578063715018a6146102455780638da5cb5b1461024d578063909a6ac01461027d5780639731429714610291575f80fd5b80634511243e116100ef5780634511243e146101d15780634797735f146101e45780635d16225d146101f85780635eb995141461020b57806362e3901b1461021e575f80fd5b806310fe9ae81461012b578063154d625a146101745780632b0d8f18146101955780633bb03890146101aa5780634213cf78146101bd575b5f80fd5b7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61018761018236600461368c565b6103e8565b60405190815260200161016b565b6101a86101a33660046136ba565b610430565b005b6101a86101b83660046136e3565b610532565b5f8051602061461583398151915254610187565b6101a86101df3660046136ba565b610646565b6101875f8051602061467583398151915281565b6101a8610206366004613747565b610735565b6101a8610219366004613776565b610751565b6101875f8051602061461583398151915281565b6101a861024036600461378d565b610765565b6101a861078e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610157565b6101875f8051602061469583398151915281565b6102a461029f3660046136ba565b6107a1565b604051901515815260200161016b565b6103516102c236600461368c565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061463583398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161016b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b6101a86103963660046137d3565b6107c1565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610187565b6101a86103d03660046136ba565b61097e565b6101a86103e3366004613854565b6109b8565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f805160206146958339815191526104466109c8565b6001600160a01b0382166104755760405162461bcd60e51b815260040161046c90613889565b60405180910390fd5b61047f81836109d0565b156104e25760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161046c565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156105765750825b90505f826001600160401b031660011480156105915750303b155b90508115801561059f575080155b156105bd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105e757845460ff60401b1916600160401b1785555b6105f48a8a8a8a8a6109f1565b831561063a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f8051602061469583398151915261065c6109c8565b6001600160a01b0382166106825760405162461bcd60e51b815260040161046c90613889565b61068c81836109d0565b6106ea5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161046c565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61074d61074736849003840184613989565b82610a16565b5050565b6107596109c8565b61076281610c27565b50565b61074d61077d5f805160206146158339815191525490565b303361078886613a8b565b85610dbf565b610796610fcb565b61079f5f611026565b565b5f5f805160206146958339815191526107ba81846109d0565b9392505050565b6107c9611096565b5f5f8051602061469583398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108589190613b59565b10156108bf5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161046c565b6108c981336109d0565b1561092f5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161046c565b61096f858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506110e092505050565b506109786114d3565b50505050565b610986610fcb565b6001600160a01b0381166109af57604051631e4fbdf760e01b81525f600482015260240161046c565b61076281611026565b6109c38383836114fd565b505050565b61079f610fcb565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6109f96116ed565b610a068585858585611736565b610a0f8261175b565b5050505050565b5f805160206146558339815191528054600114610a455760405162461bcd60e51b815260040161046c90613b70565b60028155610a5283611791565b60e08301516001600160a01b031615610a7d5760405162461bcd60e51b815260040161046c90613bb4565b5f80610a9b855f01518660200151868860600151896080015161183a565b915091505f604051806040016040528060016004811115610abe57610abe613bfa565b8152602001604051806040016040528089604001516001600160a01b0316815260200186815250604051602001610af59190613c0e565b60405160208183030381529060405281525090505f610bd46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b604051908082528060200260200182016040528015610ba6578160200160208202803683370190505b50815260200184604051602001610bbd9190613c7b565b6040516020818303038152906040528152506119ff565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528987604051610c12929190613cbd565b60405180910390a35050600190925550505050565b5f8051602061469583398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f9190613b59565b600283015490915081841115610d115760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161046c565b808411610d865760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161046c565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f805160206146558339815191528054600114610dee5760405162461bcd60e51b815260040161046c90613b70565b60028155610dfb83611b1a565b60c08301516001600160a01b031615610e265760405162461bcd60e51b815260040161046c90613bb4565b5f80610e46855f015186602001518688610100015189610120015161183a565b915091505f604051806040016040528060026004811115610e6957610e69613bfa565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610eec9190613d3e565b60405160208183030381529060405281525090505f610f756040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610fb3929190613ddc565b60405180910390a35050600190925550505050505050565b33610ffd7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461079f5760405163118cdaa760e01b815233600482015260240161046c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016110da57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f8051602061461583398151915290505f828060200190518101906111069190613f00565b905060018151600481111561111d5761111d613bfa565b03611165575f816020015180602001905181019061113b9190613f88565b90505f61114d87878460200151611cff565b905061115c825f015182611d8a565b50505050505050565b60028151600481111561117a5761117a613bfa565b03611293575f81602001518060200190518101906111989190613fc0565b90505f6111aa87878460800151611cff565b825190915087146112105760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b606482015260840161046c565b856001600160a01b031682602001516001600160a01b0316146112895760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b606482015260840161046c565b61115c8282611ded565b6003815160048111156112a8576112a8613bfa565b0361137c575f81602001518060200190518101906112c6919061408a565b90505f806112de888885606001518660800151611fcd565b91509150611372604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b031681525083612078565b5050505050505050565b60048151600481111561139157611391613bfa565b0361148c575f81602001518060200190518101906113af9190614123565b90505f806113c888888560800151866101400151611fcd565b915091506113728888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612203565b5f815160048111156114a0576114a0613bfa565b03610a0f575f81602001518060200190518101906114be919061421b565b90506114cb8686836123e0565b505050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614655833981519152805460011461152c5760405162461bcd60e51b815260040161046c90613b70565b60028082555f8581525f80516020614635833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f80516020614615833981519152916115c35760405162461bcd60e51b815260040161046c90614281565b5f8160200151116116205760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b606482015260840161046c565b611629846127e7565b93505f80826020015186106116585760208301515f925061164a90876142ca565b90508260200151955061166b565b85836020015161166891906142ca565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156116df576116df3382611d8a565b505060019092555050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661079f57604051631afcd79f60e31b815260040160405180910390fd5b61173e6116ed565b61174985858561280e565b611751612829565b610a0f8282612839565b6117636116ed565b5f8051602061467583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60408101516001600160a01b03166117f55760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b606482015260840161046c565b5f8160c00151116118185760405162461bcd60e51b815260040161046c906142dd565b60a0810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8581525f80516020614635833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f8051602061461583398151915291906118d15760405162461bcd60e51b815260040161046c90614281565b6020810151156119335760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b606482015260840161046c565b61193c876127e7565b965084156119525761194f8633876129a0565b94505b5f611966826040015183606001518a612af9565b90505f81116119b75760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e74000000604482015260640161046c565b5f8a815260038401602090815260408083206001600160a01b038d168452909152812080548392906119ea908490614360565b90915550909a95995094975050505050505050565b5f80611a09612b0f565b60408401516020015190915015611aae576040830151516001600160a01b0316611a8b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b606482015260840161046c565b604083015160208101519051611aae916001600160a01b03909116908390612bff565b604051630624488560e41b81526001600160a01b03821690636244885090611ada908690600401614373565b6020604051808303815f875af1158015611af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ba9190613b59565b60408101516001600160a01b0316611b875760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b606482015260840161046c565b5f816080015111611baa5760405162461bcd60e51b815260040161046c906142dd565b5f8160a0015111611c095760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b606482015260840161046c565b80608001518160a0015110611c6f5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b606482015260840161046c565b60e08101516001600160a01b0316611cdc5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b606482015260840161046c565b610140810151156107625760405162461bcd60e51b815260040161046c9061431f565b5f8381525f80516020614635833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f8051602061461583398151915290611d8081878787612c86565b9695505050505050565b6040518181525f80516020614675833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a280546109c3906001600160a01b03168484612d7d565b5f80516020614675833981519152805460608401516001600160a01b0390911690611e1a90829085612bff565b5f845f01518560200151866040015184878960a00151604051602401611e459695949392919061442a565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c086015160608701519192505f91611e89919084612ddc565b6060870151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192505f919085169063dd62ed3e90604401602060405180830381865afa158015611ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f029190613b59565b9050611f138488606001515f612de9565b8115611f655786606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff487604051611f5891815260200190565b60405180910390a2611fad565b86606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb087604051611fa491815260200190565b60405180910390a25b801561115c5760e087015161115c906001600160a01b0386169083612d7d565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206146158339815191529082612051828a8a8a612c86565b90505f6120678360400151846060015189612e78565b919a91995090975050505050505050565b5f8051602061465583398151915280546001146120a75760405162461bcd60e51b815260040161046c90613b70565b600281556120b483611791565b5f6120cc845f01518560200151858760800151612e85565b9050805f036120e9576120e38460e0015184611d8a565b506121fb565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161212f9190613c0e565b60405160208183030381529060405281525090505f6121bb6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf087856040516121ef929190613cbd565b60405180910390a25050505b600190555050565b5f8051602061465583398151915280546001146122325760405162461bcd60e51b815260040161046c90613b70565b6002815561223f83611b1a565b5f612258845f0151856020015185876101200151612e85565b9050805f036122755761226f8460c0015184611d8a565b506123d5565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016123079190613d3e565b60405160208183030381529060405281525090505f6123956040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610b7d57610b7d6138d7565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb3087856040516123c9929190613ddc565b60405180910390a25050505b600190555050505050565b5f80516020614615833981519152836124475760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b606482015260840161046c565b805484036124af5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b606482015260840161046c565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b606482015260840161046c565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561259e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b606482015260840161046c565b6012826040015160ff1611156126085760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b606482015260840161046c565b6001810154602083015160ff908116600160a01b909204161461267c5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b606482015260840161046c565b5f8061269d8360010160149054906101000a900460ff168560400151612ff6565b915091505f6126b08383875f0151612e78565b90508180156126ca575084516126c790849061447e565b15155b156126dd576126da600182614360565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b908388604001516040516127d692919091825260ff16602082015260400190565b60405180910390a350505050505050565b5f8051602061467583398151915280545f91906107ba906001600160a01b031633856129a0565b6128166116ed565b612820838261303e565b6109c382613060565b6128316116ed565b61079f613071565b6128416116ed565b6001600160a01b0382166128975760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e2061646472657373000000604482015260640161046c565b60128160ff1611156128f65760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b606482015260840161046c565b5f5f8051602061461583398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561294a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296e9190613b59565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156129e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0a9190613b59565b9050612a216001600160a01b038616853086613085565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a899190613b59565b9050818111612aef5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161046c565b611d8082826142ca565b5f612b0784848460016130be565b949350505050565b5f8051602061469583398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8d9190614491565b9050612b9982826109d0565b1561042a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161046c565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c709190613b59565b90506109788484612c818585614360565b612de9565b83515f90612ca65760405162461bcd60e51b815260040161046c90614281565b602085015115612d045760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b606482015260840161046c565b612d0f8484846130e5565b5f612d238660400151876060015185612e78565b90505f8111612d745760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e7400000000604482015260640161046c565b95945050505050565b6040516001600160a01b038381166024830152604482018390526109c391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506131d2565b5f612b07845f8585613233565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612e3a8482613303565b610978576040516001600160a01b0384811660248301525f6044830152612e6e91869182169063095ea7b390606401612daa565b61097884826131d2565b5f612b078484845f6130be565b5f8481525f80516020614635833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206146158339815191529180612f0b57505f8160200151115b15612f1a575f92505050612b07565b838511612f7e5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b606482015260840161046c565b612f8884866142ca565b94505f612f9e8260400151836060015188612af9565b9050805f03612fb2575f9350505050612b07565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290612fe5908490614360565b909155509098975050505050505050565b5f8060ff8085169084161181816130195761301185876144ac565b60ff16613027565b61302386866144ac565b60ff165b61303290600a6145a5565b96919550909350505050565b6130466116ed565b61304e6133a0565b6130566133b0565b61074d82826133b8565b6130686116ed565b6107628161353c565b5f5f805160206146558339815191526114f6565b6040516001600160a01b0384811660248301528381166044830152606482018390526109789186918216906323b872dd90608401612daa565b5f811515841515036130db576130d485846145b0565b9050612b07565b612d7485846145c7565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f80516020614615833981519152908281101561319c5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b606482015260840161046c565b6131a683826142ca565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6131e66001600160a01b03841683613544565b905080515f1415801561320a57508080602001905181019061320891906145da565b155b156109c357604051635274afe760e01b81526001600160a01b038416600482015260240161046c565b5f845a10156132845760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e74206761730000000000604482015260640161046c565b834710156132d45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c7565000000604482015260640161046c565b826001600160a01b03163b5f036132ec57505f612b07565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b03168460405161331e91906145f9565b5f604051808303815f865af19150503d805f8114613357576040519150601f19603f3d011682016040523d82523d5f602084013e61335c565b606091505b509150915081801561338657508051158061338657508080602001905181019061338691906145da565b8015612d745750505050506001600160a01b03163b151590565b6133a86116ed565b61079f613551565b61079f6116ed565b6133c06116ed565b6001600160a01b03821661343c5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840161046c565b5f5f8051602061469583398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b29190613b59565b1161351a5760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b606482015260840161046c565b81546001600160a01b0319166001600160a01b03821617825561097883610c27565b6109866116ed565b60606107ba83835f613559565b6114d36116ed565b60608147101561357e5760405163cd78605960e01b815230600482015260240161046c565b5f80856001600160a01b0316848660405161359991906145f9565b5f6040518083038185875af1925050503d805f81146135d3576040519150601f19603f3d011682016040523d82523d5f602084013e6135d8565b606091505b5091509150611d808683836060826135f8576135f38261363f565b6107ba565b815115801561360f57506001600160a01b0384163b155b1561363857604051639996b31560e01b81526001600160a01b038516600482015260240161046c565b50806107ba565b80511561364f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610762575f80fd5b803561368781613668565b919050565b5f806040838503121561369d575f80fd5b8235915060208301356136af81613668565b809150509250929050565b5f602082840312156136ca575f80fd5b81356107ba81613668565b60ff81168114610762575f80fd5b5f805f805f60a086880312156136f7575f80fd5b853561370281613668565b9450602086013561371281613668565b935060408601359250606086013561372981613668565b91506080860135613739816136d5565b809150509295509295909350565b5f8082840361012081121561375a575f80fd5b61010080821215613769575f80fd5b9395938601359450505050565b5f60208284031215613786575f80fd5b5035919050565b5f806040838503121561379e575f80fd5b82356001600160401b038111156137b3575f80fd5b830161016081860312156137c5575f80fd5b946020939093013593505050565b5f805f80606085870312156137e6575f80fd5b8435935060208501356137f881613668565b925060408501356001600160401b0380821115613813575f80fd5b818701915087601f830112613826575f80fd5b813581811115613834575f80fd5b886020828501011115613845575f80fd5b95989497505060200194505050565b5f805f60608486031215613866575f80fd5b83359250602084013561387881613668565b929592945050506040919091013590565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b038111828210171561390e5761390e6138d7565b60405290565b60405161016081016001600160401b038111828210171561390e5761390e6138d7565b604080519081016001600160401b038111828210171561390e5761390e6138d7565b604051601f8201601f191681016001600160401b0381118282101715613981576139816138d7565b604052919050565b5f610100828403121561399a575f80fd5b6139a26138eb565b8235815260208301356139b481613668565b602082015260408301356139c781613668565b60408201526139d86060840161367c565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613a0760e0840161367c565b60e08201529392505050565b5f6001600160401b03821115613a2b57613a2b6138d7565b50601f01601f191660200190565b5f82601f830112613a48575f80fd5b8135613a5b613a5682613a13565b613959565b818152846020838601011115613a6f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613a9c575f80fd5b613aa4613914565b82358152613ab46020840161367c565b6020820152613ac56040840161367c565b604082015260608301356001600160401b03811115613ae2575f80fd5b613aee36828601613a39565b6060830152506080830135608082015260a083013560a0820152613b1460c0840161367c565b60c0820152613b2560e0840161367c565b60e0820152610100613b3881850161367c565b90820152610120838101359082015261014092830135928101929092525090565b5f60208284031215613b69575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b03168152602080830151908201526040810161042a565b5f5b83811015613c48578181015183820152602001613c30565b50505f910152565b5f8151808452613c67816020860160208601613c2e565b601f01601f19169290920160200192915050565b602081525f825160058110613c9e57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612b076060840182613c50565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e0840151613d2f60e08401826001600160a01b03169052565b50826101008301529392505050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613d8660808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613dad610120850183613c50565b915060c085015160e085015260e0850151613dd2828601826001600160a01b03169052565b5090949350505050565b60408152825160408201525f6020840151613e0260608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a08401819052613e336101a0850183613c50565b9150608086015160c085015260a086015160e085015260c0860151610100613e65818701836001600160a01b03169052565b60e08801519150610120613e83818801846001600160a01b03169052565b90880151915061014090613ea1878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b5f82601f830112613ecd575f80fd5b8151613edb613a5682613a13565b818152846020838601011115613eef575f80fd5b612b07826020830160208701613c2e565b5f60208284031215613f10575f80fd5b81516001600160401b0380821115613f26575f80fd5b9083019060408286031215613f39575f80fd5b613f41613937565b825160058110613f4f575f80fd5b8152602083015182811115613f62575f80fd5b613f6e87828601613ebe565b60208301525095945050505050565b805161368781613668565b5f60408284031215613f98575f80fd5b613fa0613937565b8251613fab81613668565b81526020928301519281019290925250919050565b5f60208284031215613fd0575f80fd5b81516001600160401b0380821115613fe6575f80fd5b908301906101008286031215613ffa575f80fd5b6140026138eb565b8251815261401260208401613f7d565b602082015261402360408401613f7d565b604082015261403460608401613f7d565b60608201526080830151608082015260a083015182811115614054575f80fd5b61406087828601613ebe565b60a08301525060c083015160c082015261407c60e08401613f7d565b60e082015295945050505050565b5f60e0828403121561409a575f80fd5b60405160e081018181106001600160401b03821117156140bc576140bc6138d7565b6040528251815260208301516140d181613668565b602082015260408301516140e481613668565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161411781613668565b60c08201529392505050565b5f60208284031215614133575f80fd5b81516001600160401b0380821115614149575f80fd5b90830190610160828603121561415d575f80fd5b614165613914565b61416e83613f7d565b81526020830151602082015261418660408401613f7d565b604082015261419760608401613f7d565b60608201526080830151608082015260a0830151828111156141b7575f80fd5b6141c387828601613ebe565b60a08301525060c083015160c08201526141df60e08401613f7d565b60e0820152610100838101519082015261012091506141ff828401613f7d565b9181019190915261014091820151918101919091529392505050565b5f6060828403121561422b575f80fd5b604051606081018181106001600160401b038211171561424d5761424d6138d7565b604052825181526020830151614262816136d5565b60208201526040830151614275816136d5565b60408201529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561042a5761042a6142b6565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b8082018082111561042a5761042a6142b6565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015614400578451831682529385019360019390930192908501906143de565b5060a0880151878203601f190160e0890152945061441e8186613c50565b98975050505050505050565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f9061441e90830184613c50565b634e487b7160e01b5f52601260045260245ffd5b5f8261448c5761448c61446a565b500690565b5f602082840312156144a1575f80fd5b81516107ba81613668565b60ff828116828216039081111561042a5761042a6142b6565b600181815b808511156144ff57815f19048211156144e5576144e56142b6565b808516156144f257918102915b93841c93908002906144ca565b509250929050565b5f826145155750600161042a565b8161452157505f61042a565b816001811461453757600281146145415761455d565b600191505061042a565b60ff841115614552576145526142b6565b50506001821b61042a565b5060208310610133831016604e8410600b8410161715614580575081810a61042a565b61458a83836144c5565b805f190482111561459d5761459d6142b6565b029392505050565b5f6107ba8383614507565b808202811582820484141761042a5761042a6142b6565b5f826145d5576145d561446a565b500490565b5f602082840312156145ea575f80fd5b815180151581146107ba575f80fd5b5f825161460a818460208701613c2e565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500914a9547f6c3ddce1d5efbd9e687708f0d1d408ce129e8e1a88bce4f40e29500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a264697066735822122092823e322ffd6798cab6557064b56065b8e2030ffe7407f37af4b50111e2a56364736f6c63430008190033", } // ERC20TokenHomeUpgradeableABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenHome/NativeTokenHome/NativeTokenHome.go b/abi-bindings/go/ictt/TokenHome/NativeTokenHome/NativeTokenHome.go index 41e6c77c9..09af00c19 100644 --- a/abi-bindings/go/ictt/TokenHome/NativeTokenHome/NativeTokenHome.go +++ b/abi-bindings/go/ictt/TokenHome/NativeTokenHome/NativeTokenHome.go @@ -67,7 +67,7 @@ type SendTokensInput struct { // NativeTokenHomeMetaData contains all meta data concerning the NativeTokenHome contract. var NativeTokenHomeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrappedTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialCollateralNeeded\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"RemoteRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"addCollateral\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getRemoteTokenTransferrerSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralNeeded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"multiplyOnRemote\",\"type\":\"bool\"}],\"internalType\":\"structRemoteTokenTransferrerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getTransferredBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrappedTokenAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516152c13803806152c183398101604081905261002e91610890565b61003a84848484610046565b505050506108f1565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f8115801561008f5750825b90505f826001600160401b031660011480156100aa5750303b155b9050811580156100b8575080155b156100d65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010457845460ff60401b1916680100000000000000001785555b61011089898989610161565b831561015657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610169610186565b6101778484848460126101d6565b61018081610202565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101d457604051631afcd79f60e31b815260040160405180910390fd5b565b6101de610186565b6101e985858561024b565b6101f161026b565b6101fb828261027b565b5050505050565b61020a610186565b7f3b5030f10c94fcbdaa3022348ff0b82dbd4c0c71339e41ff59d0bdc92179d60080546001600160a01b0319166001600160a01b0392909216919091179055565b610253610186565b61025d8382610407565b6102668261042d565b505050565b610273610186565b6101d461043e565b610283610186565b6001600160a01b0382166102de5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064015b60405180910390fd5b60128160ff16111561033d5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016102d5565b5f7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e60090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d591906108da565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b61040f610186565b610417610468565b61041f610478565b6104298282610480565b5050565b610435610186565b61004381610604565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b610470610186565b6101d461063e565b6101d4610186565b610488610186565b6001600160a01b0382166105045760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016102d5565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610569573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058d91906108da565b116105e25760405162461bcd60e51b815260206004820152603260248201525f805160206152a1833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102d5565b81546001600160a01b0319166001600160a01b0382161782556101808361066d565b61060c610186565b6001600160a01b03811661063557604051631e4fbdf760e01b81525f60048201526024016102d5565b61004381610805565b610646610186565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610461565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156106d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f891906108da565b6002830154909150818411156107575760405162461bcd60e51b815260206004820152603160248201525f805160206152a183398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102d5565b8084116107cc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102d5565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b038116811461088b575f80fd5b919050565b5f805f80608085870312156108a3575f80fd5b6108ac85610875565b93506108ba60208601610875565b9250604085015191506108cf60608601610875565b905092959194509250565b5f602082840312156108ea575f80fd5b5051919050565b6149a3806108fe5f395ff3fe60806040526004361061011e575f3560e01c80638da5cb5b1161009d578063c8511ada11610062578063c8511ada146103d5578063c868efaa146104b5578063d2cc7a70146104d4578063efb5b95e14610507578063f2fde38b14610527575f80fd5b80638da5cb5b14610318578063909a6ac0146103545780639731429714610374578063b0b78b26146103a3578063be203094146103b6575f80fd5b80635eb99514116100e35780635eb995141461029f57806362e3901b146102be5780636e6eef8d146102de578063715018a6146102f15780638bf2fa9414610305575f80fd5b806310fe9ae8146101bf578063154d625a146102145780632b0d8f18146102415780634213cf78146102605780634511243e14610280575f80fd5b366101bb577f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b031633146101b95760405162461bcd60e51b815260206004820152602f60248201527f4e6174697665546f6b656e486f6d653a20696e76616c6964207265636569766560448201526e103830bcb0b136329039b2b73232b960891b60648201526084015b60405180910390fd5b005b5f80fd5b3480156101ca575f80fd5b507f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021f575f80fd5b5061023361022e3660046139c6565b610546565b60405190815260200161020b565b34801561024c575f80fd5b506101b961025b3660046139f4565b61058e565b34801561026b575f80fd5b505f805160206148ce83398151915254610233565b34801561028b575f80fd5b506101b961029a3660046139f4565b610687565b3480156102aa575f80fd5b506101b96102b9366004613a0f565b610776565b3480156102c9575f80fd5b506102335f805160206148ce83398151915281565b6101b96102ec366004613a26565b61078a565b3480156102fc575f80fd5b506101b96107b3565b6101b9610313366004613a5d565b6107c6565b348015610323575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101f7565b34801561035f575f80fd5b506102335f8051602061494e83398151915281565b34801561037f575f80fd5b5061039361038e3660046139f4565b6107de565b604051901515815260200161020b565b6101b96103b13660046139c6565b6107fe565b3480156103c1575f80fd5b506101b96103d0366004613a74565b61080d565b3480156103e0575f80fd5b5061047e6103ef3660046139c6565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061490e83398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161020b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b3480156104c0575f80fd5b506101b96104cf366004613ac4565b61091f565b3480156104df575f80fd5b507fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610233565b348015610512575f80fd5b506102335f805160206148ee83398151915281565b348015610532575f80fd5b506101b96105413660046139f4565b610adc565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f8051602061494e8339815191526105a4610b16565b6001600160a01b0382166105ca5760405162461bcd60e51b81526004016101b090613b45565b6105d48183610b1e565b156106375760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016101b0565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061494e83398151915261069d610b16565b6001600160a01b0382166106c35760405162461bcd60e51b81526004016101b090613b45565b6106cd8183610b1e565b61072b5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016101b0565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61077e610b16565b61078781610b3f565b50565b6107876107a25f805160206148ce8339815191525490565b30336107ad85613cbd565b34610cd7565b6107bb610f3a565b6107c45f610f95565b565b6107876107d836839003830183613d8b565b34611005565b5f5f8051602061494e8339815191526107f78184610b1e565b9392505050565b6108098282346111bf565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108515750825b90505f826001600160401b0316600114801561086c5750303b155b90508115801561087a575080155b156108985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108c257845460ff60401b1916600160401b1785555b6108ce898989896113af565b831561091457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6109276113ce565b5f5f8051602061494e83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b69190613e15565b1015610a1d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016101b0565b610a278133610b1e565b15610a8d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016101b0565b610acd858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061141892505050565b50610ad661180c565b50505050565b610ae4610f3a565b6001600160a01b038116610b0d57604051631e4fbdf760e01b81525f60048201526024016101b0565b61078781610f95565b6107c4610f3a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b5f8051602061494e83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610b93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb79190613e15565b600283015490915081841115610c295760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016101b0565b808411610c9e5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016101b0565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f8051602061492e8339815191528054600114610d065760405162461bcd60e51b81526004016101b090613e2c565b60028155610d1383611836565b60c08301516001600160a01b031615610d3e5760405162461bcd60e51b81526004016101b090613e70565b5f80610d5e855f0151866020015186886101000151896101200151611a1b565b915091505f604051806040016040528060026004811115610d8157610d81613eb6565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610e049190613f17565b60405160208183030381529060405281525090505f610ee46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b604051908082528060200260200182016040528015610eb6578160200160208202803683370190505b50815260200184604051602001610ecd9190613fb5565b604051602081830303815290604052815250611be0565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610f22929190613ff7565b60405180910390a35050600190925550505050505050565b33610f6c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107c45760405163118cdaa760e01b81523360048201526024016101b0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8051602061492e83398151915280546001146110345760405162461bcd60e51b81526004016101b090613e2c565b6002815561104183611cfb565b60e08301516001600160a01b03161561106c5760405162461bcd60e51b81526004016101b090613e70565b5f8061108a855f015186602001518688606001518960800151611a1b565b915091505f6040518060400160405280600160048111156110ad576110ad613eb6565b8152602001604051806040016040528089604001516001600160a01b03168152602001868152506040516020016110e491906140d9565b60405160208183030381529060405281525090505f61116c6040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5289876040516111aa9291906140f9565b60405180910390a35050600190925550505050565b5f8051602061492e83398151915280546001146111ee5760405162461bcd60e51b81526004016101b090613e2c565b60028082555f8581525f8051602061490e833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f805160206148ce833981519152916112855760405162461bcd60e51b81526004016101b09061417a565b5f8160200151116112e25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b60648201526084016101b0565b6112eb84611da4565b93505f808260200151861061131a5760208301515f925061130c90876141c3565b90508260200151955061132d565b85836020015161132a91906141c3565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156113a1576113a13382611dca565b505060019092555050505050565b6113b7611e88565b6113c5848484846012611ed1565b610ad681611ef6565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161141257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f805160206148ce83398151915290505f8280602001905181019061143e9190614218565b905060018151600481111561145557611455613eb6565b0361149d575f816020015180602001905181019061147391906142a0565b90505f61148587878460200151611f2c565b9050611494825f015182611dca565b50505050505050565b6002815160048111156114b2576114b2613eb6565b036115cb575f81602001518060200190518101906114d091906142d8565b90505f6114e287878460800151611f2c565b825190915087146115485760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016101b0565b856001600160a01b031682602001516001600160a01b0316146115c15760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b60648201526084016101b0565b6114948282611fb7565b6003815160048111156115e0576115e0613eb6565b036116b4575f81602001518060200190518101906115fe91906143a2565b90505f8061161688888560600151866080015161213d565b915091506116aa604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b0316815250836121e8565b5050505050505050565b6004815160048111156116c9576116c9613eb6565b036117c4575f81602001518060200190518101906116e7919061443b565b90505f806117008888856080015186610140015161213d565b915091506116aa8888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612373565b5f815160048111156117d8576117d8613eb6565b03611805575f81602001518060200190518101906117f69190614543565b9050611803868683612550565b505b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b60408101516001600160a01b03166118a35760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b60648201526084016101b0565b5f8160800151116118c65760405162461bcd60e51b81526004016101b0906145a5565b5f8160a00151116119255760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b60648201526084016101b0565b80608001518160a001511061198b5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b60648201526084016101b0565b60e08101516001600160a01b03166119f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b60648201526084016101b0565b610140810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f8581525f8051602061490e833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f805160206148ce8339815191529190611ab25760405162461bcd60e51b81526004016101b09061417a565b602081015115611b145760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b60648201526084016101b0565b611b1d87611da4565b96508415611b3357611b30863387612957565b94505b5f611b47826040015183606001518a612ab0565b90505f8111611b985760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e7400000060448201526064016101b0565b5f8a815260038401602090815260408083206001600160a01b038d16845290915281208054839290611bcb908490614628565b90915550909a95995094975050505050505050565b5f80611bea612ac6565b60408401516020015190915015611c8f576040830151516001600160a01b0316611c6c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016101b0565b604083015160208101519051611c8f916001600160a01b03909116908390612bb6565b604051630624488560e41b81526001600160a01b03821690636244885090611cbb90869060040161463b565b6020604051808303815f875af1158015611cd7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f79190613e15565b60408101516001600160a01b0316611d5f5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b60648201526084016101b0565b5f8160c0015111611d825760405162461bcd60e51b81526004016101b0906145a5565b60a0810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f805160206148ee83398151915280545f91906107f7906001600160a01b031684612c3d565b6040518181525f805160206148ee833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a28054604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015611e59575f80fd5b505af1158015611e6b573d5f803e3d5ffd5b50611e83925050506001600160a01b03841683612de2565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107c457604051631afcd79f60e31b815260040160405180910390fd5b611ed9611e88565b611ee4858585612e75565b611eec612e90565b6118058282612ea0565b611efe611e88565b5f805160206148ee83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b5f8381525f8051602061490e833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f805160206148ce83398151915290611fad81878787613007565b9695505050505050565b5f5f805160206148ee8339815191528054604051632e1a7d4d60e01b8152600481018590529192506001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015612009575f80fd5b505af115801561201b573d5f803e3d5ffd5b50508451602086015160408088015160a089015191515f965061204495509091906024016146f2565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c085015160608601519192505f9161208a91908690856130f5565b905080156120de5784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516120d191815260200190565b60405180910390a2611805565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08560405161211d91815260200190565b60405180910390a260e0850151611805906001600160a01b031685612de2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206148ce83398151915290826121c1828a8a8a613007565b90505f6121d783604001518460600151896131c5565b919a91995090975050505050505050565b5f8051602061492e83398151915280546001146122175760405162461bcd60e51b81526004016101b090613e2c565b6002815561222483611cfb565b5f61223c845f015185602001518587608001516131d2565b9050805f03612259576122538460e0015184611dca565b5061236b565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161229f91906140d9565b60405160208183030381529060405281525090505f61232b6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf0878560405161235f9291906140f9565b60405180910390a25050505b600190555050565b5f8051602061492e83398151915280546001146123a25760405162461bcd60e51b81526004016101b090613e2c565b600281556123af83611836565b5f6123c8845f01518560200151858761012001516131d2565b9050805f036123e5576123df8460c0015184611dca565b50612545565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016124779190613f17565b60405160208183030381529060405281525090505f6125056040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb308785604051612539929190613ff7565b60405180910390a25050505b600190555050505050565b5f805160206148ce833981519152836125b75760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b60648201526084016101b0565b8054840361261f5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b60648201526084016101b0565b6001600160a01b03831661268e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b60648201526084016101b0565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561270e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b60648201526084016101b0565b6012826040015160ff1611156127785760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016101b0565b6001810154602083015160ff908116600160a01b90920416146127ec5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b60648201526084016101b0565b5f8061280d8360010160149054906101000a900460ff168560400151613343565b915091505f6128208383875f01516131c5565b905081801561283a57508451612837908490614737565b15155b1561284d5761284a600182614628565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b9083886040015160405161294692919091825260ff16602082015260400190565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa15801561299d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c19190613e15565b90506129d86001600160a01b03861685308661338b565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a409190613e15565b9050818111612aa65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016101b0565b611fad82826141c3565b5f612abe84848460016133f2565b949350505050565b5f8051602061494e83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b44919061474a565b9050612b508282610b1e565b156105885760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016101b0565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c279190613e15565b9050610ad68484612c388585614628565b613419565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015612c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca79190613e15565b9050836001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612ce2575f80fd5b505af1158015612cf4573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f93506001600160a01b03881692506370a082319150602401602060405180830381865afa158015612d3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d619190613e15565b9050818111612dcf5760405162461bcd60e51b815260206004820152603460248201527f53616665577261707065644e6174697665546f6b656e4465706f7369743a2062604482015273185b185b98d9481b9bdd081a5b98dc99585cd95960621b60648201526084016101b0565b612dd982826141c3565b95945050505050565b80471015612e055760405163cd78605960e01b81523060048201526024016101b0565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e4e576040519150601f19603f3d011682016040523d82523d5f602084013e612e53565b606091505b5050905080611e8357604051630a12f52160e11b815260040160405180910390fd5b612e7d611e88565b612e8783826134a8565b611e83826134ca565b612e98611e88565b6107c46134db565b612ea8611e88565b6001600160a01b038216612efe5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064016101b0565b60128160ff161115612f5d5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016101b0565b5f5f805160206148ce83398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fd59190613e15565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b83515f906130275760405162461bcd60e51b81526004016101b09061417a565b6020850151156130855760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b60648201526084016101b0565b6130908484846134ef565b5f6130a486604001518760600151856131c5565b90505f8111612dd95760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e740000000060448201526064016101b0565b5f845a10156131465760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016101b0565b834710156131965760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016101b0565b826001600160a01b03163b5f036131ae57505f612abe565b5f805f84516020860188888bf19695505050505050565b5f612abe8484845f6133f2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206148ce833981519152918061325857505f8160200151115b15613267575f92505050612abe565b8385116132cb5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b60648201526084016101b0565b6132d584866141c3565b94505f6132eb8260400151836060015188612ab0565b9050805f036132ff575f9350505050612abe565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290613332908490614628565b909155509098975050505050505050565b5f8060ff8085169084161181816133665761335e8587614765565b60ff16613374565b6133708686614765565b60ff165b61337f90600a61485e565b96919550909350505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610ad69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506135dc565b5f8115158415150361340f576134088584614869565b9050612abe565b612dd98584614880565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261346a848261363d565b610ad6576040516001600160a01b0384811660248301525f604483015261349e91869182169063095ea7b3906064016133c0565b610ad684826135dc565b6134b0611e88565b6134b86136da565b6134c06136ea565b61080982826136f2565b6134d2611e88565b61078781613876565b5f5f8051602061492e83398151915261182f565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f805160206148ce83398151915290828110156135a65760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b60648201526084016101b0565b6135b083826141c3565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6135f06001600160a01b0384168361387e565b905080515f141580156136145750808060200190518101906136129190614893565b155b15611e8357604051635274afe760e01b81526001600160a01b03841660048201526024016101b0565b5f805f846001600160a01b03168460405161365891906148b2565b5f604051808303815f865af19150503d805f8114613691576040519150601f19603f3d011682016040523d82523d5f602084013e613696565b606091505b50915091508180156136c05750805115806136c05750808060200190518101906136c09190614893565b8015612dd95750505050506001600160a01b03163b151590565b6136e2611e88565b6107c461388b565b6107c4611e88565b6136fa611e88565b6001600160a01b0382166137765760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016101b0565b5f5f8051602061494e83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137ec9190613e15565b116138545760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016101b0565b81546001600160a01b0319166001600160a01b038216178255610ad683610b3f565b610ae4611e88565b60606107f783835f613893565b61180c611e88565b6060814710156138b85760405163cd78605960e01b81523060048201526024016101b0565b5f80856001600160a01b031684866040516138d391906148b2565b5f6040518083038185875af1925050503d805f811461390d576040519150601f19603f3d011682016040523d82523d5f602084013e613912565b606091505b5091509150611fad8683836060826139325761392d82613979565b6107f7565b815115801561394957506001600160a01b0384163b155b1561397257604051639996b31560e01b81526001600160a01b03851660048201526024016101b0565b50806107f7565b8051156139895780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610787575f80fd5b80356139c1816139a2565b919050565b5f80604083850312156139d7575f80fd5b8235915060208301356139e9816139a2565b809150509250929050565b5f60208284031215613a04575f80fd5b81356107f7816139a2565b5f60208284031215613a1f575f80fd5b5035919050565b5f60208284031215613a36575f80fd5b81356001600160401b03811115613a4b575f80fd5b820161016081850312156107f7575f80fd5b5f6101008284031215613a6e575f80fd5b50919050565b5f805f8060808587031215613a87575f80fd5b8435613a92816139a2565b93506020850135613aa2816139a2565b9250604085013591506060850135613ab9816139a2565b939692955090935050565b5f805f8060608587031215613ad7575f80fd5b843593506020850135613ae9816139a2565b925060408501356001600160401b0380821115613b04575f80fd5b818701915087601f830112613b17575f80fd5b813581811115613b25575f80fd5b886020828501011115613b36575f80fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715613bca57613bca613b93565b60405290565b60405161010081016001600160401b0381118282101715613bca57613bca613b93565b604080519081016001600160401b0381118282101715613bca57613bca613b93565b604051601f8201601f191681016001600160401b0381118282101715613c3d57613c3d613b93565b604052919050565b5f6001600160401b03821115613c5d57613c5d613b93565b50601f01601f191660200190565b5f82601f830112613c7a575f80fd5b8135613c8d613c8882613c45565b613c15565b818152846020838601011115613ca1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613cce575f80fd5b613cd6613ba7565b82358152613ce6602084016139b6565b6020820152613cf7604084016139b6565b604082015260608301356001600160401b03811115613d14575f80fd5b613d2036828601613c6b565b6060830152506080830135608082015260a083013560a0820152613d4660c084016139b6565b60c0820152613d5760e084016139b6565b60e0820152610100613d6a8185016139b6565b90820152610120838101359082015261014092830135928101929092525090565b5f6101008284031215613d9c575f80fd5b613da4613bd0565b823581526020830135613db6816139a2565b60208201526040830135613dc9816139a2565b6040820152613dda606084016139b6565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613e0960e084016139b6565b60e08201529392505050565b5f60208284031215613e25575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b5f5b83811015613ee4578181015183820152602001613ecc565b50505f910152565b5f8151808452613f03816020860160208601613eca565b601f01601f19169290920160200192915050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613f5f60808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613f86610120850183613eec565b915060c085015160e085015260e0850151613fab828601826001600160a01b03169052565b5090949350505050565b602081525f825160058110613fd857634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612abe6060840182613eec565b60408152825160408201525f602084015161401d60608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a0840181905261404e6101a0850183613eec565b9150608086015160c085015260a086015160e085015260c0860151610100614080818701836001600160a01b03169052565b60e0880151915061012061409e818801846001600160a01b03169052565b908801519150610140906140bc878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b81516001600160a01b031681526020808301519082015260408101610588565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e084015161416b60e08401826001600160a01b03169052565b50826101008301529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610588576105886141af565b5f82601f8301126141e5575f80fd5b81516141f3613c8882613c45565b818152846020838601011115614207575f80fd5b612abe826020830160208701613eca565b5f60208284031215614228575f80fd5b81516001600160401b038082111561423e575f80fd5b9083019060408286031215614251575f80fd5b614259613bf3565b825160058110614267575f80fd5b815260208301518281111561427a575f80fd5b614286878286016141d6565b60208301525095945050505050565b80516139c1816139a2565b5f604082840312156142b0575f80fd5b6142b8613bf3565b82516142c3816139a2565b81526020928301519281019290925250919050565b5f602082840312156142e8575f80fd5b81516001600160401b03808211156142fe575f80fd5b908301906101008286031215614312575f80fd5b61431a613bd0565b8251815261432a60208401614295565b602082015261433b60408401614295565b604082015261434c60608401614295565b60608201526080830151608082015260a08301518281111561436c575f80fd5b614378878286016141d6565b60a08301525060c083015160c082015261439460e08401614295565b60e082015295945050505050565b5f60e082840312156143b2575f80fd5b60405160e081018181106001600160401b03821117156143d4576143d4613b93565b6040528251815260208301516143e9816139a2565b602082015260408301516143fc816139a2565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161442f816139a2565b60c08201529392505050565b5f6020828403121561444b575f80fd5b81516001600160401b0380821115614461575f80fd5b908301906101608286031215614475575f80fd5b61447d613ba7565b61448683614295565b81526020830151602082015261449e60408401614295565b60408201526144af60608401614295565b60608201526080830151608082015260a0830151828111156144cf575f80fd5b6144db878286016141d6565b60a08301525060c083015160c08201526144f760e08401614295565b60e082015261010083810151908201526101209150614517828401614295565b9181019190915261014091820151918101919091529392505050565b805160ff811681146139c1575f80fd5b5f60608284031215614553575f80fd5b604051606081018181106001600160401b038211171561457557614575613b93565b6040528251815261458860208401614533565b602082015261459960408401614533565b60408201529392505050565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b80820180821115610588576105886141af565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b808410156146c8578451831682529385019360019390930192908501906146a6565b5060a0880151878203601f190160e089015294506146e68186613eec565b98975050505050505050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f90611fad90830184613eec565b634e487b7160e01b5f52601260045260245ffd5b5f8261474557614745614723565b500690565b5f6020828403121561475a575f80fd5b81516107f7816139a2565b60ff8281168282160390811115610588576105886141af565b600181815b808511156147b857815f190482111561479e5761479e6141af565b808516156147ab57918102915b93841c9390800290614783565b509250929050565b5f826147ce57506001610588565b816147da57505f610588565b81600181146147f057600281146147fa57614816565b6001915050610588565b60ff84111561480b5761480b6141af565b50506001821b610588565b5060208310610133831016604e8410600b8410161715614839575081810a610588565b614843838361477e565b805f1904821115614856576148566141af565b029392505050565b5f6107f783836147c0565b8082028115828204841417610588576105886141af565b5f8261488e5761488e614723565b500490565b5f602082840312156148a3575f80fd5b815180151581146107f7575f80fd5b5f82516148c3818460208701613eca565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6003b5030f10c94fcbdaa3022348ff0b82dbd4c0c71339e41ff59d0bdc92179d6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212203e4a4e9665f762862e4e9005bf846c8cd5a2bada60a5ecbfe8ddc343de35be0564736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", + Bin: "0x608060405234801561000f575f80fd5b506040516152c13803806152c183398101604081905261002e91610890565b61003a84848484610046565b505050506108f1565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f8115801561008f5750825b90505f826001600160401b031660011480156100aa5750303b155b9050811580156100b8575080155b156100d65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010457845460ff60401b1916680100000000000000001785555b61011089898989610161565b831561015657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610169610186565b6101778484848460126101d6565b61018081610202565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101d457604051631afcd79f60e31b815260040160405180910390fd5b565b6101de610186565b6101e985858561024b565b6101f161026b565b6101fb828261027b565b5050505050565b61020a610186565b7f3b5030f10c94fcbdaa3022348ff0b82dbd4c0c71339e41ff59d0bdc92179d60080546001600160a01b0319166001600160a01b0392909216919091179055565b610253610186565b61025d8382610407565b6102668261042d565b505050565b610273610186565b6101d461043e565b610283610186565b6001600160a01b0382166102de5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064015b60405180910390fd5b60128160ff16111561033d5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016102d5565b5f7f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e60090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d591906108da565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b61040f610186565b610417610468565b61041f610478565b6104298282610480565b5050565b610435610186565b61004381610604565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b610470610186565b6101d461063e565b6101d4610186565b610488610186565b6001600160a01b0382166105045760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016102d5565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610569573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058d91906108da565b116105e25760405162461bcd60e51b815260206004820152603260248201525f805160206152a1833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102d5565b81546001600160a01b0319166001600160a01b0382161782556101808361066d565b61060c610186565b6001600160a01b03811661063557604051631e4fbdf760e01b81525f60048201526024016102d5565b61004381610805565b610646610186565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610461565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156106d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f891906108da565b6002830154909150818411156107575760405162461bcd60e51b815260206004820152603160248201525f805160206152a183398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102d5565b8084116107cc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102d5565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b038116811461088b575f80fd5b919050565b5f805f80608085870312156108a3575f80fd5b6108ac85610875565b93506108ba60208601610875565b9250604085015191506108cf60608601610875565b905092959194509250565b5f602082840312156108ea575f80fd5b5051919050565b6149a3806108fe5f395ff3fe60806040526004361061011e575f3560e01c80638da5cb5b1161009d578063c8511ada11610062578063c8511ada146103d5578063c868efaa146104b5578063d2cc7a70146104d4578063efb5b95e14610507578063f2fde38b14610527575f80fd5b80638da5cb5b14610318578063909a6ac0146103545780639731429714610374578063b0b78b26146103a3578063be203094146103b6575f80fd5b80635eb99514116100e35780635eb995141461029f57806362e3901b146102be5780636e6eef8d146102de578063715018a6146102f15780638bf2fa9414610305575f80fd5b806310fe9ae8146101bf578063154d625a146102145780632b0d8f18146102415780634213cf78146102605780634511243e14610280575f80fd5b366101bb577f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b031633146101b95760405162461bcd60e51b815260206004820152602f60248201527f4e6174697665546f6b656e486f6d653a20696e76616c6964207265636569766560448201526e103830bcb0b136329039b2b73232b960891b60648201526084015b60405180910390fd5b005b5f80fd5b3480156101ca575f80fd5b507f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021f575f80fd5b5061023361022e3660046139c6565b610546565b60405190815260200161020b565b34801561024c575f80fd5b506101b961025b3660046139f4565b61058e565b34801561026b575f80fd5b505f805160206148ce83398151915254610233565b34801561028b575f80fd5b506101b961029a3660046139f4565b610687565b3480156102aa575f80fd5b506101b96102b9366004613a0f565b610776565b3480156102c9575f80fd5b506102335f805160206148ce83398151915281565b6101b96102ec366004613a26565b61078a565b3480156102fc575f80fd5b506101b96107b3565b6101b9610313366004613a5d565b6107c6565b348015610323575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101f7565b34801561035f575f80fd5b506102335f8051602061494e83398151915281565b34801561037f575f80fd5b5061039361038e3660046139f4565b6107de565b604051901515815260200161020b565b6101b96103b13660046139c6565b6107fe565b3480156103c1575f80fd5b506101b96103d0366004613a74565b61080d565b3480156103e0575f80fd5b5061047e6103ef3660046139c6565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061490e83398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161020b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b3480156104c0575f80fd5b506101b96104cf366004613ac4565b61091f565b3480156104df575f80fd5b507fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610233565b348015610512575f80fd5b506102335f805160206148ee83398151915281565b348015610532575f80fd5b506101b96105413660046139f4565b610adc565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f8051602061494e8339815191526105a4610b16565b6001600160a01b0382166105ca5760405162461bcd60e51b81526004016101b090613b45565b6105d48183610b1e565b156106375760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016101b0565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061494e83398151915261069d610b16565b6001600160a01b0382166106c35760405162461bcd60e51b81526004016101b090613b45565b6106cd8183610b1e565b61072b5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016101b0565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61077e610b16565b61078781610b3f565b50565b6107876107a25f805160206148ce8339815191525490565b30336107ad85613cbd565b34610cd7565b6107bb610f3a565b6107c45f610f95565b565b6107876107d836839003830183613d8b565b34611005565b5f5f8051602061494e8339815191526107f78184610b1e565b9392505050565b6108098282346111bf565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108515750825b90505f826001600160401b0316600114801561086c5750303b155b90508115801561087a575080155b156108985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108c257845460ff60401b1916600160401b1785555b6108ce898989896113af565b831561091457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6109276113ce565b5f5f8051602061494e83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b69190613e15565b1015610a1d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016101b0565b610a278133610b1e565b15610a8d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016101b0565b610acd858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061141892505050565b50610ad661180c565b50505050565b610ae4610f3a565b6001600160a01b038116610b0d57604051631e4fbdf760e01b81525f60048201526024016101b0565b61078781610f95565b6107c4610f3a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b5f8051602061494e83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610b93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb79190613e15565b600283015490915081841115610c295760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016101b0565b808411610c9e5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016101b0565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f8051602061492e8339815191528054600114610d065760405162461bcd60e51b81526004016101b090613e2c565b60028155610d1383611836565b60c08301516001600160a01b031615610d3e5760405162461bcd60e51b81526004016101b090613e70565b5f80610d5e855f0151866020015186886101000151896101200151611a1b565b915091505f604051806040016040528060026004811115610d8157610d81613eb6565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610e049190613f17565b60405160208183030381529060405281525090505f610ee46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b604051908082528060200260200182016040528015610eb6578160200160208202803683370190505b50815260200184604051602001610ecd9190613fb5565b604051602081830303815290604052815250611be0565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610f22929190613ff7565b60405180910390a35050600190925550505050505050565b33610f6c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107c45760405163118cdaa760e01b81523360048201526024016101b0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8051602061492e83398151915280546001146110345760405162461bcd60e51b81526004016101b090613e2c565b6002815561104183611cfb565b60e08301516001600160a01b03161561106c5760405162461bcd60e51b81526004016101b090613e70565b5f8061108a855f015186602001518688606001518960800151611a1b565b915091505f6040518060400160405280600160048111156110ad576110ad613eb6565b8152602001604051806040016040528089604001516001600160a01b03168152602001868152506040516020016110e491906140d9565b60405160208183030381529060405281525090505f61116c6040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5289876040516111aa9291906140f9565b60405180910390a35050600190925550505050565b5f8051602061492e83398151915280546001146111ee5760405162461bcd60e51b81526004016101b090613e2c565b60028082555f8581525f8051602061490e833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f805160206148ce833981519152916112855760405162461bcd60e51b81526004016101b09061417a565b5f8160200151116112e25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b60648201526084016101b0565b6112eb84611da4565b93505f808260200151861061131a5760208301515f925061130c90876141c3565b90508260200151955061132d565b85836020015161132a91906141c3565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156113a1576113a13382611dca565b505060019092555050505050565b6113b7611e88565b6113c5848484846012611ed1565b610ad681611ef6565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161141257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f805160206148ce83398151915290505f8280602001905181019061143e9190614218565b905060018151600481111561145557611455613eb6565b0361149d575f816020015180602001905181019061147391906142a0565b90505f61148587878460200151611f2c565b9050611494825f015182611dca565b50505050505050565b6002815160048111156114b2576114b2613eb6565b036115cb575f81602001518060200190518101906114d091906142d8565b90505f6114e287878460800151611f2c565b825190915087146115485760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016101b0565b856001600160a01b031682602001516001600160a01b0316146115c15760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b60648201526084016101b0565b6114948282611fb7565b6003815160048111156115e0576115e0613eb6565b036116b4575f81602001518060200190518101906115fe91906143a2565b90505f8061161688888560600151866080015161213d565b915091506116aa604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b0316815250836121e8565b5050505050505050565b6004815160048111156116c9576116c9613eb6565b036117c4575f81602001518060200190518101906116e7919061443b565b90505f806117008888856080015186610140015161213d565b915091506116aa8888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612373565b5f815160048111156117d8576117d8613eb6565b03611805575f81602001518060200190518101906117f69190614543565b9050611803868683612550565b505b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b60408101516001600160a01b03166118a35760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b60648201526084016101b0565b5f8160800151116118c65760405162461bcd60e51b81526004016101b0906145a5565b5f8160a00151116119255760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b60648201526084016101b0565b80608001518160a001511061198b5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b60648201526084016101b0565b60e08101516001600160a01b03166119f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b60648201526084016101b0565b610140810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f8581525f8051602061490e833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f805160206148ce8339815191529190611ab25760405162461bcd60e51b81526004016101b09061417a565b602081015115611b145760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b60648201526084016101b0565b611b1d87611da4565b96508415611b3357611b30863387612957565b94505b5f611b47826040015183606001518a612ab0565b90505f8111611b985760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e7400000060448201526064016101b0565b5f8a815260038401602090815260408083206001600160a01b038d16845290915281208054839290611bcb908490614628565b90915550909a95995094975050505050505050565b5f80611bea612ac6565b60408401516020015190915015611c8f576040830151516001600160a01b0316611c6c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016101b0565b604083015160208101519051611c8f916001600160a01b03909116908390612bb6565b604051630624488560e41b81526001600160a01b03821690636244885090611cbb90869060040161463b565b6020604051808303815f875af1158015611cd7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f79190613e15565b60408101516001600160a01b0316611d5f5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b60648201526084016101b0565b5f8160c0015111611d825760405162461bcd60e51b81526004016101b0906145a5565b60a0810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f805160206148ee83398151915280545f91906107f7906001600160a01b031684612c3d565b6040518181525f805160206148ee833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a28054604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015611e59575f80fd5b505af1158015611e6b573d5f803e3d5ffd5b50611e83925050506001600160a01b03841683612de2565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107c457604051631afcd79f60e31b815260040160405180910390fd5b611ed9611e88565b611ee4858585612e75565b611eec612e90565b6118058282612ea0565b611efe611e88565b5f805160206148ee83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b5f8381525f8051602061490e833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f805160206148ce83398151915290611fad81878787613007565b9695505050505050565b5f5f805160206148ee8339815191528054604051632e1a7d4d60e01b8152600481018590529192506001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015612009575f80fd5b505af115801561201b573d5f803e3d5ffd5b50508451602086015160408088015160a089015191515f965061204495509091906024016146f2565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c085015160608601519192505f9161208a91908690856130f5565b905080156120de5784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516120d191815260200190565b60405180910390a2611805565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08560405161211d91815260200190565b60405180910390a260e0850151611805906001600160a01b031685612de2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206148ce83398151915290826121c1828a8a8a613007565b90505f6121d783604001518460600151896131c5565b919a91995090975050505050505050565b5f8051602061492e83398151915280546001146122175760405162461bcd60e51b81526004016101b090613e2c565b6002815561222483611cfb565b5f61223c845f015185602001518587608001516131d2565b9050805f03612259576122538460e0015184611dca565b5061236b565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161229f91906140d9565b60405160208183030381529060405281525090505f61232b6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf0878560405161235f9291906140f9565b60405180910390a25050505b600190555050565b5f8051602061492e83398151915280546001146123a25760405162461bcd60e51b81526004016101b090613e2c565b600281556123af83611836565b5f6123c8845f01518560200151858761012001516131d2565b9050805f036123e5576123df8460c0015184611dca565b50612545565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016124779190613f17565b60405160208183030381529060405281525090505f6125056040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb308785604051612539929190613ff7565b60405180910390a25050505b600190555050505050565b5f805160206148ce833981519152836125b75760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b60648201526084016101b0565b8054840361261f5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b60648201526084016101b0565b6001600160a01b03831661268e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b60648201526084016101b0565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561270e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b60648201526084016101b0565b6012826040015160ff1611156127785760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016101b0565b6001810154602083015160ff908116600160a01b90920416146127ec5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b60648201526084016101b0565b5f8061280d8360010160149054906101000a900460ff168560400151613343565b915091505f6128208383875f01516131c5565b905081801561283a57508451612837908490614737565b15155b1561284d5761284a600182614628565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b9083886040015160405161294692919091825260ff16602082015260400190565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa15801561299d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c19190613e15565b90506129d86001600160a01b03861685308661338b565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a409190613e15565b9050818111612aa65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016101b0565b611fad82826141c3565b5f612abe84848460016133f2565b949350505050565b5f8051602061494e83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b44919061474a565b9050612b508282610b1e565b156105885760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016101b0565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c279190613e15565b9050610ad68484612c388585614628565b613419565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015612c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca79190613e15565b9050836001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612ce2575f80fd5b505af1158015612cf4573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f93506001600160a01b03881692506370a082319150602401602060405180830381865afa158015612d3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d619190613e15565b9050818111612dcf5760405162461bcd60e51b815260206004820152603460248201527f53616665577261707065644e6174697665546f6b656e4465706f7369743a2062604482015273185b185b98d9481b9bdd081a5b98dc99585cd95960621b60648201526084016101b0565b612dd982826141c3565b95945050505050565b80471015612e055760405163cd78605960e01b81523060048201526024016101b0565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e4e576040519150601f19603f3d011682016040523d82523d5f602084013e612e53565b606091505b5050905080611e8357604051630a12f52160e11b815260040160405180910390fd5b612e7d611e88565b612e8783826134a8565b611e83826134ca565b612e98611e88565b6107c46134db565b612ea8611e88565b6001600160a01b038216612efe5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064016101b0565b60128160ff161115612f5d5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016101b0565b5f5f805160206148ce83398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fd59190613e15565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b83515f906130275760405162461bcd60e51b81526004016101b09061417a565b6020850151156130855760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b60648201526084016101b0565b6130908484846134ef565b5f6130a486604001518760600151856131c5565b90505f8111612dd95760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e740000000060448201526064016101b0565b5f845a10156131465760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016101b0565b834710156131965760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016101b0565b826001600160a01b03163b5f036131ae57505f612abe565b5f805f84516020860188888bf19695505050505050565b5f612abe8484845f6133f2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206148ce833981519152918061325857505f8160200151115b15613267575f92505050612abe565b8385116132cb5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b60648201526084016101b0565b6132d584866141c3565b94505f6132eb8260400151836060015188612ab0565b9050805f036132ff575f9350505050612abe565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290613332908490614628565b909155509098975050505050505050565b5f8060ff8085169084161181816133665761335e8587614765565b60ff16613374565b6133708686614765565b60ff165b61337f90600a61485e565b96919550909350505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610ad69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506135dc565b5f8115158415150361340f576134088584614869565b9050612abe565b612dd98584614880565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261346a848261363d565b610ad6576040516001600160a01b0384811660248301525f604483015261349e91869182169063095ea7b3906064016133c0565b610ad684826135dc565b6134b0611e88565b6134b86136da565b6134c06136ea565b61080982826136f2565b6134d2611e88565b61078781613876565b5f5f8051602061492e83398151915261182f565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f805160206148ce83398151915290828110156135a65760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b60648201526084016101b0565b6135b083826141c3565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6135f06001600160a01b0384168361387e565b905080515f141580156136145750808060200190518101906136129190614893565b155b15611e8357604051635274afe760e01b81526001600160a01b03841660048201526024016101b0565b5f805f846001600160a01b03168460405161365891906148b2565b5f604051808303815f865af19150503d805f8114613691576040519150601f19603f3d011682016040523d82523d5f602084013e613696565b606091505b50915091508180156136c05750805115806136c05750808060200190518101906136c09190614893565b8015612dd95750505050506001600160a01b03163b151590565b6136e2611e88565b6107c461388b565b6107c4611e88565b6136fa611e88565b6001600160a01b0382166137765760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016101b0565b5f5f8051602061494e83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137ec9190613e15565b116138545760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016101b0565b81546001600160a01b0319166001600160a01b038216178255610ad683610b3f565b610ae4611e88565b60606107f783835f613893565b61180c611e88565b6060814710156138b85760405163cd78605960e01b81523060048201526024016101b0565b5f80856001600160a01b031684866040516138d391906148b2565b5f6040518083038185875af1925050503d805f811461390d576040519150601f19603f3d011682016040523d82523d5f602084013e613912565b606091505b5091509150611fad8683836060826139325761392d82613979565b6107f7565b815115801561394957506001600160a01b0384163b155b1561397257604051639996b31560e01b81526001600160a01b03851660048201526024016101b0565b50806107f7565b8051156139895780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610787575f80fd5b80356139c1816139a2565b919050565b5f80604083850312156139d7575f80fd5b8235915060208301356139e9816139a2565b809150509250929050565b5f60208284031215613a04575f80fd5b81356107f7816139a2565b5f60208284031215613a1f575f80fd5b5035919050565b5f60208284031215613a36575f80fd5b81356001600160401b03811115613a4b575f80fd5b820161016081850312156107f7575f80fd5b5f6101008284031215613a6e575f80fd5b50919050565b5f805f8060808587031215613a87575f80fd5b8435613a92816139a2565b93506020850135613aa2816139a2565b9250604085013591506060850135613ab9816139a2565b939692955090935050565b5f805f8060608587031215613ad7575f80fd5b843593506020850135613ae9816139a2565b925060408501356001600160401b0380821115613b04575f80fd5b818701915087601f830112613b17575f80fd5b813581811115613b25575f80fd5b886020828501011115613b36575f80fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715613bca57613bca613b93565b60405290565b60405161010081016001600160401b0381118282101715613bca57613bca613b93565b604080519081016001600160401b0381118282101715613bca57613bca613b93565b604051601f8201601f191681016001600160401b0381118282101715613c3d57613c3d613b93565b604052919050565b5f6001600160401b03821115613c5d57613c5d613b93565b50601f01601f191660200190565b5f82601f830112613c7a575f80fd5b8135613c8d613c8882613c45565b613c15565b818152846020838601011115613ca1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613cce575f80fd5b613cd6613ba7565b82358152613ce6602084016139b6565b6020820152613cf7604084016139b6565b604082015260608301356001600160401b03811115613d14575f80fd5b613d2036828601613c6b565b6060830152506080830135608082015260a083013560a0820152613d4660c084016139b6565b60c0820152613d5760e084016139b6565b60e0820152610100613d6a8185016139b6565b90820152610120838101359082015261014092830135928101929092525090565b5f6101008284031215613d9c575f80fd5b613da4613bd0565b823581526020830135613db6816139a2565b60208201526040830135613dc9816139a2565b6040820152613dda606084016139b6565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613e0960e084016139b6565b60e08201529392505050565b5f60208284031215613e25575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b5f5b83811015613ee4578181015183820152602001613ecc565b50505f910152565b5f8151808452613f03816020860160208601613eca565b601f01601f19169290920160200192915050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613f5f60808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613f86610120850183613eec565b915060c085015160e085015260e0850151613fab828601826001600160a01b03169052565b5090949350505050565b602081525f825160058110613fd857634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612abe6060840182613eec565b60408152825160408201525f602084015161401d60608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a0840181905261404e6101a0850183613eec565b9150608086015160c085015260a086015160e085015260c0860151610100614080818701836001600160a01b03169052565b60e0880151915061012061409e818801846001600160a01b03169052565b908801519150610140906140bc878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b81516001600160a01b031681526020808301519082015260408101610588565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e084015161416b60e08401826001600160a01b03169052565b50826101008301529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610588576105886141af565b5f82601f8301126141e5575f80fd5b81516141f3613c8882613c45565b818152846020838601011115614207575f80fd5b612abe826020830160208701613eca565b5f60208284031215614228575f80fd5b81516001600160401b038082111561423e575f80fd5b9083019060408286031215614251575f80fd5b614259613bf3565b825160058110614267575f80fd5b815260208301518281111561427a575f80fd5b614286878286016141d6565b60208301525095945050505050565b80516139c1816139a2565b5f604082840312156142b0575f80fd5b6142b8613bf3565b82516142c3816139a2565b81526020928301519281019290925250919050565b5f602082840312156142e8575f80fd5b81516001600160401b03808211156142fe575f80fd5b908301906101008286031215614312575f80fd5b61431a613bd0565b8251815261432a60208401614295565b602082015261433b60408401614295565b604082015261434c60608401614295565b60608201526080830151608082015260a08301518281111561436c575f80fd5b614378878286016141d6565b60a08301525060c083015160c082015261439460e08401614295565b60e082015295945050505050565b5f60e082840312156143b2575f80fd5b60405160e081018181106001600160401b03821117156143d4576143d4613b93565b6040528251815260208301516143e9816139a2565b602082015260408301516143fc816139a2565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161442f816139a2565b60c08201529392505050565b5f6020828403121561444b575f80fd5b81516001600160401b0380821115614461575f80fd5b908301906101608286031215614475575f80fd5b61447d613ba7565b61448683614295565b81526020830151602082015261449e60408401614295565b60408201526144af60608401614295565b60608201526080830151608082015260a0830151828111156144cf575f80fd5b6144db878286016141d6565b60a08301525060c083015160c08201526144f760e08401614295565b60e082015261010083810151908201526101209150614517828401614295565b9181019190915261014091820151918101919091529392505050565b805160ff811681146139c1575f80fd5b5f60608284031215614553575f80fd5b604051606081018181106001600160401b038211171561457557614575613b93565b6040528251815261458860208401614533565b602082015261459960408401614533565b60408201529392505050565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b80820180821115610588576105886141af565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b808410156146c8578451831682529385019360019390930192908501906146a6565b5060a0880151878203601f190160e089015294506146e68186613eec565b98975050505050505050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f90611fad90830184613eec565b634e487b7160e01b5f52601260045260245ffd5b5f8261474557614745614723565b500690565b5f6020828403121561475a575f80fd5b81516107f7816139a2565b60ff8281168282160390811115610588576105886141af565b600181815b808511156147b857815f190482111561479e5761479e6141af565b808516156147ab57918102915b93841c9390800290614783565b509250929050565b5f826147ce57506001610588565b816147da57505f610588565b81600181146147f057600281146147fa57614816565b6001915050610588565b60ff84111561480b5761480b6141af565b50506001821b610588565b5060208310610133831016604e8410600b8410161715614839575081810a610588565b614843838361477e565b805f1904821115614856576148566141af565b029392505050565b5f6107f783836147c0565b8082028115828204841417610588576105886141af565b5f8261488e5761488e614723565b500490565b5f602082840312156148a3575f80fd5b815180151581146107f7575f80fd5b5f82516148c3818460208701613eca565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6003b5030f10c94fcbdaa3022348ff0b82dbd4c0c71339e41ff59d0bdc92179d6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220ea0a0e226fbb749e1d4c289c6fd2e9df065bea3446e4cea0074b08c1923e56eb64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // NativeTokenHomeABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenHome/NativeTokenHomeUpgradeable/NativeTokenHomeUpgradeable.go b/abi-bindings/go/ictt/TokenHome/NativeTokenHomeUpgradeable/NativeTokenHomeUpgradeable.go index 4bc8a4e54..9558e7ca8 100644 --- a/abi-bindings/go/ictt/TokenHome/NativeTokenHomeUpgradeable/NativeTokenHomeUpgradeable.go +++ b/abi-bindings/go/ictt/TokenHome/NativeTokenHomeUpgradeable/NativeTokenHomeUpgradeable.go @@ -67,7 +67,7 @@ type SendTokensInput struct { // NativeTokenHomeUpgradeableMetaData contains all meta data concerning the NativeTokenHomeUpgradeable contract. var NativeTokenHomeUpgradeableMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialCollateralNeeded\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"RemoteRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensRouted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_HOME_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"addCollateral\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getRemoteTokenTransferrerSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateralNeeded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"multiplyOnRemote\",\"type\":\"bool\"}],\"internalType\":\"structRemoteTokenTransferrerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"remoteBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"remoteTokenTransferrerAddress\",\"type\":\"address\"}],\"name\":\"getTransferredBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrappedTokenAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051614af0380380614af083398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6149a38061014d5f395ff3fe60806040526004361061011e575f3560e01c80638da5cb5b1161009d578063c8511ada11610062578063c8511ada146103d5578063c868efaa146104b5578063d2cc7a70146104d4578063efb5b95e14610507578063f2fde38b14610527575f80fd5b80638da5cb5b14610318578063909a6ac0146103545780639731429714610374578063b0b78b26146103a3578063be203094146103b6575f80fd5b80635eb99514116100e35780635eb995141461029f57806362e3901b146102be5780636e6eef8d146102de578063715018a6146102f15780638bf2fa9414610305575f80fd5b806310fe9ae8146101bf578063154d625a146102145780632b0d8f18146102415780634213cf78146102605780634511243e14610280575f80fd5b366101bb577f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b031633146101b95760405162461bcd60e51b815260206004820152602f60248201527f4e6174697665546f6b656e486f6d653a20696e76616c6964207265636569766560448201526e103830bcb0b136329039b2b73232b960891b60648201526084015b60405180910390fd5b005b5f80fd5b3480156101ca575f80fd5b507f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021f575f80fd5b5061023361022e3660046139c6565b610546565b60405190815260200161020b565b34801561024c575f80fd5b506101b961025b3660046139f4565b61058e565b34801561026b575f80fd5b505f805160206148ce83398151915254610233565b34801561028b575f80fd5b506101b961029a3660046139f4565b610687565b3480156102aa575f80fd5b506101b96102b9366004613a0f565b610776565b3480156102c9575f80fd5b506102335f805160206148ce83398151915281565b6101b96102ec366004613a26565b61078a565b3480156102fc575f80fd5b506101b96107b3565b6101b9610313366004613a5d565b6107c6565b348015610323575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101f7565b34801561035f575f80fd5b506102335f8051602061494e83398151915281565b34801561037f575f80fd5b5061039361038e3660046139f4565b6107de565b604051901515815260200161020b565b6101b96103b13660046139c6565b6107fe565b3480156103c1575f80fd5b506101b96103d0366004613a74565b61080d565b3480156103e0575f80fd5b5061047e6103ef3660046139c6565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061490e83398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161020b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b3480156104c0575f80fd5b506101b96104cf366004613ac4565b61091f565b3480156104df575f80fd5b507fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610233565b348015610512575f80fd5b506102335f805160206148ee83398151915281565b348015610532575f80fd5b506101b96105413660046139f4565b610adc565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f8051602061494e8339815191526105a4610b16565b6001600160a01b0382166105ca5760405162461bcd60e51b81526004016101b090613b45565b6105d48183610b1e565b156106375760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016101b0565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061494e83398151915261069d610b16565b6001600160a01b0382166106c35760405162461bcd60e51b81526004016101b090613b45565b6106cd8183610b1e565b61072b5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016101b0565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61077e610b16565b61078781610b3f565b50565b6107876107a25f805160206148ce8339815191525490565b30336107ad85613cbd565b34610cd7565b6107bb610f3a565b6107c45f610f95565b565b6107876107d836839003830183613d8b565b34611005565b5f5f8051602061494e8339815191526107f78184610b1e565b9392505050565b6108098282346111bf565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108515750825b90505f826001600160401b0316600114801561086c5750303b155b90508115801561087a575080155b156108985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108c257845460ff60401b1916600160401b1785555b6108ce898989896113af565b831561091457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6109276113ce565b5f5f8051602061494e83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b69190613e15565b1015610a1d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016101b0565b610a278133610b1e565b15610a8d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016101b0565b610acd858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061141892505050565b50610ad661180c565b50505050565b610ae4610f3a565b6001600160a01b038116610b0d57604051631e4fbdf760e01b81525f60048201526024016101b0565b61078781610f95565b6107c4610f3a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b5f8051602061494e83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610b93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb79190613e15565b600283015490915081841115610c295760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016101b0565b808411610c9e5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016101b0565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f8051602061492e8339815191528054600114610d065760405162461bcd60e51b81526004016101b090613e2c565b60028155610d1383611836565b60c08301516001600160a01b031615610d3e5760405162461bcd60e51b81526004016101b090613e70565b5f80610d5e855f0151866020015186886101000151896101200151611a1b565b915091505f604051806040016040528060026004811115610d8157610d81613eb6565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610e049190613f17565b60405160208183030381529060405281525090505f610ee46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b604051908082528060200260200182016040528015610eb6578160200160208202803683370190505b50815260200184604051602001610ecd9190613fb5565b604051602081830303815290604052815250611be0565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610f22929190613ff7565b60405180910390a35050600190925550505050505050565b33610f6c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107c45760405163118cdaa760e01b81523360048201526024016101b0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8051602061492e83398151915280546001146110345760405162461bcd60e51b81526004016101b090613e2c565b6002815561104183611cfb565b60e08301516001600160a01b03161561106c5760405162461bcd60e51b81526004016101b090613e70565b5f8061108a855f015186602001518688606001518960800151611a1b565b915091505f6040518060400160405280600160048111156110ad576110ad613eb6565b8152602001604051806040016040528089604001516001600160a01b03168152602001868152506040516020016110e491906140d9565b60405160208183030381529060405281525090505f61116c6040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5289876040516111aa9291906140f9565b60405180910390a35050600190925550505050565b5f8051602061492e83398151915280546001146111ee5760405162461bcd60e51b81526004016101b090613e2c565b60028082555f8581525f8051602061490e833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f805160206148ce833981519152916112855760405162461bcd60e51b81526004016101b09061417a565b5f8160200151116112e25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b60648201526084016101b0565b6112eb84611da4565b93505f808260200151861061131a5760208301515f925061130c90876141c3565b90508260200151955061132d565b85836020015161132a91906141c3565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156113a1576113a13382611dca565b505060019092555050505050565b6113b7611e88565b6113c5848484846012611ed1565b610ad681611ef6565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161141257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f805160206148ce83398151915290505f8280602001905181019061143e9190614218565b905060018151600481111561145557611455613eb6565b0361149d575f816020015180602001905181019061147391906142a0565b90505f61148587878460200151611f2c565b9050611494825f015182611dca565b50505050505050565b6002815160048111156114b2576114b2613eb6565b036115cb575f81602001518060200190518101906114d091906142d8565b90505f6114e287878460800151611f2c565b825190915087146115485760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016101b0565b856001600160a01b031682602001516001600160a01b0316146115c15760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b60648201526084016101b0565b6114948282611fb7565b6003815160048111156115e0576115e0613eb6565b036116b4575f81602001518060200190518101906115fe91906143a2565b90505f8061161688888560600151866080015161213d565b915091506116aa604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b0316815250836121e8565b5050505050505050565b6004815160048111156116c9576116c9613eb6565b036117c4575f81602001518060200190518101906116e7919061443b565b90505f806117008888856080015186610140015161213d565b915091506116aa8888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612373565b5f815160048111156117d8576117d8613eb6565b03611805575f81602001518060200190518101906117f69190614543565b9050611803868683612550565b505b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b60408101516001600160a01b03166118a35760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b60648201526084016101b0565b5f8160800151116118c65760405162461bcd60e51b81526004016101b0906145a5565b5f8160a00151116119255760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b60648201526084016101b0565b80608001518160a001511061198b5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b60648201526084016101b0565b60e08101516001600160a01b03166119f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b60648201526084016101b0565b610140810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f8581525f8051602061490e833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f805160206148ce8339815191529190611ab25760405162461bcd60e51b81526004016101b09061417a565b602081015115611b145760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b60648201526084016101b0565b611b1d87611da4565b96508415611b3357611b30863387612957565b94505b5f611b47826040015183606001518a612ab0565b90505f8111611b985760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e7400000060448201526064016101b0565b5f8a815260038401602090815260408083206001600160a01b038d16845290915281208054839290611bcb908490614628565b90915550909a95995094975050505050505050565b5f80611bea612ac6565b60408401516020015190915015611c8f576040830151516001600160a01b0316611c6c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016101b0565b604083015160208101519051611c8f916001600160a01b03909116908390612bb6565b604051630624488560e41b81526001600160a01b03821690636244885090611cbb90869060040161463b565b6020604051808303815f875af1158015611cd7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f79190613e15565b60408101516001600160a01b0316611d5f5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b60648201526084016101b0565b5f8160c0015111611d825760405162461bcd60e51b81526004016101b0906145a5565b60a0810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f805160206148ee83398151915280545f91906107f7906001600160a01b031684612c3d565b6040518181525f805160206148ee833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a28054604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015611e59575f80fd5b505af1158015611e6b573d5f803e3d5ffd5b50611e83925050506001600160a01b03841683612de2565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107c457604051631afcd79f60e31b815260040160405180910390fd5b611ed9611e88565b611ee4858585612e75565b611eec612e90565b6118058282612ea0565b611efe611e88565b5f805160206148ee83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b5f8381525f8051602061490e833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f805160206148ce83398151915290611fad81878787613007565b9695505050505050565b5f5f805160206148ee8339815191528054604051632e1a7d4d60e01b8152600481018590529192506001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015612009575f80fd5b505af115801561201b573d5f803e3d5ffd5b50508451602086015160408088015160a089015191515f965061204495509091906024016146f2565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c085015160608601519192505f9161208a91908690856130f5565b905080156120de5784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516120d191815260200190565b60405180910390a2611805565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08560405161211d91815260200190565b60405180910390a260e0850151611805906001600160a01b031685612de2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206148ce83398151915290826121c1828a8a8a613007565b90505f6121d783604001518460600151896131c5565b919a91995090975050505050505050565b5f8051602061492e83398151915280546001146122175760405162461bcd60e51b81526004016101b090613e2c565b6002815561222483611cfb565b5f61223c845f015185602001518587608001516131d2565b9050805f03612259576122538460e0015184611dca565b5061236b565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161229f91906140d9565b60405160208183030381529060405281525090505f61232b6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf0878560405161235f9291906140f9565b60405180910390a25050505b600190555050565b5f8051602061492e83398151915280546001146123a25760405162461bcd60e51b81526004016101b090613e2c565b600281556123af83611836565b5f6123c8845f01518560200151858761012001516131d2565b9050805f036123e5576123df8460c0015184611dca565b50612545565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016124779190613f17565b60405160208183030381529060405281525090505f6125056040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb308785604051612539929190613ff7565b60405180910390a25050505b600190555050505050565b5f805160206148ce833981519152836125b75760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b60648201526084016101b0565b8054840361261f5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b60648201526084016101b0565b6001600160a01b03831661268e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b60648201526084016101b0565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561270e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b60648201526084016101b0565b6012826040015160ff1611156127785760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016101b0565b6001810154602083015160ff908116600160a01b90920416146127ec5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b60648201526084016101b0565b5f8061280d8360010160149054906101000a900460ff168560400151613343565b915091505f6128208383875f01516131c5565b905081801561283a57508451612837908490614737565b15155b1561284d5761284a600182614628565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b9083886040015160405161294692919091825260ff16602082015260400190565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa15801561299d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c19190613e15565b90506129d86001600160a01b03861685308661338b565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a409190613e15565b9050818111612aa65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016101b0565b611fad82826141c3565b5f612abe84848460016133f2565b949350505050565b5f8051602061494e83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b44919061474a565b9050612b508282610b1e565b156105885760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016101b0565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c279190613e15565b9050610ad68484612c388585614628565b613419565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015612c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca79190613e15565b9050836001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612ce2575f80fd5b505af1158015612cf4573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f93506001600160a01b03881692506370a082319150602401602060405180830381865afa158015612d3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d619190613e15565b9050818111612dcf5760405162461bcd60e51b815260206004820152603460248201527f53616665577261707065644e6174697665546f6b656e4465706f7369743a2062604482015273185b185b98d9481b9bdd081a5b98dc99585cd95960621b60648201526084016101b0565b612dd982826141c3565b95945050505050565b80471015612e055760405163cd78605960e01b81523060048201526024016101b0565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e4e576040519150601f19603f3d011682016040523d82523d5f602084013e612e53565b606091505b5050905080611e8357604051630a12f52160e11b815260040160405180910390fd5b612e7d611e88565b612e8783826134a8565b611e83826134ca565b612e98611e88565b6107c46134db565b612ea8611e88565b6001600160a01b038216612efe5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064016101b0565b60128160ff161115612f5d5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016101b0565b5f5f805160206148ce83398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fd59190613e15565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b83515f906130275760405162461bcd60e51b81526004016101b09061417a565b6020850151156130855760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b60648201526084016101b0565b6130908484846134ef565b5f6130a486604001518760600151856131c5565b90505f8111612dd95760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e740000000060448201526064016101b0565b5f845a10156131465760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016101b0565b834710156131965760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016101b0565b826001600160a01b03163b5f036131ae57505f612abe565b5f805f84516020860188888bf19695505050505050565b5f612abe8484845f6133f2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206148ce833981519152918061325857505f8160200151115b15613267575f92505050612abe565b8385116132cb5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b60648201526084016101b0565b6132d584866141c3565b94505f6132eb8260400151836060015188612ab0565b9050805f036132ff575f9350505050612abe565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290613332908490614628565b909155509098975050505050505050565b5f8060ff8085169084161181816133665761335e8587614765565b60ff16613374565b6133708686614765565b60ff165b61337f90600a61485e565b96919550909350505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610ad69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506135dc565b5f8115158415150361340f576134088584614869565b9050612abe565b612dd98584614880565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261346a848261363d565b610ad6576040516001600160a01b0384811660248301525f604483015261349e91869182169063095ea7b3906064016133c0565b610ad684826135dc565b6134b0611e88565b6134b86136da565b6134c06136ea565b61080982826136f2565b6134d2611e88565b61078781613876565b5f5f8051602061492e83398151915261182f565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f805160206148ce83398151915290828110156135a65760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b60648201526084016101b0565b6135b083826141c3565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6135f06001600160a01b0384168361387e565b905080515f141580156136145750808060200190518101906136129190614893565b155b15611e8357604051635274afe760e01b81526001600160a01b03841660048201526024016101b0565b5f805f846001600160a01b03168460405161365891906148b2565b5f604051808303815f865af19150503d805f8114613691576040519150601f19603f3d011682016040523d82523d5f602084013e613696565b606091505b50915091508180156136c05750805115806136c05750808060200190518101906136c09190614893565b8015612dd95750505050506001600160a01b03163b151590565b6136e2611e88565b6107c461388b565b6107c4611e88565b6136fa611e88565b6001600160a01b0382166137765760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016101b0565b5f5f8051602061494e83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137ec9190613e15565b116138545760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016101b0565b81546001600160a01b0319166001600160a01b038216178255610ad683610b3f565b610ae4611e88565b60606107f783835f613893565b61180c611e88565b6060814710156138b85760405163cd78605960e01b81523060048201526024016101b0565b5f80856001600160a01b031684866040516138d391906148b2565b5f6040518083038185875af1925050503d805f811461390d576040519150601f19603f3d011682016040523d82523d5f602084013e613912565b606091505b5091509150611fad8683836060826139325761392d82613979565b6107f7565b815115801561394957506001600160a01b0384163b155b1561397257604051639996b31560e01b81526001600160a01b03851660048201526024016101b0565b50806107f7565b8051156139895780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610787575f80fd5b80356139c1816139a2565b919050565b5f80604083850312156139d7575f80fd5b8235915060208301356139e9816139a2565b809150509250929050565b5f60208284031215613a04575f80fd5b81356107f7816139a2565b5f60208284031215613a1f575f80fd5b5035919050565b5f60208284031215613a36575f80fd5b81356001600160401b03811115613a4b575f80fd5b820161016081850312156107f7575f80fd5b5f6101008284031215613a6e575f80fd5b50919050565b5f805f8060808587031215613a87575f80fd5b8435613a92816139a2565b93506020850135613aa2816139a2565b9250604085013591506060850135613ab9816139a2565b939692955090935050565b5f805f8060608587031215613ad7575f80fd5b843593506020850135613ae9816139a2565b925060408501356001600160401b0380821115613b04575f80fd5b818701915087601f830112613b17575f80fd5b813581811115613b25575f80fd5b886020828501011115613b36575f80fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715613bca57613bca613b93565b60405290565b60405161010081016001600160401b0381118282101715613bca57613bca613b93565b604080519081016001600160401b0381118282101715613bca57613bca613b93565b604051601f8201601f191681016001600160401b0381118282101715613c3d57613c3d613b93565b604052919050565b5f6001600160401b03821115613c5d57613c5d613b93565b50601f01601f191660200190565b5f82601f830112613c7a575f80fd5b8135613c8d613c8882613c45565b613c15565b818152846020838601011115613ca1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613cce575f80fd5b613cd6613ba7565b82358152613ce6602084016139b6565b6020820152613cf7604084016139b6565b604082015260608301356001600160401b03811115613d14575f80fd5b613d2036828601613c6b565b6060830152506080830135608082015260a083013560a0820152613d4660c084016139b6565b60c0820152613d5760e084016139b6565b60e0820152610100613d6a8185016139b6565b90820152610120838101359082015261014092830135928101929092525090565b5f6101008284031215613d9c575f80fd5b613da4613bd0565b823581526020830135613db6816139a2565b60208201526040830135613dc9816139a2565b6040820152613dda606084016139b6565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613e0960e084016139b6565b60e08201529392505050565b5f60208284031215613e25575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b5f5b83811015613ee4578181015183820152602001613ecc565b50505f910152565b5f8151808452613f03816020860160208601613eca565b601f01601f19169290920160200192915050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613f5f60808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613f86610120850183613eec565b915060c085015160e085015260e0850151613fab828601826001600160a01b03169052565b5090949350505050565b602081525f825160058110613fd857634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612abe6060840182613eec565b60408152825160408201525f602084015161401d60608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a0840181905261404e6101a0850183613eec565b9150608086015160c085015260a086015160e085015260c0860151610100614080818701836001600160a01b03169052565b60e0880151915061012061409e818801846001600160a01b03169052565b908801519150610140906140bc878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b81516001600160a01b031681526020808301519082015260408101610588565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e084015161416b60e08401826001600160a01b03169052565b50826101008301529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610588576105886141af565b5f82601f8301126141e5575f80fd5b81516141f3613c8882613c45565b818152846020838601011115614207575f80fd5b612abe826020830160208701613eca565b5f60208284031215614228575f80fd5b81516001600160401b038082111561423e575f80fd5b9083019060408286031215614251575f80fd5b614259613bf3565b825160058110614267575f80fd5b815260208301518281111561427a575f80fd5b614286878286016141d6565b60208301525095945050505050565b80516139c1816139a2565b5f604082840312156142b0575f80fd5b6142b8613bf3565b82516142c3816139a2565b81526020928301519281019290925250919050565b5f602082840312156142e8575f80fd5b81516001600160401b03808211156142fe575f80fd5b908301906101008286031215614312575f80fd5b61431a613bd0565b8251815261432a60208401614295565b602082015261433b60408401614295565b604082015261434c60608401614295565b60608201526080830151608082015260a08301518281111561436c575f80fd5b614378878286016141d6565b60a08301525060c083015160c082015261439460e08401614295565b60e082015295945050505050565b5f60e082840312156143b2575f80fd5b60405160e081018181106001600160401b03821117156143d4576143d4613b93565b6040528251815260208301516143e9816139a2565b602082015260408301516143fc816139a2565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161442f816139a2565b60c08201529392505050565b5f6020828403121561444b575f80fd5b81516001600160401b0380821115614461575f80fd5b908301906101608286031215614475575f80fd5b61447d613ba7565b61448683614295565b81526020830151602082015261449e60408401614295565b60408201526144af60608401614295565b60608201526080830151608082015260a0830151828111156144cf575f80fd5b6144db878286016141d6565b60a08301525060c083015160c08201526144f760e08401614295565b60e082015261010083810151908201526101209150614517828401614295565b9181019190915261014091820151918101919091529392505050565b805160ff811681146139c1575f80fd5b5f60608284031215614553575f80fd5b604051606081018181106001600160401b038211171561457557614575613b93565b6040528251815261458860208401614533565b602082015261459960408401614533565b60408201529392505050565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b80820180821115610588576105886141af565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b808410156146c8578451831682529385019360019390930192908501906146a6565b5060a0880151878203601f190160e089015294506146e68186613eec565b98975050505050505050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f90611fad90830184613eec565b634e487b7160e01b5f52601260045260245ffd5b5f8261474557614745614723565b500690565b5f6020828403121561475a575f80fd5b81516107f7816139a2565b60ff8281168282160390811115610588576105886141af565b600181815b808511156147b857815f190482111561479e5761479e6141af565b808516156147ab57918102915b93841c9390800290614783565b509250929050565b5f826147ce57506001610588565b816147da57505f610588565b81600181146147f057600281146147fa57614816565b6001915050610588565b60ff84111561480b5761480b6141af565b50506001821b610588565b5060208310610133831016604e8410600b8410161715614839575081810a610588565b614843838361477e565b805f1904821115614856576148566141af565b029392505050565b5f6107f783836147c0565b8082028115828204841417610588576105886141af565b5f8261488e5761488e614723565b500490565b5f602082840312156148a3575f80fd5b815180151581146107f7575f80fd5b5f82516148c3818460208701613eca565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6003b5030f10c94fcbdaa3022348ff0b82dbd4c0c71339e41ff59d0bdc92179d6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a264697066735822122061a7fa94283412ed4e28f075012533d117760b25deacdb243938d2ca5bd7e21964736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051614af0380380614af083398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6149a38061014d5f395ff3fe60806040526004361061011e575f3560e01c80638da5cb5b1161009d578063c8511ada11610062578063c8511ada146103d5578063c868efaa146104b5578063d2cc7a70146104d4578063efb5b95e14610507578063f2fde38b14610527575f80fd5b80638da5cb5b14610318578063909a6ac0146103545780639731429714610374578063b0b78b26146103a3578063be203094146103b6575f80fd5b80635eb99514116100e35780635eb995141461029f57806362e3901b146102be5780636e6eef8d146102de578063715018a6146102f15780638bf2fa9414610305575f80fd5b806310fe9ae8146101bf578063154d625a146102145780632b0d8f18146102415780634213cf78146102605780634511243e14610280575f80fd5b366101bb577f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b031633146101b95760405162461bcd60e51b815260206004820152602f60248201527f4e6174697665546f6b656e486f6d653a20696e76616c6964207265636569766560448201526e103830bcb0b136329039b2b73232b960891b60648201526084015b60405180910390fd5b005b5f80fd5b3480156101ca575f80fd5b507f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e601546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021f575f80fd5b5061023361022e3660046139c6565b610546565b60405190815260200161020b565b34801561024c575f80fd5b506101b961025b3660046139f4565b61058e565b34801561026b575f80fd5b505f805160206148ce83398151915254610233565b34801561028b575f80fd5b506101b961029a3660046139f4565b610687565b3480156102aa575f80fd5b506101b96102b9366004613a0f565b610776565b3480156102c9575f80fd5b506102335f805160206148ce83398151915281565b6101b96102ec366004613a26565b61078a565b3480156102fc575f80fd5b506101b96107b3565b6101b9610313366004613a5d565b6107c6565b348015610323575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101f7565b34801561035f575f80fd5b506102335f8051602061494e83398151915281565b34801561037f575f80fd5b5061039361038e3660046139f4565b6107de565b604051901515815260200161020b565b6101b96103b13660046139c6565b6107fe565b3480156103c1575f80fd5b506101b96103d0366004613a74565b61080d565b3480156103e0575f80fd5b5061047e6103ef3660046139c6565b60408051608080820183525f808352602080840182905283850182905260609384018290529581525f8051602061490e83398151915286528381206001600160a01b039590951681529385529282902082519384018352805460ff9081161515855260018201549585019590955260028101549284019290925260039091015490921615159181019190915290565b60405161020b9190815115158152602080830151908201526040808301519082015260609182015115159181019190915260800190565b3480156104c0575f80fd5b506101b96104cf366004613ac4565b61091f565b3480156104df575f80fd5b507fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0254610233565b348015610512575f80fd5b506102335f805160206148ee83398151915281565b348015610532575f80fd5b506101b96105413660046139f4565b610adc565b5f8281527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03851684529091529020545b92915050565b5f8051602061494e8339815191526105a4610b16565b6001600160a01b0382166105ca5760405162461bcd60e51b81526004016101b090613b45565b6105d48183610b1e565b156106375760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016101b0565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f8051602061494e83398151915261069d610b16565b6001600160a01b0382166106c35760405162461bcd60e51b81526004016101b090613b45565b6106cd8183610b1e565b61072b5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016101b0565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b61077e610b16565b61078781610b3f565b50565b6107876107a25f805160206148ce8339815191525490565b30336107ad85613cbd565b34610cd7565b6107bb610f3a565b6107c45f610f95565b565b6107876107d836839003830183613d8b565b34611005565b5f5f8051602061494e8339815191526107f78184610b1e565b9392505050565b6108098282346111bf565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108515750825b90505f826001600160401b0316600114801561086c5750303b155b90508115801561087a575080155b156108985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108c257845460ff60401b1916600160401b1785555b6108ce898989896113af565b831561091457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6109276113ce565b5f5f8051602061494e83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b69190613e15565b1015610a1d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016101b0565b610a278133610b1e565b15610a8d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016101b0565b610acd858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061141892505050565b50610ad661180c565b50505050565b610ae4610f3a565b6001600160a01b038116610b0d57604051631e4fbdf760e01b81525f60048201526024016101b0565b61078781610f95565b6107c4610f3a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b5f8051602061494e83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610b93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb79190613e15565b600283015490915081841115610c295760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016101b0565b808411610c9e5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016101b0565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f8051602061492e8339815191528054600114610d065760405162461bcd60e51b81526004016101b090613e2c565b60028155610d1383611836565b60c08301516001600160a01b031615610d3e5760405162461bcd60e51b81526004016101b090613e70565b5f80610d5e855f0151866020015186886101000151896101200151611a1b565b915091505f604051806040016040528060026004811115610d8157610d81613eb6565b81526020016040518061010001604052808c81526020018b6001600160a01b031681526020018a6001600160a01b0316815260200189604001516001600160a01b03168152602001868152602001896060015181526020018960a0015181526020018960e001516001600160a01b0316815250604051602001610e049190613f17565b60405160208183030381529060405281525090505f610ee46040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b61010001516001600160a01b03168152602001878152508152602001896080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b604051908082528060200260200182016040528015610eb6578160200160208202803683370190505b50815260200184604051602001610ecd9190613fb5565b604051602081830303815290604052815250611be0565b9050876001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168987604051610f22929190613ff7565b60405180910390a35050600190925550505050505050565b33610f6c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107c45760405163118cdaa760e01b81523360048201526024016101b0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8051602061492e83398151915280546001146110345760405162461bcd60e51b81526004016101b090613e2c565b6002815561104183611cfb565b60e08301516001600160a01b03161561106c5760405162461bcd60e51b81526004016101b090613e70565b5f8061108a855f015186602001518688606001518960800151611a1b565b915091505f6040518060400160405280600160048111156110ad576110ad613eb6565b8152602001604051806040016040528089604001516001600160a01b03168152602001868152506040516020016110e491906140d9565b60405160208183030381529060405281525090505f61116c6040518060c00160405280895f0151815260200189602001516001600160a01b0316815260200160405180604001604052808b606001516001600160a01b031681526020018781525081526020018960c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5289876040516111aa9291906140f9565b60405180910390a35050600190925550505050565b5f8051602061492e83398151915280546001146111ee5760405162461bcd60e51b81526004016101b090613e2c565b60028082555f8581525f8051602061490e833981519152602090815260408083206001600160a01b03881684528252918290208251608081018452815460ff9081161515808352600184015494830194909452948201549381019390935260030154909216151560608201525f805160206148ce833981519152916112855760405162461bcd60e51b81526004016101b09061417a565b5f8160200151116112e25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20636f6c6c61746572616c206e656564656044820152601960fa1b60648201526084016101b0565b6112eb84611da4565b93505f808260200151861061131a5760208301515f925061130c90876141c3565b90508260200151955061132d565b85836020015161132a91906141c3565b91505b5f88815260028501602090815260408083206001600160a01b038b168085529083529281902060010185905580518981529182018590528a917f6769a5f9bfc8b6e0db839ab981cbf9239274ae72d2d035081a9157d43bd33cb6910160405180910390a380156113a1576113a13382611dca565b505060019092555050505050565b6113b7611e88565b6113c5848484846012611ed1565b610ad681611ef6565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161141257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5f805160206148ce83398151915290505f8280602001905181019061143e9190614218565b905060018151600481111561145557611455613eb6565b0361149d575f816020015180602001905181019061147391906142a0565b90505f61148587878460200151611f2c565b9050611494825f015182611dca565b50505050505050565b6002815160048111156114b2576114b2613eb6565b036115cb575f81602001518060200190518101906114d091906142d8565b90505f6114e287878460800151611f2c565b825190915087146115485760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a206d69736d61746368656420736f7572636520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016101b0565b856001600160a01b031682602001516001600160a01b0316146115c15760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e486f6d653a206d69736d617463686564206f726967696e2073656e60448201526a646572206164647265737360a81b60648201526084016101b0565b6114948282611fb7565b6003815160048111156115e0576115e0613eb6565b036116b4575f81602001518060200190518101906115fe91906143a2565b90505f8061161688888560600151866080015161213d565b915091506116aa604051806101000160405280855f0151815260200185602001516001600160a01b0316815260200185604001516001600160a01b03168152602001876001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018381526020015f81526020018560a0015181526020018560c001516001600160a01b0316815250836121e8565b5050505050505050565b6004815160048111156116c9576116c9613eb6565b036117c4575f81602001518060200190518101906116e7919061443b565b90505f806117008888856080015186610140015161213d565b915091506116aa8888855f01516040518061016001604052808860200151815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860a00151815260200188610100015181526020018860c0015181526020018861012001516001600160a01b031681526020018860e001516001600160a01b031681526020018a6001015f9054906101000a90046001600160a01b03166001600160a01b031681526020018681526020015f81525086612373565b5f815160048111156117d8576117d8613eb6565b03611805575f81602001518060200190518101906117f69190614543565b9050611803868683612550565b505b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b60408101516001600160a01b03166118a35760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420636f6e7472616044820152696374206164647265737360b01b60648201526084016101b0565b5f8160800151116118c65760405162461bcd60e51b81526004016101b0906145a5565b5f8160a00151116119255760405162461bcd60e51b815260206004820152602360248201527f546f6b656e486f6d653a207a65726f20726563697069656e7420676173206c696044820152621b5a5d60ea1b60648201526084016101b0565b80608001518160a001511061198b5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420726563697069656e7420676173604482015265081b1a5b5a5d60d21b60648201526084016101b0565b60e08101516001600160a01b03166119f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e486f6d653a207a65726f2066616c6c6261636b20726563697069656044820152696e74206164647265737360b01b60648201526084016101b0565b610140810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f8581525f8051602061490e833981519152602090815260408083206001600160a01b038816845282528083208151608081018352815460ff90811615158083526001840154958301959095526002830154938201939093526003909101549091161515606082015282915f805160206148ce8339815191529190611ab25760405162461bcd60e51b81526004016101b09061417a565b602081015115611b145760405162461bcd60e51b815260206004820152602760248201527f546f6b656e486f6d653a20636f6c6c61746572616c206e656564656420666f726044820152662072656d6f746560c81b60648201526084016101b0565b611b1d87611da4565b96508415611b3357611b30863387612957565b94505b5f611b47826040015183606001518a612ab0565b90505f8111611b985760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f207363616c656420616d6f756e7400000060448201526064016101b0565b5f8a815260038401602090815260408083206001600160a01b038d16845290915281208054839290611bcb908490614628565b90915550909a95995094975050505050505050565b5f80611bea612ac6565b60408401516020015190915015611c8f576040830151516001600160a01b0316611c6c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016101b0565b604083015160208101519051611c8f916001600160a01b03909116908390612bb6565b604051630624488560e41b81526001600160a01b03821690636244885090611cbb90869060040161463b565b6020604051808303815f875af1158015611cd7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f79190613e15565b60408101516001600160a01b0316611d5f5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e486f6d653a207a65726f20726563697069656e74206164647265736044820152607360f81b60648201526084016101b0565b5f8160c0015111611d825760405162461bcd60e51b81526004016101b0906145a5565b60a0810151156107875760405162461bcd60e51b81526004016101b0906145e7565b5f805160206148ee83398151915280545f91906107f7906001600160a01b031684612c3d565b6040518181525f805160206148ee833981519152906001600160a01b038416907f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b9060200160405180910390a28054604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015611e59575f80fd5b505af1158015611e6b573d5f803e3d5ffd5b50611e83925050506001600160a01b03841683612de2565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107c457604051631afcd79f60e31b815260040160405180910390fd5b611ed9611e88565b611ee4858585612e75565b611eec612e90565b6118058282612ea0565b611efe611e88565b5f805160206148ee83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b5f8381525f8051602061490e833981519152602090815260408083206001600160a01b038616845282528083208151608081018352815460ff9081161515825260018301549482019490945260028201549281019290925260030154909116151560608201525f805160206148ce83398151915290611fad81878787613007565b9695505050505050565b5f5f805160206148ee8339815191528054604051632e1a7d4d60e01b8152600481018590529192506001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015612009575f80fd5b505af115801561201b573d5f803e3d5ffd5b50508451602086015160408088015160a089015191515f965061204495509091906024016146f2565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c085015160608601519192505f9161208a91908690856130f5565b905080156120de5784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516120d191815260200190565b60405180910390a2611805565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08560405161211d91815260200190565b60405180910390a260e0850151611805906001600160a01b031685612de2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff90811615158252600183015494820194909452600282015492810192909252600301549091161515606082015281905f805160206148ce83398151915290826121c1828a8a8a613007565b90505f6121d783604001518460600151896131c5565b919a91995090975050505050505050565b5f8051602061492e83398151915280546001146122175760405162461bcd60e51b81526004016101b090613e2c565b6002815561222483611cfb565b5f61223c845f015185602001518587608001516131d2565b9050805f03612259576122538460e0015184611dca565b5061236b565b604080518082019091525f908060018152602001604051806040016040528088604001516001600160a01b031681526020018581525060405160200161229f91906140d9565b60405160208183030381529060405281525090505f61232b6040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a606001516001600160a01b031681526020018a6080015181525081526020018860c0015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f825080857c76cef4a1629c0705a7f8b4ef0282ddcafde0b6715c4fb34b68aaf0878560405161235f9291906140f9565b60405180910390a25050505b600190555050565b5f8051602061492e83398151915280546001146123a25760405162461bcd60e51b81526004016101b090613e2c565b600281556123af83611836565b5f6123c8845f01518560200151858761012001516131d2565b9050805f036123e5576123df8460c0015184611dca565b50612545565b604080518082019091525f9080600281526020016040518061010001604052808b81526020018a6001600160a01b03168152602001896001600160a01b0316815260200188604001516001600160a01b03168152602001858152602001886060015181526020018860a0015181526020018860e001516001600160a01b03168152506040516020016124779190613f17565b60405160208183030381529060405281525090505f6125056040518060c00160405280885f0151815260200188602001516001600160a01b0316815260200160405180604001604052808a61010001516001600160a01b031681526020018a61012001518152508152602001886080015181526020015f6001600160401b03811115610e8d57610e8d613b93565b9050807f42eff9005856e3c586b096d67211a566dc926052119fd7cc08023c70937ecb308785604051612539929190613ff7565b60405180910390a25050505b600190555050505050565b5f805160206148ce833981519152836125b75760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a207a65726f2072656d6f746520626c6f636b636861696044820152631b88125160e21b60648201526084016101b0565b8054840361261f5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e486f6d653a2063616e6e6f742072656769737465722072656d6f7460448201526e329037b71039b0b6b29031b430b4b760891b60648201526084016101b0565b6001600160a01b03831661268e5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e486f6d653a207a65726f2072656d6f746520746f6b656e2074726160448201526f6e73666572726572206164647265737360801b60648201526084016101b0565b5f84815260028201602090815260408083206001600160a01b038716845290915290205460ff161561270e5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f746520616c726561647920726567697374604482015263195c995960e21b60648201526084016101b0565b6012826040015160ff1611156127785760405162461bcd60e51b815260206004820152602960248201527f546f6b656e486f6d653a2072656d6f746520746f6b656e20646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016101b0565b6001810154602083015160ff908116600160a01b90920416146127ec5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e486f6d653a20696e76616c696420686f6d6520746f6b656e20646560448201526563696d616c7360d01b60648201526084016101b0565b5f8061280d8360010160149054906101000a900460ff168560400151613343565b915091505f6128208383875f01516131c5565b905081801561283a57508451612837908490614737565b15155b1561284d5761284a600182614628565b90505b6040518060800160405280600115158152602001828152602001848152602001831515815250846002015f8981526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908315150217905550905050856001600160a01b0316877ff229b02a51a4c8d5ef03a096ae0dd727d7b48b710d21b50ebebb560eef739b9083886040015160405161294692919091825260ff16602082015260400190565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa15801561299d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c19190613e15565b90506129d86001600160a01b03861685308661338b565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a409190613e15565b9050818111612aa65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016101b0565b611fad82826141c3565b5f612abe84848460016133f2565b949350505050565b5f8051602061494e83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612b20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b44919061474a565b9050612b508282610b1e565b156105885760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016101b0565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612c03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c279190613e15565b9050610ad68484612c388585614628565b613419565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015612c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca79190613e15565b9050836001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612ce2575f80fd5b505af1158015612cf4573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f93506001600160a01b03881692506370a082319150602401602060405180830381865afa158015612d3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d619190613e15565b9050818111612dcf5760405162461bcd60e51b815260206004820152603460248201527f53616665577261707065644e6174697665546f6b656e4465706f7369743a2062604482015273185b185b98d9481b9bdd081a5b98dc99585cd95960621b60648201526084016101b0565b612dd982826141c3565b95945050505050565b80471015612e055760405163cd78605960e01b81523060048201526024016101b0565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e4e576040519150601f19603f3d011682016040523d82523d5f602084013e612e53565b606091505b5050905080611e8357604051630a12f52160e11b815260040160405180910390fd5b612e7d611e88565b612e8783826134a8565b611e83826134ca565b612e98611e88565b6107c46134db565b612ea8611e88565b6001600160a01b038216612efe5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e486f6d653a207a65726f20746f6b656e206164647265737300000060448201526064016101b0565b60128160ff161115612f5d5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e486f6d653a20746f6b656e20646563696d616c7320746f6f2068696044820152610ced60f31b60648201526084016101b0565b5f5f805160206148ce83398151915290506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fd59190613e15565b8155600101805460ff909216600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b83515f906130275760405162461bcd60e51b81526004016101b09061417a565b6020850151156130855760405162461bcd60e51b8152602060048201526024808201527f546f6b656e486f6d653a2072656d6f7465206e6f7420636f6c6c61746572616c6044820152631a5e995960e21b60648201526084016101b0565b6130908484846134ef565b5f6130a486604001518760600151856131c5565b90505f8111612dd95760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e486f6d653a207a65726f20746f6b656e20616d6f756e740000000060448201526064016101b0565b5f845a10156131465760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016101b0565b834710156131965760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016101b0565b826001600160a01b03163b5f036131ae57505f612abe565b5f805f84516020860188888bf19695505050505050565b5f612abe8484845f6133f2565b5f8481525f8051602061490e833981519152602090815260408083206001600160a01b038716845282528083208151608081018352815460ff9081161580158352600184015495830195909552600283015493820193909352600390910154909116151560608201525f805160206148ce833981519152918061325857505f8160200151115b15613267575f92505050612abe565b8385116132cb5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e486f6d653a20696e73756666696369656e7420616d6f756e74207460448201526b6f20636f766572206665657360a01b60648201526084016101b0565b6132d584866141c3565b94505f6132eb8260400151836060015188612ab0565b9050805f036132ff575f9350505050612abe565b5f88815260038401602090815260408083206001600160a01b038b16845290915281208054839290613332908490614628565b909155509098975050505050505050565b5f8060ff8085169084161181816133665761335e8587614765565b60ff16613374565b6133708686614765565b60ff165b61337f90600a61485e565b96919550909350505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610ad69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506135dc565b5f8115158415150361340f576134088584614869565b9050612abe565b612dd98584614880565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261346a848261363d565b610ad6576040516001600160a01b0384811660248301525f604483015261349e91869182169063095ea7b3906064016133c0565b610ad684826135dc565b6134b0611e88565b6134b86136da565b6134c06136ea565b61080982826136f2565b6134d2611e88565b61078781613876565b5f5f8051602061492e83398151915261182f565b5f8381527f9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e603602090815260408083206001600160a01b03861684529091529020545f805160206148ce83398151915290828110156135a65760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e486f6d653a20696e73756666696369656e7420746f6b656e20747260448201526d616e736665722062616c616e636560901b60648201526084016101b0565b6135b083826141c3565b5f9586526003909201602090815260408087206001600160a01b03909616875294905250919092205550565b5f6135f06001600160a01b0384168361387e565b905080515f141580156136145750808060200190518101906136129190614893565b155b15611e8357604051635274afe760e01b81526001600160a01b03841660048201526024016101b0565b5f805f846001600160a01b03168460405161365891906148b2565b5f604051808303815f865af19150503d805f8114613691576040519150601f19603f3d011682016040523d82523d5f602084013e613696565b606091505b50915091508180156136c05750805115806136c05750808060200190518101906136c09190614893565b8015612dd95750505050506001600160a01b03163b151590565b6136e2611e88565b6107c461388b565b6107c4611e88565b6136fa611e88565b6001600160a01b0382166137765760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016101b0565b5f5f8051602061494e83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137ec9190613e15565b116138545760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016101b0565b81546001600160a01b0319166001600160a01b038216178255610ad683610b3f565b610ae4611e88565b60606107f783835f613893565b61180c611e88565b6060814710156138b85760405163cd78605960e01b81523060048201526024016101b0565b5f80856001600160a01b031684866040516138d391906148b2565b5f6040518083038185875af1925050503d805f811461390d576040519150601f19603f3d011682016040523d82523d5f602084013e613912565b606091505b5091509150611fad8683836060826139325761392d82613979565b6107f7565b815115801561394957506001600160a01b0384163b155b1561397257604051639996b31560e01b81526001600160a01b03851660048201526024016101b0565b50806107f7565b8051156139895780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610787575f80fd5b80356139c1816139a2565b919050565b5f80604083850312156139d7575f80fd5b8235915060208301356139e9816139a2565b809150509250929050565b5f60208284031215613a04575f80fd5b81356107f7816139a2565b5f60208284031215613a1f575f80fd5b5035919050565b5f60208284031215613a36575f80fd5b81356001600160401b03811115613a4b575f80fd5b820161016081850312156107f7575f80fd5b5f6101008284031215613a6e575f80fd5b50919050565b5f805f8060808587031215613a87575f80fd5b8435613a92816139a2565b93506020850135613aa2816139a2565b9250604085013591506060850135613ab9816139a2565b939692955090935050565b5f805f8060608587031215613ad7575f80fd5b843593506020850135613ae9816139a2565b925060408501356001600160401b0380821115613b04575f80fd5b818701915087601f830112613b17575f80fd5b813581811115613b25575f80fd5b886020828501011115613b36575f80fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715613bca57613bca613b93565b60405290565b60405161010081016001600160401b0381118282101715613bca57613bca613b93565b604080519081016001600160401b0381118282101715613bca57613bca613b93565b604051601f8201601f191681016001600160401b0381118282101715613c3d57613c3d613b93565b604052919050565b5f6001600160401b03821115613c5d57613c5d613b93565b50601f01601f191660200190565b5f82601f830112613c7a575f80fd5b8135613c8d613c8882613c45565b613c15565b818152846020838601011115613ca1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101608236031215613cce575f80fd5b613cd6613ba7565b82358152613ce6602084016139b6565b6020820152613cf7604084016139b6565b604082015260608301356001600160401b03811115613d14575f80fd5b613d2036828601613c6b565b6060830152506080830135608082015260a083013560a0820152613d4660c084016139b6565b60c0820152613d5760e084016139b6565b60e0820152610100613d6a8185016139b6565b90820152610120838101359082015261014092830135928101929092525090565b5f6101008284031215613d9c575f80fd5b613da4613bd0565b823581526020830135613db6816139a2565b60208201526040830135613dc9816139a2565b6040820152613dda606084016139b6565b60608201526080830135608082015260a083013560a082015260c083013560c0820152613e0960e084016139b6565b60e08201529392505050565b5f60208284031215613e25575f80fd5b5051919050565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b60208082526026908201527f546f6b656e486f6d653a206e6f6e2d7a65726f206d756c74692d686f702066616040820152656c6c6261636b60d01b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b5f5b83811015613ee4578181015183820152602001613ecc565b50505f910152565b5f8151808452613f03816020860160208601613eca565b601f01601f19169290920160200192915050565b60208152815160208201525f602083015160018060a01b03808216604085015280604086015116606085015250506060830151613f5f60808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613f86610120850183613eec565b915060c085015160e085015260e0850151613fab828601826001600160a01b03169052565b5090949350505050565b602081525f825160058110613fd857634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612abe6060840182613eec565b60408152825160408201525f602084015161401d60608401826001600160a01b03169052565b5060408401516001600160a01b03166080830152606084015161016060a0840181905261404e6101a0850183613eec565b9150608086015160c085015260a086015160e085015260c0860151610100614080818701836001600160a01b03169052565b60e0880151915061012061409e818801846001600160a01b03169052565b908801519150610140906140bc878301846001600160a01b03169052565b880151928601929092525090940151610180830152506020015290565b81516001600160a01b031681526020808301519082015260408101610588565b5f6101208201905083518252602084015160018060a01b03808216602085015280604087015116604085015280606087015116606085015250506080840151608083015260a084015160a083015260c084015160c083015260e084015161416b60e08401826001600160a01b03169052565b50826101008301529392505050565b6020808252818101527f546f6b656e486f6d653a2072656d6f7465206e6f742072656769737465726564604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610588576105886141af565b5f82601f8301126141e5575f80fd5b81516141f3613c8882613c45565b818152846020838601011115614207575f80fd5b612abe826020830160208701613eca565b5f60208284031215614228575f80fd5b81516001600160401b038082111561423e575f80fd5b9083019060408286031215614251575f80fd5b614259613bf3565b825160058110614267575f80fd5b815260208301518281111561427a575f80fd5b614286878286016141d6565b60208301525095945050505050565b80516139c1816139a2565b5f604082840312156142b0575f80fd5b6142b8613bf3565b82516142c3816139a2565b81526020928301519281019290925250919050565b5f602082840312156142e8575f80fd5b81516001600160401b03808211156142fe575f80fd5b908301906101008286031215614312575f80fd5b61431a613bd0565b8251815261432a60208401614295565b602082015261433b60408401614295565b604082015261434c60608401614295565b60608201526080830151608082015260a08301518281111561436c575f80fd5b614378878286016141d6565b60a08301525060c083015160c082015261439460e08401614295565b60e082015295945050505050565b5f60e082840312156143b2575f80fd5b60405160e081018181106001600160401b03821117156143d4576143d4613b93565b6040528251815260208301516143e9816139a2565b602082015260408301516143fc816139a2565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161442f816139a2565b60c08201529392505050565b5f6020828403121561444b575f80fd5b81516001600160401b0380821115614461575f80fd5b908301906101608286031215614475575f80fd5b61447d613ba7565b61448683614295565b81526020830151602082015261449e60408401614295565b60408201526144af60608401614295565b60608201526080830151608082015260a0830151828111156144cf575f80fd5b6144db878286016141d6565b60a08301525060c083015160c08201526144f760e08401614295565b60e082015261010083810151908201526101209150614517828401614295565b9181019190915261014091820151918101919091529392505050565b805160ff811681146139c1575f80fd5b5f60608284031215614553575f80fd5b604051606081018181106001600160401b038211171561457557614575613b93565b6040528251815261458860208401614533565b602082015261459960408401614533565b60408201529392505050565b60208082526022908201527f546f6b656e486f6d653a207a65726f20726571756972656420676173206c696d6040820152611a5d60f21b606082015260800190565b60208082526021908201527f546f6b656e486f6d653a206e6f6e2d7a65726f207365636f6e646172792066656040820152606560f81b606082015260800190565b80820180821115610588576105886141af565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b808410156146c8578451831682529385019360019390930192908501906146a6565b5060a0880151878203601f190160e089015294506146e68186613eec565b98975050505050505050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f90611fad90830184613eec565b634e487b7160e01b5f52601260045260245ffd5b5f8261474557614745614723565b500690565b5f6020828403121561475a575f80fd5b81516107f7816139a2565b60ff8281168282160390811115610588576105886141af565b600181815b808511156147b857815f190482111561479e5761479e6141af565b808516156147ab57918102915b93841c9390800290614783565b509250929050565b5f826147ce57506001610588565b816147da57505f610588565b81600181146147f057600281146147fa57614816565b6001915050610588565b60ff84111561480b5761480b6141af565b50506001821b610588565b5060208310610133831016604e8410600b8410161715614839575081810a610588565b614843838361477e565b805f1904821115614856576148566141af565b029392505050565b5f6107f783836147c0565b8082028115828204841417610588576105886141af565b5f8261488e5761488e614723565b500490565b5f602082840312156148a3575f80fd5b815180151581146107f7575f80fd5b5f82516148c3818460208701613eca565b919091019291505056fe9316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e6003b5030f10c94fcbdaa3022348ff0b82dbd4c0c71339e41ff59d0bdc92179d6009316912b5a9db88acbe872c934fdd0a46c436c6dcba332d649c4d57c7bc9e602d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a264697066735822122077a7ef20648a5cbde6027308f8136c2d1e4d1bb46b864ee20033d5729ce7184964736f6c63430008190033", } // NativeTokenHomeUpgradeableABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemote/ERC20TokenRemote.go b/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemote/ERC20TokenRemote.go index 2bd2fbae5..0688722f2 100644 --- a/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemote/ERC20TokenRemote.go +++ b/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemote/ERC20TokenRemote.go @@ -75,7 +75,7 @@ type TokenRemoteSettings struct { // ERC20TokenRemoteMetaData contains all meta data concerning the ERC20TokenRemote contract. var ERC20TokenRemoteMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenHomeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenHomeAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenHomeDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structTokenRemoteSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_GAS_PER_WORD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_SEND_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REGISTER_REMOTE_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"payloadSize\",\"type\":\"uint256\"}],\"name\":\"calculateNumWords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInitialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIsCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMultiplyOnRemote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenHomeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenHomeAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenHomeDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structTokenRemoteSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"registerWithHome\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161570338038061570383398101604081905261002e91610bf5565b61003a84848484610046565b50505050610f55565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f8115801561008f5750825b90505f826001600160401b031660011480156100aa5750303b155b9050811580156100b8575080155b156100d65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010457845460ff60401b1916680100000000000000001785555b61011089898989610161565b831561015657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6101696101b3565b6101738383610203565b61017e845f83610219565b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf62622300805460ff191660ff83161790555b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661020157604051631afcd79f60e31b815260040160405180910390fd5b565b61020b6101b3565b6102158282610250565b5050565b6102216101b3565b8251602084015160408501516102389291906102b3565b6102406102ce565b61024b8383836102de565b505050565b6102586101b3565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036102a48482610d5a565b50600481016101ad8382610d5a565b6102bb6101b3565b6102c5838261062d565b61024b8261064f565b6102d66101b3565b610201610660565b6102e66101b3565b5f7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e9190610e19565b815560608401516103e95760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084015b60405180910390fd5b80546060850151036104635760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016103e0565b60808401516001600160a01b03166104c95760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016103e0565b60128460a0015160ff1611156105335760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016103e0565b60128260ff1611156105935760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016103e0565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b9186169190910217905561060f908361068a565b60048301805460ff1916911515919091179055600390910155505050565b6106356101b3565b61063d6106d2565b6106456106e2565b61021582826106ea565b6106576101b3565b6100438161086e565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b5f8060ff8085169084161181816106ad576106a58587610e44565b60ff166106bb565b6106b78686610e44565b60ff165b6106c690600a610f43565b96919550909350505050565b6106da6101b3565b6102016108a8565b6102016101b3565b6106f26101b3565b6001600160a01b03821661076e5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016103e0565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f79190610e19565b1161084c5760405162461bcd60e51b815260206004820152603260248201525f805160206156e3833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016103e0565b81546001600160a01b0319166001600160a01b0382161782556101ad836108d7565b6108766101b3565b6001600160a01b03811661089f57604051631e4fbdf760e01b81525f60048201526024016103e0565b61004381610a6f565b6108b06101b3565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610683565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa15801561093e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109629190610e19565b6002830154909150818411156109c15760405162461bcd60e51b815260206004820152603160248201525f805160206156e383398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016103e0565b808411610a365760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016103e0565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610b1557610b15610adf565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610b4357610b43610adf565b604052919050565b80516001600160a01b0381168114610b61575f80fd5b919050565b805160ff81168114610b61575f80fd5b5f82601f830112610b85575f80fd5b81516001600160401b03811115610b9e57610b9e610adf565b6020610bb2601f8301601f19168201610b1b565b8281528582848701011115610bc5575f80fd5b5f5b83811015610be2578581018301518282018401528201610bc7565b505f928101909101919091529392505050565b5f805f80848603610120811215610c0a575f80fd5b60c0811215610c17575f80fd5b50610c20610af3565b610c2986610b4b565b8152610c3760208701610b4b565b60208201526040860151604082015260608601516060820152610c5c60808701610b4b565b6080820152610c6d60a08701610b66565b60a082015260c08601519094506001600160401b0380821115610c8e575f80fd5b610c9a88838901610b76565b945060e0870151915080821115610caf575f80fd5b50610cbc87828801610b76565b925050610ccc6101008601610b66565b905092959194509250565b600181811c90821680610ceb57607f821691505b602082108103610d0957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024b57805f5260205f20601f840160051c81016020851015610d345750805b601f840160051c820191505b81811015610d53575f8155600101610d40565b5050505050565b81516001600160401b03811115610d7357610d73610adf565b610d8781610d818454610cd7565b84610d0f565b602080601f831160018114610dba575f8415610da35750858301515b5f19600386901b1c1916600185901b178555610e11565b5f85815260208120601f198616915b82811015610de857888601518255948401946001909101908401610dc9565b5085821015610e0557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215610e29575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115610e5d57610e5d610e30565b92915050565b600181815b80851115610e9d57815f1904821115610e8357610e83610e30565b80851615610e9057918102915b93841c9390800290610e68565b509250929050565b5f82610eb357506001610e5d565b81610ebf57505f610e5d565b8160018114610ed55760028114610edf57610efb565b6001915050610e5d565b60ff841115610ef057610ef0610e30565b50506001821b610e5d565b5060208310610133831016604e8410600b8410161715610f1e575081810a610e5d565b610f288383610e63565b805f1904821115610f3b57610f3b610e30565b029392505050565b5f610f4e8383610ea5565b9392505050565b61478180610f625f395ff3fe608060405234801561000f575f80fd5b506004361061021e575f3560e01c806370a082311161012a578063b8a46d02116100b4578063dd62ed3e11610079578063dd62ed3e146104bd578063e0fd9cb8146104d0578063ef793e2a146104d8578063f2fde38b146104e0578063f3f981d8146104f3575f80fd5b8063b8a46d0214610474578063c3cd692714610487578063c868efaa1461048f578063c9fe4ddf146104a2578063d2cc7a70146104b5575f80fd5b80638da5cb5b116100fa5780638da5cb5b146103ee578063909a6ac01461043257806395d89b4114610446578063973142971461044e578063a9059cbb14610461575f80fd5b806370a08231146103a0578063715018a6146103d457806371717c18146103dc5780637ee3779a146103e6575f80fd5b8063313ce567116101ab5780635507f3d11161017b5780635507f3d1146103365780635d16225d146103405780635eb995141461035357806362431a6514610366578063656900381461038d575f80fd5b8063313ce567146102c057806335cac159146102f45780634213cf781461031b5780634511243e14610323575f80fd5b806315beb59f116101f157806315beb59f1461027d57806318160ddd1461028657806323b872dd1461028e578063254ac160146102a15780632b0d8f18146102ab575f80fd5b806302a30c7d1461022257806306fdde031461023f5780630733c8c814610254578063095ea7b31461026a575b5f80fd5b61022a610506565b60405190151581526020015b60405180910390f35b61024761051d565b60405161023691906136ec565b61025c6105dd565b604051908152602001610236565b61022a610278366004613722565b6105f1565b61025c6105dc81565b61025c61060a565b61022a61029c36600461374c565b610625565b61025c6201fbd081565b6102be6102b936600461378a565b61064a565b005b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf626223005460405160ff9091168152602001610236565b61025c7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b61025c61074c565b6102be61033136600461378a565b61075d565b61025c6205302081565b6102be61034e3660046137a5565b61084c565b6102be6103613660046137d4565b61085a565b61025c7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf6262230081565b6102be61039b3660046137eb565b61086e565b61025c6103ae36600461378a565b6001600160a01b03165f9081525f8051602061470c833981519152602052604090205490565b6102be610878565b61025c6205573081565b61022a61088b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610236565b61025c5f8051602061472c83398151915281565b6102476108a2565b61022a61045c36600461378a565b6108e0565b61022a61046f366004613722565b6108f9565b6102be610482366004613823565b610906565b61041a610acd565b6102be61049d366004613839565b610aea565b6102be6104b03660046139f3565b610ca7565b61025c610db9565b61025c6104cb366004613adc565b610dce565b61025c610e17565b61025c610e2b565b6102be6104ee36600461378a565b610e3f565b61025c6105013660046137d4565b610e79565b5f80610510610e8f565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f8051602061470c8339815191529161055b90613b13565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613b13565b80156105d25780601f106105a9576101008083540402835291602001916105d2565b820191905f5260205f20905b8154815290600101906020018083116105b557829003601f168201915b505050505091505090565b5f806105e7610e8f565b6003015492915050565b5f336105fe818585610eb3565b60019150505b92915050565b5f805f8051602061470c8339815191525b6002015492915050565b5f33610632858285610ec5565b61063d858585610f22565b60019150505b9392505050565b5f8051602061472c833981519152610660610f7f565b6001600160a01b03821661068f5760405162461bcd60e51b815260040161068690613b45565b60405180910390fd5b6106998183610f87565b156106fc5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610686565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f80610756610e8f565b5492915050565b5f8051602061472c833981519152610773610f7f565b6001600160a01b0382166107995760405162461bcd60e51b815260040161068690613b45565b6107a38183610f87565b6108015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610686565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6108568282610fa8565b5050565b610862610f7f565b61086b81611030565b50565b61085682826111c8565b610880611250565b6108895f6112ab565b565b5f80610895610e8f565b6004015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061470c8339815191529161055b90613b13565b5f5f8051602061472c8339815191526106438184610f87565b5f336105fe818585610f22565b5f61090f610e8f565b6006810154909150610100900460ff161561096c5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c72656164792072656769737465726564006044820152606401610686565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a01529151909316828601528651808303909501855260809091019095528082019290925291929091610a01906109f79087018761378a565b866020013561131b565b6040805160c0810182526001870154815260028701546001600160a01b031660208083019190915282518084018452939450610ac5939192830191908190610a4b908b018b61378a565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f5b604051908082528060200260200182016040528015610a97578160200160208202803683370190505b50815260200184604051602001610aae9190613ba7565b604051602081830303815290604052815250611363565b505050505050565b5f80610ad7610e8f565b600201546001600160a01b031692915050565b610af261147e565b5f5f8051602061472c83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190613be9565b1015610be85760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610686565b610bf28133610f87565b15610c585760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610686565b610c98858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506114c892505050565b50610ca16116df565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ceb5750825b90505f826001600160401b03166001148015610d065750303b155b905081158015610d14575080155b15610d325760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d5c57845460ff60401b1916600160401b1785555b610d6889898989611709565b8315610dae57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f805f8051602061472c83398151915261061b565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f80610e21610e8f565b6001015492915050565b5f80610e35610e8f565b6005015492915050565b610e47611250565b6001600160a01b038116610e7057604051631e4fbdf760e01b81525f6004820152602401610686565b61086b816112ab565b5f6005610e8783601f613c14565b901c92915050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b610ec08383836001611759565b505050565b5f610ed08484610dce565b90505f198114610ca15781811015610f1457604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610686565b610ca184848484035f611759565b6001600160a01b038316610f4b57604051634b637e8f60e11b81525f6004820152602401610686565b6001600160a01b038216610f745760405163ec442f0560e01b81525f6004820152602401610686565b610ec083838361183c565b610889611250565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75008054600114610fea5760405162461bcd60e51b815260040161068690613c27565b600281555f610ff7610e8f565b905061100284611975565b600181015484350361101d576110188484611a60565b611027565b6110278484611be4565b50600190555050565b5f8051602061472c83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015611084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190613be9565b60028301549091508184111561111a5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610686565b80841161118f5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610686565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500805460011461120a5760405162461bcd60e51b815260040161068690613c27565b600281555f611217610e8f565b905061122284611daf565b600181015484350361123e576112388484611fe9565b50611248565b61123884846121f8565b600190555050565b336112827f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108895760405163118cdaa760e01b8152336004820152602401610686565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f815f0361132a57505f610604565b306001600160a01b0384160361135857611346335b3084610ec5565b611351333084610f22565b5080610604565b610643833384612494565b5f8061136d6125f7565b60408401516020015190915015611412576040830151516001600160a01b03166113ef5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610686565b604083015160208101519051611412916001600160a01b039091169083906126e7565b604051630624488560e41b81526001600160a01b0382169063624488509061143e908690600401613c6b565b6020604051808303815f875af115801561145a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106439190613be9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016114c257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6114d1610e8f565b9050806001015484146115385760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b6064820152608401610686565b60028101546001600160a01b038481169116146115aa5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b6064820152608401610686565b5f828060200190518101906115bf9190613d64565b6006830154909150610100900460ff1615806115e05750600682015460ff16155b156115f75760068201805461ffff19166101011790555b60018151600481111561160c5761160c613b93565b03611643575f816020015180602001905181019061162a9190613dec565b905061163d815f0151826020015161276e565b506116d8565b60028151600481111561165857611658613b93565b03611686575f81602001518060200190518101906116769190613e24565b905061163d8182608001516127bb565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b6064820152608401610686565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b611711612914565b61171b838361295d565b611726845f8361296f565b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf62622300805460ff191660ff8316179055610ca1565b5f8051602061470c8339815191526001600160a01b0385166117905760405163e602df0560e01b81525f6004820152602401610686565b6001600160a01b0384166117b957604051634a1406b160e11b81525f6004820152602401610686565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156116d857836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161182d91815260200190565b60405180910390a35050505050565b5f8051602061470c8339815191526001600160a01b0384166118765781816002015f82825461186b9190613c14565b909155506118e69050565b6001600160a01b0384165f90815260208290526040902054828110156118c85760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610686565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611904576002810180548390039055611922565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196791815260200190565b60405180910390a350505050565b5f611986606083016040840161378a565b6001600160a01b0316036119e85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b6064820152608401610686565b5f8160c0013511611a0b5760405162461bcd60e51b815260040161068690613eee565b8035611a295760405162461bcd60e51b815260040161068690613f32565b5f611a3a604083016020840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260040161068690613f7d565b5f611a69610e8f565b9050611a99611a7e604085016020860161378a565b60a0850135611a94610100870160e0880161378a565b6129a0565b5f611abd83611aae608087016060880161378a565b86608001358760a00135612a9d565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190611af4919061378a565b6001600160a01b0316815260200187815250604051602001611b169190613fda565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611b6e60808c0160608d0161378a565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610a6e565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528888604051611bd4929190613ffa565b60405180910390a3505050505050565b5f611bed610e8f565b9050611c1a8335611c04604086016020870161378a565b611c15610100870160e0880161378a565b612b60565b5f611c2f83611aae608087016060880161378a565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191611c68918b01908b0161378a565b6001600160a01b03168152602001611c8660608a0160408b0161378a565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001611cc06101008a0160e08b0161378a565b6001600160a01b03169052604051611d309190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611d8860808c0160608d0161378a565b6001600160a01b03168152602090810188905290825262053020908201526040015f610a6e565b8035611dcd5760405162461bcd60e51b815260040161068690613f32565b5f611dde604083016020840161378a565b6001600160a01b031603611e045760405162461bcd60e51b815260040161068690613f7d565b5f611e15606083016040840161378a565b6001600160a01b031603611e805760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b6064820152608401610686565b5f816080013511611ea35760405162461bcd60e51b815260040161068690613eee565b5f8160a0013511611f045760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b6064820152608401610686565b80608001358160a0013510611f6c5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b6064820152608401610686565b5f611f7e610100830160e0840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b6064820152608401610686565b5f611ff2610e8f565b905061201d612007604085016020860161378a565b610140850135611a9460e0870160c0880161378a565b5f612045836120346101208701610100880161378a565b866101200135876101400135612a9d565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016120893390565b6001600160a01b031681526020016120a760608a0160408b0161378a565b6001600160a01b03168152602081018890526040016120c960608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161211d6101008a0160e08b0161378a565b6001600160a01b0316905260405161213891906020016140db565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f926121ba92820190806121926101208c016101008d0161378a565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610a6e565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168888604051611bd49291906141e2565b5f612201610e8f565b90506122288335612218604086016020870161378a565b611c1560e0870160c0880161378a565b5f61223f836120346101208701610100880161378a565b6040805180820190915291945091505f90806004815260200160405180610160016040528061226b3390565b6001600160a01b03168152602001885f01358152602001886020016020810190612295919061378a565b6001600160a01b031681526020016122b360608a0160408b0161378a565b6001600160a01b03168152602081018890526040016122d560608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016123296101008a0160e08b0161378a565b6001600160a01b031681526080890135602082015260400161235160e08a0160c08b0161378a565b6001600160a01b031681526101408901356020918201526040516123769291016142f0565b60408051601f19818403018152919052905290505f6105dc6123a561239e6060890189614099565b9050610e79565b6123af91906143cd565b6123bc9062055730613c14565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f9261244592820190806124066101208d016101008e0161378a565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610aae91889101613ba7565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1689896040516124839291906141e2565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156124da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124fe9190613be9565b90506125156001600160a01b038616853086612bfe565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061257d9190613be9565b90508181116125e35760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610686565b6125ed82826143e4565b9695505050505050565b5f8051602061472c83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612651573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061267591906143f7565b90506126818282610f87565b156106045760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610686565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127589190613be9565b9050610ca184846127698585613c14565b612c65565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b826040516127a991815260200190565b60405180910390a26108568282612cf4565b6127c53082612cf4565b6127d430836060015183610eb3565b5f825f01518360200151846040015130858760a001516040516024016127ff96959493929190614412565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c084015160608501519192505f91612843919084612d28565b90505f612854308660600151610dce565b90506128653086606001515f610eb3565b81156128b75784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516128aa91815260200190565b60405180910390a26128ff565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb0856040516128f691815260200190565b60405180910390a25b80156116d8576116d8308660e0015183610f22565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661088957604051631afcd79f60e31b815260040160405180910390fd5b612965612914565b6108568282612d3d565b612977612914565b61298d835f015184602001518560400151612d8d565b612995612da8565b610ec0838383612db8565b5f6129a9610e8f565b60028101549091506001600160a01b038581169116146129db5760405162461bcd60e51b815260040161068690614452565b8215612a355760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b6064820152608401610686565b6001600160a01b03821615610ca15760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b6064820152608401610686565b5f805f612aa8610e8f565b9050612ab3876130dc565b9650612abf868661131b565b60038201546004830154919650612ad99160ff16866130f4565b60038201546004830154612af1919060ff168a6130f4565b11612b535760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b6064820152608401610686565b5094959294509192505050565b5f612b69610e8f565b80549091508403612b9c57306001600160a01b03841603612b9c5760405162461bcd60e51b815260040161068690614452565b6001600160a01b038216610ca15760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b6064820152608401610686565b6040516001600160a01b038481166024830152838116604483015260648201839052610ca19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613101565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612cb68482613162565b610ca1576040516001600160a01b0384811660248301525f6044830152612cea91869182169063095ea7b390606401612c33565b610ca18482613101565b6001600160a01b038216612d1d5760405163ec442f0560e01b81525f6004820152602401610686565b6108565f838361183c565b5f612d35845f8585613203565b949350505050565b612d45612914565b5f8051602061470c8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03612d7e84826144f3565b5060048101610ca183826144f3565b612d95612914565b612d9f83826132d3565b610ec0826132f5565b612db0612914565b610889613306565b612dc0612914565b5f612dc9610e8f565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e329190613be9565b81556060840151612e985760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b6064820152608401610686565b8054606085015103612f125760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d6500000000006064820152608401610686565b60808401516001600160a01b0316612f785760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b6064820152608401610686565b60128460a0015160ff161115612fe25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b6064820152608401610686565b60128260ff1611156130425760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b6064820152608401610686565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b918616919091021790556130be908361332d565b60048301805460ff1916911515919091179055600390910155505050565b5f6130e63361133f565b6130f03383613377565b5090565b5f612d358484845f6133ab565b5f6131156001600160a01b038416836133d2565b905080515f1415801561313957508080602001905181019061313791906145ae565b155b15610ec057604051635274afe760e01b81526001600160a01b0384166004820152602401610686565b5f805f846001600160a01b03168460405161317d91906145cd565b5f604051808303815f865af19150503d805f81146131b6576040519150601f19603f3d011682016040523d82523d5f602084013e6131bb565b606091505b50915091508180156131e55750805115806131e55750808060200190518101906131e591906145ae565b80156131fa57505f856001600160a01b03163b115b95945050505050565b5f845a10156132545760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e742067617300000000006044820152606401610686565b834710156132a45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c75650000006044820152606401610686565b826001600160a01b03163b5f036132bc57505f612d35565b5f805f84516020860188888bf19695505050505050565b6132db612914565b6132e36133df565b6132eb6133ef565b61085682826133f7565b6132fd612914565b61086b8161357b565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500611702565b5f8060ff8085169084161181816133505761334885876145e8565b60ff1661335e565b61335a86866145e8565b60ff165b61336990600a6146e1565b9350909150505b9250929050565b6001600160a01b0382166133a057604051634b637e8f60e11b81525f6004820152602401610686565b610856825f8361183c565b5f811515841515036133c8576133c185846143cd565b9050612d35565b6131fa85846146ec565b606061064383835f613583565b6133e7612914565b610889613612565b610889612914565b6133ff612914565b6001600160a01b03821661347b5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f7274657220726567697374727920616464726573730000000000000000006064820152608401610686565b5f5f8051602061472c83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f19190613be9565b116135595760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b6064820152608401610686565b81546001600160a01b0319166001600160a01b038216178255610ca183611030565b610e47612914565b6060814710156135a85760405163cd78605960e01b8152306004820152602401610686565b5f80856001600160a01b031684866040516135c391906145cd565b5f6040518083038185875af1925050503d805f81146135fd576040519150601f19603f3d011682016040523d82523d5f602084013e613602565b606091505b50915091506125ed86838361361a565b6116df612914565b60608261362f5761362a82613676565b610643565b815115801561364657506001600160a01b0384163b155b1561366f57604051639996b31560e01b81526001600160a01b0385166004820152602401610686565b5080610643565b8051156136865780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b838110156136b95781810151838201526020016136a1565b50505f910152565b5f81518084526136d881602086016020860161369f565b601f01601f19169290920160200192915050565b602081525f61064360208301846136c1565b6001600160a01b038116811461086b575f80fd5b803561371d816136fe565b919050565b5f8060408385031215613733575f80fd5b823561373e816136fe565b946020939093013593505050565b5f805f6060848603121561375e575f80fd5b8335613769816136fe565b92506020840135613779816136fe565b929592945050506040919091013590565b5f6020828403121561379a575f80fd5b8135610643816136fe565b5f808284036101208112156137b8575f80fd5b610100808212156137c7575f80fd5b9395938601359450505050565b5f602082840312156137e4575f80fd5b5035919050565b5f80604083850312156137fc575f80fd5b82356001600160401b03811115613811575f80fd5b8301610160818603121561373e575f80fd5b5f60408284031215613833575f80fd5b50919050565b5f805f806060858703121561384c575f80fd5b84359350602085013561385e816136fe565b925060408501356001600160401b0380821115613879575f80fd5b818701915087601f83011261388c575f80fd5b81358181111561389a575f80fd5b8860208285010111156138ab575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156138f0576138f06138ba565b60405290565b604080519081016001600160401b03811182821017156138f0576138f06138ba565b60405161010081016001600160401b03811182821017156138f0576138f06138ba565b604051601f8201601f191681016001600160401b0381118282101715613963576139636138ba565b604052919050565b803560ff8116811461371d575f80fd5b5f6001600160401b03821115613993576139936138ba565b50601f01601f191660200190565b5f82601f8301126139b0575f80fd5b81356139c36139be8261397b565b61393b565b8181528460208386010111156139d7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215613a08575f80fd5b60c0811215613a15575f80fd5b50613a1e6138ce565b8535613a29816136fe565b81526020860135613a39816136fe565b8060208301525060408601356040820152606086013560608201526080860135613a62816136fe565b6080820152613a7360a0870161396b565b60a0820152935060c08501356001600160401b0380821115613a93575f80fd5b613a9f888389016139a1565b945060e0870135915080821115613ab4575f80fd5b50613ac1878288016139a1565b925050613ad1610100860161396b565b905092959194509250565b5f8060408385031215613aed575f80fd5b8235613af8816136fe565b91506020830135613b08816136fe565b809150509250929050565b600181811c90821680613b2757607f821691505b60208210810361383357634e487b7160e01b5f52602260045260245ffd5b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b602081525f825160058110613bca57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612d3560608401826136c1565b5f60208284031215613bf9575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561060457610604613c00565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015613cf857845183168252938501936001939093019290850190613cd6565b5060a0880151878203601f190160e08901529450613d1681866136c1565b98975050505050505050565b5f82601f830112613d31575f80fd5b8151613d3f6139be8261397b565b818152846020838601011115613d53575f80fd5b612d3582602083016020870161369f565b5f60208284031215613d74575f80fd5b81516001600160401b0380821115613d8a575f80fd5b9083019060408286031215613d9d575f80fd5b613da56138f6565b825160058110613db3575f80fd5b8152602083015182811115613dc6575f80fd5b613dd287828601613d22565b60208301525095945050505050565b805161371d816136fe565b5f60408284031215613dfc575f80fd5b613e046138f6565b8251613e0f816136fe565b81526020928301519281019290925250919050565b5f60208284031215613e34575f80fd5b81516001600160401b0380821115613e4a575f80fd5b908301906101008286031215613e5e575f80fd5b613e66613918565b82518152613e7660208401613de1565b6020820152613e8760408401613de1565b6040820152613e9860608401613de1565b60608201526080830151608082015260a083015182811115613eb8575f80fd5b613ec487828601613d22565b60a08301525060c083015160c0820152613ee060e08401613de1565b60e082015295945050505050565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b81516001600160a01b031681526020808301519082015260408101610604565b8235815261012081016020840135614011816136fe565b6001600160a01b039081166020840152604085013590614030826136fe565b16604083015261404260608501613712565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c083015261407c60e08501613712565b6001600160a01b031660e083015261010090910191909152919050565b5f808335601e198436030181126140ae575f80fd5b8301803591506001600160401b038211156140c7575f80fd5b602001915036819003821315613370575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161412360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261414a6101208501836136c1565b915060c085015160e085015260e085015161416f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261418e575f80fd5b83016020810192503590506001600160401b038111156141ac575f80fd5b803603821315613370575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6141fa60208501613712565b6001600160a01b0316606083015261421460408501613712565b6001600160a01b0316608083015261422f6060850185614179565b6101608060a08601526142476101a0860183856141ba565b9250608087013560c086015260a087013560e086015261426960c08801613712565b9150610100614282818701846001600160a01b03169052565b61428e60e08901613712565b92506101206142a7818801856001600160a01b03169052565b6142b2828a01613712565b935061014091506142cd828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b6020815261430a6020820183516001600160a01b03169052565b602082015160408201525f604083015161432f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c085015261436b6101808501836136c1565b915060c085015160e085015260e0850151610100614393818701836001600160a01b03169052565b8601516101208681019190915286015190506101406143bc818701836001600160a01b03169052565b959095015193019290925250919050565b808202811582820484141761060457610604613c00565b8181038181111561060457610604613c00565b5f60208284031215614407575f80fd5b8151610643816136fe565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f90613d16908301846136c1565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f821115610ec057805f5260205f20601f840160051c810160208510156144d45750805b601f840160051c820191505b818110156116d8575f81556001016144e0565b81516001600160401b0381111561450c5761450c6138ba565b6145208161451a8454613b13565b846144af565b602080601f831160018114614553575f841561453c5750858301515b5f19600386901b1c1916600185901b178555610ac5565b5f85815260208120601f198616915b8281101561458157888601518255948401946001909101908401614562565b508582101561459e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156145be575f80fd5b81518015158114610643575f80fd5b5f82516145de81846020870161369f565b9190910192915050565b60ff828116828216039081111561060457610604613c00565b600181815b8085111561463b57815f190482111561462157614621613c00565b8085161561462e57918102915b93841c9390800290614606565b509250929050565b5f8261465157506001610604565b8161465d57505f610604565b8160018114614673576002811461467d57614699565b6001915050610604565b60ff84111561468e5761468e613c00565b50506001821b610604565b5060208310610133831016604e8410600b84101617156146bc575081810a610604565b6146c68383614601565b805f19048211156146d9576146d9613c00565b029392505050565b5f6106438383614643565b5f8261470657634e487b7160e01b5f52601260045260245ffd5b50049056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220105c847c981a3872dc15c6b40bf1a4a07310b88497903008b9a945b7e4a41ac164736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", + Bin: "0x608060405234801561000f575f80fd5b5060405161570338038061570383398101604081905261002e91610bf5565b61003a84848484610046565b50505050610f55565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f8115801561008f5750825b90505f826001600160401b031660011480156100aa5750303b155b9050811580156100b8575080155b156100d65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010457845460ff60401b1916680100000000000000001785555b61011089898989610161565b831561015657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6101696101b3565b6101738383610203565b61017e845f83610219565b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf62622300805460ff191660ff83161790555b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661020157604051631afcd79f60e31b815260040160405180910390fd5b565b61020b6101b3565b6102158282610250565b5050565b6102216101b3565b8251602084015160408501516102389291906102b3565b6102406102ce565b61024b8383836102de565b505050565b6102586101b3565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036102a48482610d5a565b50600481016101ad8382610d5a565b6102bb6101b3565b6102c5838261062d565b61024b8261064f565b6102d66101b3565b610201610660565b6102e66101b3565b5f7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e9190610e19565b815560608401516103e95760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084015b60405180910390fd5b80546060850151036104635760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016103e0565b60808401516001600160a01b03166104c95760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016103e0565b60128460a0015160ff1611156105335760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016103e0565b60128260ff1611156105935760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016103e0565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b9186169190910217905561060f908361068a565b60048301805460ff1916911515919091179055600390910155505050565b6106356101b3565b61063d6106d2565b6106456106e2565b61021582826106ea565b6106576101b3565b6100438161086e565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b5f8060ff8085169084161181816106ad576106a58587610e44565b60ff166106bb565b6106b78686610e44565b60ff165b6106c690600a610f43565b96919550909350505050565b6106da6101b3565b6102016108a8565b6102016101b3565b6106f26101b3565b6001600160a01b03821661076e5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016103e0565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f79190610e19565b1161084c5760405162461bcd60e51b815260206004820152603260248201525f805160206156e3833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016103e0565b81546001600160a01b0319166001600160a01b0382161782556101ad836108d7565b6108766101b3565b6001600160a01b03811661089f57604051631e4fbdf760e01b81525f60048201526024016103e0565b61004381610a6f565b6108b06101b3565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610683565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa15801561093e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109629190610e19565b6002830154909150818411156109c15760405162461bcd60e51b815260206004820152603160248201525f805160206156e383398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016103e0565b808411610a365760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016103e0565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610b1557610b15610adf565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610b4357610b43610adf565b604052919050565b80516001600160a01b0381168114610b61575f80fd5b919050565b805160ff81168114610b61575f80fd5b5f82601f830112610b85575f80fd5b81516001600160401b03811115610b9e57610b9e610adf565b6020610bb2601f8301601f19168201610b1b565b8281528582848701011115610bc5575f80fd5b5f5b83811015610be2578581018301518282018401528201610bc7565b505f928101909101919091529392505050565b5f805f80848603610120811215610c0a575f80fd5b60c0811215610c17575f80fd5b50610c20610af3565b610c2986610b4b565b8152610c3760208701610b4b565b60208201526040860151604082015260608601516060820152610c5c60808701610b4b565b6080820152610c6d60a08701610b66565b60a082015260c08601519094506001600160401b0380821115610c8e575f80fd5b610c9a88838901610b76565b945060e0870151915080821115610caf575f80fd5b50610cbc87828801610b76565b925050610ccc6101008601610b66565b905092959194509250565b600181811c90821680610ceb57607f821691505b602082108103610d0957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024b57805f5260205f20601f840160051c81016020851015610d345750805b601f840160051c820191505b81811015610d53575f8155600101610d40565b5050505050565b81516001600160401b03811115610d7357610d73610adf565b610d8781610d818454610cd7565b84610d0f565b602080601f831160018114610dba575f8415610da35750858301515b5f19600386901b1c1916600185901b178555610e11565b5f85815260208120601f198616915b82811015610de857888601518255948401946001909101908401610dc9565b5085821015610e0557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215610e29575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115610e5d57610e5d610e30565b92915050565b600181815b80851115610e9d57815f1904821115610e8357610e83610e30565b80851615610e9057918102915b93841c9390800290610e68565b509250929050565b5f82610eb357506001610e5d565b81610ebf57505f610e5d565b8160018114610ed55760028114610edf57610efb565b6001915050610e5d565b60ff841115610ef057610ef0610e30565b50506001821b610e5d565b5060208310610133831016604e8410600b8410161715610f1e575081810a610e5d565b610f288383610e63565b805f1904821115610f3b57610f3b610e30565b029392505050565b5f610f4e8383610ea5565b9392505050565b61478180610f625f395ff3fe608060405234801561000f575f80fd5b506004361061021e575f3560e01c806370a082311161012a578063b8a46d02116100b4578063dd62ed3e11610079578063dd62ed3e146104bd578063e0fd9cb8146104d0578063ef793e2a146104d8578063f2fde38b146104e0578063f3f981d8146104f3575f80fd5b8063b8a46d0214610474578063c3cd692714610487578063c868efaa1461048f578063c9fe4ddf146104a2578063d2cc7a70146104b5575f80fd5b80638da5cb5b116100fa5780638da5cb5b146103ee578063909a6ac01461043257806395d89b4114610446578063973142971461044e578063a9059cbb14610461575f80fd5b806370a08231146103a0578063715018a6146103d457806371717c18146103dc5780637ee3779a146103e6575f80fd5b8063313ce567116101ab5780635507f3d11161017b5780635507f3d1146103365780635d16225d146103405780635eb995141461035357806362431a6514610366578063656900381461038d575f80fd5b8063313ce567146102c057806335cac159146102f45780634213cf781461031b5780634511243e14610323575f80fd5b806315beb59f116101f157806315beb59f1461027d57806318160ddd1461028657806323b872dd1461028e578063254ac160146102a15780632b0d8f18146102ab575f80fd5b806302a30c7d1461022257806306fdde031461023f5780630733c8c814610254578063095ea7b31461026a575b5f80fd5b61022a610506565b60405190151581526020015b60405180910390f35b61024761051d565b60405161023691906136ec565b61025c6105dd565b604051908152602001610236565b61022a610278366004613722565b6105f1565b61025c6105dc81565b61025c61060a565b61022a61029c36600461374c565b610625565b61025c6201fbd081565b6102be6102b936600461378a565b61064a565b005b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf626223005460405160ff9091168152602001610236565b61025c7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b61025c61074c565b6102be61033136600461378a565b61075d565b61025c6205302081565b6102be61034e3660046137a5565b61084c565b6102be6103613660046137d4565b61085a565b61025c7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf6262230081565b6102be61039b3660046137eb565b61086e565b61025c6103ae36600461378a565b6001600160a01b03165f9081525f8051602061470c833981519152602052604090205490565b6102be610878565b61025c6205573081565b61022a61088b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610236565b61025c5f8051602061472c83398151915281565b6102476108a2565b61022a61045c36600461378a565b6108e0565b61022a61046f366004613722565b6108f9565b6102be610482366004613823565b610906565b61041a610acd565b6102be61049d366004613839565b610aea565b6102be6104b03660046139f3565b610ca7565b61025c610db9565b61025c6104cb366004613adc565b610dce565b61025c610e17565b61025c610e2b565b6102be6104ee36600461378a565b610e3f565b61025c6105013660046137d4565b610e79565b5f80610510610e8f565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f8051602061470c8339815191529161055b90613b13565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613b13565b80156105d25780601f106105a9576101008083540402835291602001916105d2565b820191905f5260205f20905b8154815290600101906020018083116105b557829003601f168201915b505050505091505090565b5f806105e7610e8f565b6003015492915050565b5f336105fe818585610eb3565b60019150505b92915050565b5f805f8051602061470c8339815191525b6002015492915050565b5f33610632858285610ec5565b61063d858585610f22565b60019150505b9392505050565b5f8051602061472c833981519152610660610f7f565b6001600160a01b03821661068f5760405162461bcd60e51b815260040161068690613b45565b60405180910390fd5b6106998183610f87565b156106fc5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610686565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f80610756610e8f565b5492915050565b5f8051602061472c833981519152610773610f7f565b6001600160a01b0382166107995760405162461bcd60e51b815260040161068690613b45565b6107a38183610f87565b6108015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610686565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6108568282610fa8565b5050565b610862610f7f565b61086b81611030565b50565b61085682826111c8565b610880611250565b6108895f6112ab565b565b5f80610895610e8f565b6004015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061470c8339815191529161055b90613b13565b5f5f8051602061472c8339815191526106438184610f87565b5f336105fe818585610f22565b5f61090f610e8f565b6006810154909150610100900460ff161561096c5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c72656164792072656769737465726564006044820152606401610686565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a01529151909316828601528651808303909501855260809091019095528082019290925291929091610a01906109f79087018761378a565b866020013561131b565b6040805160c0810182526001870154815260028701546001600160a01b031660208083019190915282518084018452939450610ac5939192830191908190610a4b908b018b61378a565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f5b604051908082528060200260200182016040528015610a97578160200160208202803683370190505b50815260200184604051602001610aae9190613ba7565b604051602081830303815290604052815250611363565b505050505050565b5f80610ad7610e8f565b600201546001600160a01b031692915050565b610af261147e565b5f5f8051602061472c83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190613be9565b1015610be85760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610686565b610bf28133610f87565b15610c585760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610686565b610c98858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506114c892505050565b50610ca16116df565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ceb5750825b90505f826001600160401b03166001148015610d065750303b155b905081158015610d14575080155b15610d325760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d5c57845460ff60401b1916600160401b1785555b610d6889898989611709565b8315610dae57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f805f8051602061472c83398151915261061b565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f80610e21610e8f565b6001015492915050565b5f80610e35610e8f565b6005015492915050565b610e47611250565b6001600160a01b038116610e7057604051631e4fbdf760e01b81525f6004820152602401610686565b61086b816112ab565b5f6005610e8783601f613c14565b901c92915050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b610ec08383836001611759565b505050565b5f610ed08484610dce565b90505f198114610ca15781811015610f1457604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610686565b610ca184848484035f611759565b6001600160a01b038316610f4b57604051634b637e8f60e11b81525f6004820152602401610686565b6001600160a01b038216610f745760405163ec442f0560e01b81525f6004820152602401610686565b610ec083838361183c565b610889611250565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75008054600114610fea5760405162461bcd60e51b815260040161068690613c27565b600281555f610ff7610e8f565b905061100284611975565b600181015484350361101d576110188484611a60565b611027565b6110278484611be4565b50600190555050565b5f8051602061472c83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015611084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190613be9565b60028301549091508184111561111a5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610686565b80841161118f5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610686565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500805460011461120a5760405162461bcd60e51b815260040161068690613c27565b600281555f611217610e8f565b905061122284611daf565b600181015484350361123e576112388484611fe9565b50611248565b61123884846121f8565b600190555050565b336112827f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108895760405163118cdaa760e01b8152336004820152602401610686565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f815f0361132a57505f610604565b306001600160a01b0384160361135857611346335b3084610ec5565b611351333084610f22565b5080610604565b610643833384612494565b5f8061136d6125f7565b60408401516020015190915015611412576040830151516001600160a01b03166113ef5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610686565b604083015160208101519051611412916001600160a01b039091169083906126e7565b604051630624488560e41b81526001600160a01b0382169063624488509061143e908690600401613c6b565b6020604051808303815f875af115801561145a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106439190613be9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016114c257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6114d1610e8f565b9050806001015484146115385760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b6064820152608401610686565b60028101546001600160a01b038481169116146115aa5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b6064820152608401610686565b5f828060200190518101906115bf9190613d64565b6006830154909150610100900460ff1615806115e05750600682015460ff16155b156115f75760068201805461ffff19166101011790555b60018151600481111561160c5761160c613b93565b03611643575f816020015180602001905181019061162a9190613dec565b905061163d815f0151826020015161276e565b506116d8565b60028151600481111561165857611658613b93565b03611686575f81602001518060200190518101906116769190613e24565b905061163d8182608001516127bb565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b6064820152608401610686565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b611711612914565b61171b838361295d565b611726845f8361296f565b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf62622300805460ff191660ff8316179055610ca1565b5f8051602061470c8339815191526001600160a01b0385166117905760405163e602df0560e01b81525f6004820152602401610686565b6001600160a01b0384166117b957604051634a1406b160e11b81525f6004820152602401610686565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156116d857836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161182d91815260200190565b60405180910390a35050505050565b5f8051602061470c8339815191526001600160a01b0384166118765781816002015f82825461186b9190613c14565b909155506118e69050565b6001600160a01b0384165f90815260208290526040902054828110156118c85760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610686565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611904576002810180548390039055611922565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196791815260200190565b60405180910390a350505050565b5f611986606083016040840161378a565b6001600160a01b0316036119e85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b6064820152608401610686565b5f8160c0013511611a0b5760405162461bcd60e51b815260040161068690613eee565b8035611a295760405162461bcd60e51b815260040161068690613f32565b5f611a3a604083016020840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260040161068690613f7d565b5f611a69610e8f565b9050611a99611a7e604085016020860161378a565b60a0850135611a94610100870160e0880161378a565b6129a0565b5f611abd83611aae608087016060880161378a565b86608001358760a00135612a9d565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190611af4919061378a565b6001600160a01b0316815260200187815250604051602001611b169190613fda565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611b6e60808c0160608d0161378a565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610a6e565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528888604051611bd4929190613ffa565b60405180910390a3505050505050565b5f611bed610e8f565b9050611c1a8335611c04604086016020870161378a565b611c15610100870160e0880161378a565b612b60565b5f611c2f83611aae608087016060880161378a565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191611c68918b01908b0161378a565b6001600160a01b03168152602001611c8660608a0160408b0161378a565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001611cc06101008a0160e08b0161378a565b6001600160a01b03169052604051611d309190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611d8860808c0160608d0161378a565b6001600160a01b03168152602090810188905290825262053020908201526040015f610a6e565b8035611dcd5760405162461bcd60e51b815260040161068690613f32565b5f611dde604083016020840161378a565b6001600160a01b031603611e045760405162461bcd60e51b815260040161068690613f7d565b5f611e15606083016040840161378a565b6001600160a01b031603611e805760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b6064820152608401610686565b5f816080013511611ea35760405162461bcd60e51b815260040161068690613eee565b5f8160a0013511611f045760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b6064820152608401610686565b80608001358160a0013510611f6c5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b6064820152608401610686565b5f611f7e610100830160e0840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b6064820152608401610686565b5f611ff2610e8f565b905061201d612007604085016020860161378a565b610140850135611a9460e0870160c0880161378a565b5f612045836120346101208701610100880161378a565b866101200135876101400135612a9d565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016120893390565b6001600160a01b031681526020016120a760608a0160408b0161378a565b6001600160a01b03168152602081018890526040016120c960608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161211d6101008a0160e08b0161378a565b6001600160a01b0316905260405161213891906020016140db565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f926121ba92820190806121926101208c016101008d0161378a565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610a6e565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168888604051611bd49291906141e2565b5f612201610e8f565b90506122288335612218604086016020870161378a565b611c1560e0870160c0880161378a565b5f61223f836120346101208701610100880161378a565b6040805180820190915291945091505f90806004815260200160405180610160016040528061226b3390565b6001600160a01b03168152602001885f01358152602001886020016020810190612295919061378a565b6001600160a01b031681526020016122b360608a0160408b0161378a565b6001600160a01b03168152602081018890526040016122d560608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016123296101008a0160e08b0161378a565b6001600160a01b031681526080890135602082015260400161235160e08a0160c08b0161378a565b6001600160a01b031681526101408901356020918201526040516123769291016142f0565b60408051601f19818403018152919052905290505f6105dc6123a561239e6060890189614099565b9050610e79565b6123af91906143cd565b6123bc9062055730613c14565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f9261244592820190806124066101208d016101008e0161378a565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610aae91889101613ba7565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1689896040516124839291906141e2565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156124da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124fe9190613be9565b90506125156001600160a01b038616853086612bfe565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061257d9190613be9565b90508181116125e35760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610686565b6125ed82826143e4565b9695505050505050565b5f8051602061472c83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612651573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061267591906143f7565b90506126818282610f87565b156106045760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610686565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127589190613be9565b9050610ca184846127698585613c14565b612c65565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b826040516127a991815260200190565b60405180910390a26108568282612cf4565b6127c53082612cf4565b6127d430836060015183610eb3565b5f825f01518360200151846040015130858760a001516040516024016127ff96959493929190614412565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c084015160608501519192505f91612843919084612d28565b90505f612854308660600151610dce565b90506128653086606001515f610eb3565b81156128b75784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516128aa91815260200190565b60405180910390a26128ff565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb0856040516128f691815260200190565b60405180910390a25b80156116d8576116d8308660e0015183610f22565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661088957604051631afcd79f60e31b815260040160405180910390fd5b612965612914565b6108568282612d3d565b612977612914565b61298d835f015184602001518560400151612d8d565b612995612da8565b610ec0838383612db8565b5f6129a9610e8f565b60028101549091506001600160a01b038581169116146129db5760405162461bcd60e51b815260040161068690614452565b8215612a355760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b6064820152608401610686565b6001600160a01b03821615610ca15760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b6064820152608401610686565b5f805f612aa8610e8f565b9050612ab3876130dc565b9650612abf868661131b565b60038201546004830154919650612ad99160ff16866130f4565b60038201546004830154612af1919060ff168a6130f4565b11612b535760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b6064820152608401610686565b5094959294509192505050565b5f612b69610e8f565b80549091508403612b9c57306001600160a01b03841603612b9c5760405162461bcd60e51b815260040161068690614452565b6001600160a01b038216610ca15760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b6064820152608401610686565b6040516001600160a01b038481166024830152838116604483015260648201839052610ca19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613101565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612cb68482613162565b610ca1576040516001600160a01b0384811660248301525f6044830152612cea91869182169063095ea7b390606401612c33565b610ca18482613101565b6001600160a01b038216612d1d5760405163ec442f0560e01b81525f6004820152602401610686565b6108565f838361183c565b5f612d35845f8585613203565b949350505050565b612d45612914565b5f8051602061470c8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03612d7e84826144f3565b5060048101610ca183826144f3565b612d95612914565b612d9f83826132d3565b610ec0826132f5565b612db0612914565b610889613306565b612dc0612914565b5f612dc9610e8f565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e329190613be9565b81556060840151612e985760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b6064820152608401610686565b8054606085015103612f125760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d6500000000006064820152608401610686565b60808401516001600160a01b0316612f785760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b6064820152608401610686565b60128460a0015160ff161115612fe25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b6064820152608401610686565b60128260ff1611156130425760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b6064820152608401610686565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b918616919091021790556130be908361332d565b60048301805460ff1916911515919091179055600390910155505050565b5f6130e63361133f565b6130f03383613377565b5090565b5f612d358484845f6133ab565b5f6131156001600160a01b038416836133d2565b905080515f1415801561313957508080602001905181019061313791906145ae565b155b15610ec057604051635274afe760e01b81526001600160a01b0384166004820152602401610686565b5f805f846001600160a01b03168460405161317d91906145cd565b5f604051808303815f865af19150503d805f81146131b6576040519150601f19603f3d011682016040523d82523d5f602084013e6131bb565b606091505b50915091508180156131e55750805115806131e55750808060200190518101906131e591906145ae565b80156131fa57505f856001600160a01b03163b115b95945050505050565b5f845a10156132545760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e742067617300000000006044820152606401610686565b834710156132a45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c75650000006044820152606401610686565b826001600160a01b03163b5f036132bc57505f612d35565b5f805f84516020860188888bf19695505050505050565b6132db612914565b6132e36133df565b6132eb6133ef565b61085682826133f7565b6132fd612914565b61086b8161357b565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500611702565b5f8060ff8085169084161181816133505761334885876145e8565b60ff1661335e565b61335a86866145e8565b60ff165b61336990600a6146e1565b9350909150505b9250929050565b6001600160a01b0382166133a057604051634b637e8f60e11b81525f6004820152602401610686565b610856825f8361183c565b5f811515841515036133c8576133c185846143cd565b9050612d35565b6131fa85846146ec565b606061064383835f613583565b6133e7612914565b610889613612565b610889612914565b6133ff612914565b6001600160a01b03821661347b5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f7274657220726567697374727920616464726573730000000000000000006064820152608401610686565b5f5f8051602061472c83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f19190613be9565b116135595760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b6064820152608401610686565b81546001600160a01b0319166001600160a01b038216178255610ca183611030565b610e47612914565b6060814710156135a85760405163cd78605960e01b8152306004820152602401610686565b5f80856001600160a01b031684866040516135c391906145cd565b5f6040518083038185875af1925050503d805f81146135fd576040519150601f19603f3d011682016040523d82523d5f602084013e613602565b606091505b50915091506125ed86838361361a565b6116df612914565b60608261362f5761362a82613676565b610643565b815115801561364657506001600160a01b0384163b155b1561366f57604051639996b31560e01b81526001600160a01b0385166004820152602401610686565b5080610643565b8051156136865780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b838110156136b95781810151838201526020016136a1565b50505f910152565b5f81518084526136d881602086016020860161369f565b601f01601f19169290920160200192915050565b602081525f61064360208301846136c1565b6001600160a01b038116811461086b575f80fd5b803561371d816136fe565b919050565b5f8060408385031215613733575f80fd5b823561373e816136fe565b946020939093013593505050565b5f805f6060848603121561375e575f80fd5b8335613769816136fe565b92506020840135613779816136fe565b929592945050506040919091013590565b5f6020828403121561379a575f80fd5b8135610643816136fe565b5f808284036101208112156137b8575f80fd5b610100808212156137c7575f80fd5b9395938601359450505050565b5f602082840312156137e4575f80fd5b5035919050565b5f80604083850312156137fc575f80fd5b82356001600160401b03811115613811575f80fd5b8301610160818603121561373e575f80fd5b5f60408284031215613833575f80fd5b50919050565b5f805f806060858703121561384c575f80fd5b84359350602085013561385e816136fe565b925060408501356001600160401b0380821115613879575f80fd5b818701915087601f83011261388c575f80fd5b81358181111561389a575f80fd5b8860208285010111156138ab575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156138f0576138f06138ba565b60405290565b604080519081016001600160401b03811182821017156138f0576138f06138ba565b60405161010081016001600160401b03811182821017156138f0576138f06138ba565b604051601f8201601f191681016001600160401b0381118282101715613963576139636138ba565b604052919050565b803560ff8116811461371d575f80fd5b5f6001600160401b03821115613993576139936138ba565b50601f01601f191660200190565b5f82601f8301126139b0575f80fd5b81356139c36139be8261397b565b61393b565b8181528460208386010111156139d7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215613a08575f80fd5b60c0811215613a15575f80fd5b50613a1e6138ce565b8535613a29816136fe565b81526020860135613a39816136fe565b8060208301525060408601356040820152606086013560608201526080860135613a62816136fe565b6080820152613a7360a0870161396b565b60a0820152935060c08501356001600160401b0380821115613a93575f80fd5b613a9f888389016139a1565b945060e0870135915080821115613ab4575f80fd5b50613ac1878288016139a1565b925050613ad1610100860161396b565b905092959194509250565b5f8060408385031215613aed575f80fd5b8235613af8816136fe565b91506020830135613b08816136fe565b809150509250929050565b600181811c90821680613b2757607f821691505b60208210810361383357634e487b7160e01b5f52602260045260245ffd5b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b602081525f825160058110613bca57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612d3560608401826136c1565b5f60208284031215613bf9575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561060457610604613c00565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015613cf857845183168252938501936001939093019290850190613cd6565b5060a0880151878203601f190160e08901529450613d1681866136c1565b98975050505050505050565b5f82601f830112613d31575f80fd5b8151613d3f6139be8261397b565b818152846020838601011115613d53575f80fd5b612d3582602083016020870161369f565b5f60208284031215613d74575f80fd5b81516001600160401b0380821115613d8a575f80fd5b9083019060408286031215613d9d575f80fd5b613da56138f6565b825160058110613db3575f80fd5b8152602083015182811115613dc6575f80fd5b613dd287828601613d22565b60208301525095945050505050565b805161371d816136fe565b5f60408284031215613dfc575f80fd5b613e046138f6565b8251613e0f816136fe565b81526020928301519281019290925250919050565b5f60208284031215613e34575f80fd5b81516001600160401b0380821115613e4a575f80fd5b908301906101008286031215613e5e575f80fd5b613e66613918565b82518152613e7660208401613de1565b6020820152613e8760408401613de1565b6040820152613e9860608401613de1565b60608201526080830151608082015260a083015182811115613eb8575f80fd5b613ec487828601613d22565b60a08301525060c083015160c0820152613ee060e08401613de1565b60e082015295945050505050565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b81516001600160a01b031681526020808301519082015260408101610604565b8235815261012081016020840135614011816136fe565b6001600160a01b039081166020840152604085013590614030826136fe565b16604083015261404260608501613712565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c083015261407c60e08501613712565b6001600160a01b031660e083015261010090910191909152919050565b5f808335601e198436030181126140ae575f80fd5b8301803591506001600160401b038211156140c7575f80fd5b602001915036819003821315613370575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161412360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261414a6101208501836136c1565b915060c085015160e085015260e085015161416f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261418e575f80fd5b83016020810192503590506001600160401b038111156141ac575f80fd5b803603821315613370575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6141fa60208501613712565b6001600160a01b0316606083015261421460408501613712565b6001600160a01b0316608083015261422f6060850185614179565b6101608060a08601526142476101a0860183856141ba565b9250608087013560c086015260a087013560e086015261426960c08801613712565b9150610100614282818701846001600160a01b03169052565b61428e60e08901613712565b92506101206142a7818801856001600160a01b03169052565b6142b2828a01613712565b935061014091506142cd828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b6020815261430a6020820183516001600160a01b03169052565b602082015160408201525f604083015161432f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c085015261436b6101808501836136c1565b915060c085015160e085015260e0850151610100614393818701836001600160a01b03169052565b8601516101208681019190915286015190506101406143bc818701836001600160a01b03169052565b959095015193019290925250919050565b808202811582820484141761060457610604613c00565b8181038181111561060457610604613c00565b5f60208284031215614407575f80fd5b8151610643816136fe565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f90613d16908301846136c1565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f821115610ec057805f5260205f20601f840160051c810160208510156144d45750805b601f840160051c820191505b818110156116d8575f81556001016144e0565b81516001600160401b0381111561450c5761450c6138ba565b6145208161451a8454613b13565b846144af565b602080601f831160018114614553575f841561453c5750858301515b5f19600386901b1c1916600185901b178555610ac5565b5f85815260208120601f198616915b8281101561458157888601518255948401946001909101908401614562565b508582101561459e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156145be575f80fd5b81518015158114610643575f80fd5b5f82516145de81846020870161369f565b9190910192915050565b60ff828116828216039081111561060457610604613c00565b600181815b8085111561463b57815f190482111561462157614621613c00565b8085161561462e57918102915b93841c9390800290614606565b509250929050565b5f8261465157506001610604565b8161465d57505f610604565b8160018114614673576002811461467d57614699565b6001915050610604565b60ff84111561468e5761468e613c00565b50506001821b610604565b5060208310610133831016604e8410600b84101617156146bc575081810a610604565b6146c68383614601565b805f19048211156146d9576146d9613c00565b029392505050565b5f6106438383614643565b5f8261470657634e487b7160e01b5f52601260045260245ffd5b50049056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a264697066735822122075e5c3c72181a26547917c5ec35ed389afc6bfee55fcd464aa42390548718c8a64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // ERC20TokenRemoteABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemoteUpgradeable/ERC20TokenRemoteUpgradeable.go b/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemoteUpgradeable/ERC20TokenRemoteUpgradeable.go index 1e4b5b8ab..920baf74d 100644 --- a/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemoteUpgradeable/ERC20TokenRemoteUpgradeable.go +++ b/abi-bindings/go/ictt/TokenRemote/ERC20TokenRemoteUpgradeable/ERC20TokenRemoteUpgradeable.go @@ -75,7 +75,7 @@ type TokenRemoteSettings struct { // ERC20TokenRemoteUpgradeableMetaData contains all meta data concerning the ERC20TokenRemoteUpgradeable contract. var ERC20TokenRemoteUpgradeableMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_GAS_PER_WORD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_SEND_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REGISTER_REMOTE_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"payloadSize\",\"type\":\"uint256\"}],\"name\":\"calculateNumWords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInitialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIsCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMultiplyOnRemote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenHomeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenHomeAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenHomeDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structTokenRemoteSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"registerWithHome\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040516148ce3803806148ce83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6147818061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061021e575f3560e01c806370a082311161012a578063b8a46d02116100b4578063dd62ed3e11610079578063dd62ed3e146104bd578063e0fd9cb8146104d0578063ef793e2a146104d8578063f2fde38b146104e0578063f3f981d8146104f3575f80fd5b8063b8a46d0214610474578063c3cd692714610487578063c868efaa1461048f578063c9fe4ddf146104a2578063d2cc7a70146104b5575f80fd5b80638da5cb5b116100fa5780638da5cb5b146103ee578063909a6ac01461043257806395d89b4114610446578063973142971461044e578063a9059cbb14610461575f80fd5b806370a08231146103a0578063715018a6146103d457806371717c18146103dc5780637ee3779a146103e6575f80fd5b8063313ce567116101ab5780635507f3d11161017b5780635507f3d1146103365780635d16225d146103405780635eb995141461035357806362431a6514610366578063656900381461038d575f80fd5b8063313ce567146102c057806335cac159146102f45780634213cf781461031b5780634511243e14610323575f80fd5b806315beb59f116101f157806315beb59f1461027d57806318160ddd1461028657806323b872dd1461028e578063254ac160146102a15780632b0d8f18146102ab575f80fd5b806302a30c7d1461022257806306fdde031461023f5780630733c8c814610254578063095ea7b31461026a575b5f80fd5b61022a610506565b60405190151581526020015b60405180910390f35b61024761051d565b60405161023691906136ec565b61025c6105dd565b604051908152602001610236565b61022a610278366004613722565b6105f1565b61025c6105dc81565b61025c61060a565b61022a61029c36600461374c565b610625565b61025c6201fbd081565b6102be6102b936600461378a565b61064a565b005b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf626223005460405160ff9091168152602001610236565b61025c7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b61025c61074c565b6102be61033136600461378a565b61075d565b61025c6205302081565b6102be61034e3660046137a5565b61084c565b6102be6103613660046137d4565b61085a565b61025c7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf6262230081565b6102be61039b3660046137eb565b61086e565b61025c6103ae36600461378a565b6001600160a01b03165f9081525f8051602061470c833981519152602052604090205490565b6102be610878565b61025c6205573081565b61022a61088b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610236565b61025c5f8051602061472c83398151915281565b6102476108a2565b61022a61045c36600461378a565b6108e0565b61022a61046f366004613722565b6108f9565b6102be610482366004613823565b610906565b61041a610acd565b6102be61049d366004613839565b610aea565b6102be6104b03660046139f3565b610ca7565b61025c610db9565b61025c6104cb366004613adc565b610dce565b61025c610e17565b61025c610e2b565b6102be6104ee36600461378a565b610e3f565b61025c6105013660046137d4565b610e79565b5f80610510610e8f565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f8051602061470c8339815191529161055b90613b13565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613b13565b80156105d25780601f106105a9576101008083540402835291602001916105d2565b820191905f5260205f20905b8154815290600101906020018083116105b557829003601f168201915b505050505091505090565b5f806105e7610e8f565b6003015492915050565b5f336105fe818585610eb3565b60019150505b92915050565b5f805f8051602061470c8339815191525b6002015492915050565b5f33610632858285610ec5565b61063d858585610f22565b60019150505b9392505050565b5f8051602061472c833981519152610660610f7f565b6001600160a01b03821661068f5760405162461bcd60e51b815260040161068690613b45565b60405180910390fd5b6106998183610f87565b156106fc5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610686565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f80610756610e8f565b5492915050565b5f8051602061472c833981519152610773610f7f565b6001600160a01b0382166107995760405162461bcd60e51b815260040161068690613b45565b6107a38183610f87565b6108015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610686565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6108568282610fa8565b5050565b610862610f7f565b61086b81611030565b50565b61085682826111c8565b610880611250565b6108895f6112ab565b565b5f80610895610e8f565b6004015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061470c8339815191529161055b90613b13565b5f5f8051602061472c8339815191526106438184610f87565b5f336105fe818585610f22565b5f61090f610e8f565b6006810154909150610100900460ff161561096c5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c72656164792072656769737465726564006044820152606401610686565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a01529151909316828601528651808303909501855260809091019095528082019290925291929091610a01906109f79087018761378a565b866020013561131b565b6040805160c0810182526001870154815260028701546001600160a01b031660208083019190915282518084018452939450610ac5939192830191908190610a4b908b018b61378a565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f5b604051908082528060200260200182016040528015610a97578160200160208202803683370190505b50815260200184604051602001610aae9190613ba7565b604051602081830303815290604052815250611363565b505050505050565b5f80610ad7610e8f565b600201546001600160a01b031692915050565b610af261147e565b5f5f8051602061472c83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190613be9565b1015610be85760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610686565b610bf28133610f87565b15610c585760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610686565b610c98858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506114c892505050565b50610ca16116df565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ceb5750825b90505f826001600160401b03166001148015610d065750303b155b905081158015610d14575080155b15610d325760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d5c57845460ff60401b1916600160401b1785555b610d6889898989611709565b8315610dae57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f805f8051602061472c83398151915261061b565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f80610e21610e8f565b6001015492915050565b5f80610e35610e8f565b6005015492915050565b610e47611250565b6001600160a01b038116610e7057604051631e4fbdf760e01b81525f6004820152602401610686565b61086b816112ab565b5f6005610e8783601f613c14565b901c92915050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b610ec08383836001611759565b505050565b5f610ed08484610dce565b90505f198114610ca15781811015610f1457604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610686565b610ca184848484035f611759565b6001600160a01b038316610f4b57604051634b637e8f60e11b81525f6004820152602401610686565b6001600160a01b038216610f745760405163ec442f0560e01b81525f6004820152602401610686565b610ec083838361183c565b610889611250565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75008054600114610fea5760405162461bcd60e51b815260040161068690613c27565b600281555f610ff7610e8f565b905061100284611975565b600181015484350361101d576110188484611a60565b611027565b6110278484611be4565b50600190555050565b5f8051602061472c83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015611084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190613be9565b60028301549091508184111561111a5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610686565b80841161118f5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610686565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500805460011461120a5760405162461bcd60e51b815260040161068690613c27565b600281555f611217610e8f565b905061122284611daf565b600181015484350361123e576112388484611fe9565b50611248565b61123884846121f8565b600190555050565b336112827f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108895760405163118cdaa760e01b8152336004820152602401610686565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f815f0361132a57505f610604565b306001600160a01b0384160361135857611346335b3084610ec5565b611351333084610f22565b5080610604565b610643833384612494565b5f8061136d6125f7565b60408401516020015190915015611412576040830151516001600160a01b03166113ef5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610686565b604083015160208101519051611412916001600160a01b039091169083906126e7565b604051630624488560e41b81526001600160a01b0382169063624488509061143e908690600401613c6b565b6020604051808303815f875af115801561145a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106439190613be9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016114c257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6114d1610e8f565b9050806001015484146115385760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b6064820152608401610686565b60028101546001600160a01b038481169116146115aa5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b6064820152608401610686565b5f828060200190518101906115bf9190613d64565b6006830154909150610100900460ff1615806115e05750600682015460ff16155b156115f75760068201805461ffff19166101011790555b60018151600481111561160c5761160c613b93565b03611643575f816020015180602001905181019061162a9190613dec565b905061163d815f0151826020015161276e565b506116d8565b60028151600481111561165857611658613b93565b03611686575f81602001518060200190518101906116769190613e24565b905061163d8182608001516127bb565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b6064820152608401610686565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b611711612914565b61171b838361295d565b611726845f8361296f565b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf62622300805460ff191660ff8316179055610ca1565b5f8051602061470c8339815191526001600160a01b0385166117905760405163e602df0560e01b81525f6004820152602401610686565b6001600160a01b0384166117b957604051634a1406b160e11b81525f6004820152602401610686565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156116d857836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161182d91815260200190565b60405180910390a35050505050565b5f8051602061470c8339815191526001600160a01b0384166118765781816002015f82825461186b9190613c14565b909155506118e69050565b6001600160a01b0384165f90815260208290526040902054828110156118c85760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610686565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611904576002810180548390039055611922565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196791815260200190565b60405180910390a350505050565b5f611986606083016040840161378a565b6001600160a01b0316036119e85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b6064820152608401610686565b5f8160c0013511611a0b5760405162461bcd60e51b815260040161068690613eee565b8035611a295760405162461bcd60e51b815260040161068690613f32565b5f611a3a604083016020840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260040161068690613f7d565b5f611a69610e8f565b9050611a99611a7e604085016020860161378a565b60a0850135611a94610100870160e0880161378a565b6129a0565b5f611abd83611aae608087016060880161378a565b86608001358760a00135612a9d565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190611af4919061378a565b6001600160a01b0316815260200187815250604051602001611b169190613fda565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611b6e60808c0160608d0161378a565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610a6e565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528888604051611bd4929190613ffa565b60405180910390a3505050505050565b5f611bed610e8f565b9050611c1a8335611c04604086016020870161378a565b611c15610100870160e0880161378a565b612b60565b5f611c2f83611aae608087016060880161378a565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191611c68918b01908b0161378a565b6001600160a01b03168152602001611c8660608a0160408b0161378a565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001611cc06101008a0160e08b0161378a565b6001600160a01b03169052604051611d309190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611d8860808c0160608d0161378a565b6001600160a01b03168152602090810188905290825262053020908201526040015f610a6e565b8035611dcd5760405162461bcd60e51b815260040161068690613f32565b5f611dde604083016020840161378a565b6001600160a01b031603611e045760405162461bcd60e51b815260040161068690613f7d565b5f611e15606083016040840161378a565b6001600160a01b031603611e805760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b6064820152608401610686565b5f816080013511611ea35760405162461bcd60e51b815260040161068690613eee565b5f8160a0013511611f045760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b6064820152608401610686565b80608001358160a0013510611f6c5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b6064820152608401610686565b5f611f7e610100830160e0840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b6064820152608401610686565b5f611ff2610e8f565b905061201d612007604085016020860161378a565b610140850135611a9460e0870160c0880161378a565b5f612045836120346101208701610100880161378a565b866101200135876101400135612a9d565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016120893390565b6001600160a01b031681526020016120a760608a0160408b0161378a565b6001600160a01b03168152602081018890526040016120c960608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161211d6101008a0160e08b0161378a565b6001600160a01b0316905260405161213891906020016140db565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f926121ba92820190806121926101208c016101008d0161378a565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610a6e565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168888604051611bd49291906141e2565b5f612201610e8f565b90506122288335612218604086016020870161378a565b611c1560e0870160c0880161378a565b5f61223f836120346101208701610100880161378a565b6040805180820190915291945091505f90806004815260200160405180610160016040528061226b3390565b6001600160a01b03168152602001885f01358152602001886020016020810190612295919061378a565b6001600160a01b031681526020016122b360608a0160408b0161378a565b6001600160a01b03168152602081018890526040016122d560608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016123296101008a0160e08b0161378a565b6001600160a01b031681526080890135602082015260400161235160e08a0160c08b0161378a565b6001600160a01b031681526101408901356020918201526040516123769291016142f0565b60408051601f19818403018152919052905290505f6105dc6123a561239e6060890189614099565b9050610e79565b6123af91906143cd565b6123bc9062055730613c14565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f9261244592820190806124066101208d016101008e0161378a565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610aae91889101613ba7565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1689896040516124839291906141e2565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156124da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124fe9190613be9565b90506125156001600160a01b038616853086612bfe565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061257d9190613be9565b90508181116125e35760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610686565b6125ed82826143e4565b9695505050505050565b5f8051602061472c83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612651573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061267591906143f7565b90506126818282610f87565b156106045760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610686565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127589190613be9565b9050610ca184846127698585613c14565b612c65565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b826040516127a991815260200190565b60405180910390a26108568282612cf4565b6127c53082612cf4565b6127d430836060015183610eb3565b5f825f01518360200151846040015130858760a001516040516024016127ff96959493929190614412565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c084015160608501519192505f91612843919084612d28565b90505f612854308660600151610dce565b90506128653086606001515f610eb3565b81156128b75784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516128aa91815260200190565b60405180910390a26128ff565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb0856040516128f691815260200190565b60405180910390a25b80156116d8576116d8308660e0015183610f22565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661088957604051631afcd79f60e31b815260040160405180910390fd5b612965612914565b6108568282612d3d565b612977612914565b61298d835f015184602001518560400151612d8d565b612995612da8565b610ec0838383612db8565b5f6129a9610e8f565b60028101549091506001600160a01b038581169116146129db5760405162461bcd60e51b815260040161068690614452565b8215612a355760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b6064820152608401610686565b6001600160a01b03821615610ca15760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b6064820152608401610686565b5f805f612aa8610e8f565b9050612ab3876130dc565b9650612abf868661131b565b60038201546004830154919650612ad99160ff16866130f4565b60038201546004830154612af1919060ff168a6130f4565b11612b535760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b6064820152608401610686565b5094959294509192505050565b5f612b69610e8f565b80549091508403612b9c57306001600160a01b03841603612b9c5760405162461bcd60e51b815260040161068690614452565b6001600160a01b038216610ca15760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b6064820152608401610686565b6040516001600160a01b038481166024830152838116604483015260648201839052610ca19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613101565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612cb68482613162565b610ca1576040516001600160a01b0384811660248301525f6044830152612cea91869182169063095ea7b390606401612c33565b610ca18482613101565b6001600160a01b038216612d1d5760405163ec442f0560e01b81525f6004820152602401610686565b6108565f838361183c565b5f612d35845f8585613203565b949350505050565b612d45612914565b5f8051602061470c8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03612d7e84826144f3565b5060048101610ca183826144f3565b612d95612914565b612d9f83826132d3565b610ec0826132f5565b612db0612914565b610889613306565b612dc0612914565b5f612dc9610e8f565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e329190613be9565b81556060840151612e985760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b6064820152608401610686565b8054606085015103612f125760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d6500000000006064820152608401610686565b60808401516001600160a01b0316612f785760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b6064820152608401610686565b60128460a0015160ff161115612fe25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b6064820152608401610686565b60128260ff1611156130425760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b6064820152608401610686565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b918616919091021790556130be908361332d565b60048301805460ff1916911515919091179055600390910155505050565b5f6130e63361133f565b6130f03383613377565b5090565b5f612d358484845f6133ab565b5f6131156001600160a01b038416836133d2565b905080515f1415801561313957508080602001905181019061313791906145ae565b155b15610ec057604051635274afe760e01b81526001600160a01b0384166004820152602401610686565b5f805f846001600160a01b03168460405161317d91906145cd565b5f604051808303815f865af19150503d805f81146131b6576040519150601f19603f3d011682016040523d82523d5f602084013e6131bb565b606091505b50915091508180156131e55750805115806131e55750808060200190518101906131e591906145ae565b80156131fa57505f856001600160a01b03163b115b95945050505050565b5f845a10156132545760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e742067617300000000006044820152606401610686565b834710156132a45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c75650000006044820152606401610686565b826001600160a01b03163b5f036132bc57505f612d35565b5f805f84516020860188888bf19695505050505050565b6132db612914565b6132e36133df565b6132eb6133ef565b61085682826133f7565b6132fd612914565b61086b8161357b565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500611702565b5f8060ff8085169084161181816133505761334885876145e8565b60ff1661335e565b61335a86866145e8565b60ff165b61336990600a6146e1565b9350909150505b9250929050565b6001600160a01b0382166133a057604051634b637e8f60e11b81525f6004820152602401610686565b610856825f8361183c565b5f811515841515036133c8576133c185846143cd565b9050612d35565b6131fa85846146ec565b606061064383835f613583565b6133e7612914565b610889613612565b610889612914565b6133ff612914565b6001600160a01b03821661347b5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f7274657220726567697374727920616464726573730000000000000000006064820152608401610686565b5f5f8051602061472c83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f19190613be9565b116135595760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b6064820152608401610686565b81546001600160a01b0319166001600160a01b038216178255610ca183611030565b610e47612914565b6060814710156135a85760405163cd78605960e01b8152306004820152602401610686565b5f80856001600160a01b031684866040516135c391906145cd565b5f6040518083038185875af1925050503d805f81146135fd576040519150601f19603f3d011682016040523d82523d5f602084013e613602565b606091505b50915091506125ed86838361361a565b6116df612914565b60608261362f5761362a82613676565b610643565b815115801561364657506001600160a01b0384163b155b1561366f57604051639996b31560e01b81526001600160a01b0385166004820152602401610686565b5080610643565b8051156136865780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b838110156136b95781810151838201526020016136a1565b50505f910152565b5f81518084526136d881602086016020860161369f565b601f01601f19169290920160200192915050565b602081525f61064360208301846136c1565b6001600160a01b038116811461086b575f80fd5b803561371d816136fe565b919050565b5f8060408385031215613733575f80fd5b823561373e816136fe565b946020939093013593505050565b5f805f6060848603121561375e575f80fd5b8335613769816136fe565b92506020840135613779816136fe565b929592945050506040919091013590565b5f6020828403121561379a575f80fd5b8135610643816136fe565b5f808284036101208112156137b8575f80fd5b610100808212156137c7575f80fd5b9395938601359450505050565b5f602082840312156137e4575f80fd5b5035919050565b5f80604083850312156137fc575f80fd5b82356001600160401b03811115613811575f80fd5b8301610160818603121561373e575f80fd5b5f60408284031215613833575f80fd5b50919050565b5f805f806060858703121561384c575f80fd5b84359350602085013561385e816136fe565b925060408501356001600160401b0380821115613879575f80fd5b818701915087601f83011261388c575f80fd5b81358181111561389a575f80fd5b8860208285010111156138ab575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156138f0576138f06138ba565b60405290565b604080519081016001600160401b03811182821017156138f0576138f06138ba565b60405161010081016001600160401b03811182821017156138f0576138f06138ba565b604051601f8201601f191681016001600160401b0381118282101715613963576139636138ba565b604052919050565b803560ff8116811461371d575f80fd5b5f6001600160401b03821115613993576139936138ba565b50601f01601f191660200190565b5f82601f8301126139b0575f80fd5b81356139c36139be8261397b565b61393b565b8181528460208386010111156139d7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215613a08575f80fd5b60c0811215613a15575f80fd5b50613a1e6138ce565b8535613a29816136fe565b81526020860135613a39816136fe565b8060208301525060408601356040820152606086013560608201526080860135613a62816136fe565b6080820152613a7360a0870161396b565b60a0820152935060c08501356001600160401b0380821115613a93575f80fd5b613a9f888389016139a1565b945060e0870135915080821115613ab4575f80fd5b50613ac1878288016139a1565b925050613ad1610100860161396b565b905092959194509250565b5f8060408385031215613aed575f80fd5b8235613af8816136fe565b91506020830135613b08816136fe565b809150509250929050565b600181811c90821680613b2757607f821691505b60208210810361383357634e487b7160e01b5f52602260045260245ffd5b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b602081525f825160058110613bca57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612d3560608401826136c1565b5f60208284031215613bf9575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561060457610604613c00565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015613cf857845183168252938501936001939093019290850190613cd6565b5060a0880151878203601f190160e08901529450613d1681866136c1565b98975050505050505050565b5f82601f830112613d31575f80fd5b8151613d3f6139be8261397b565b818152846020838601011115613d53575f80fd5b612d3582602083016020870161369f565b5f60208284031215613d74575f80fd5b81516001600160401b0380821115613d8a575f80fd5b9083019060408286031215613d9d575f80fd5b613da56138f6565b825160058110613db3575f80fd5b8152602083015182811115613dc6575f80fd5b613dd287828601613d22565b60208301525095945050505050565b805161371d816136fe565b5f60408284031215613dfc575f80fd5b613e046138f6565b8251613e0f816136fe565b81526020928301519281019290925250919050565b5f60208284031215613e34575f80fd5b81516001600160401b0380821115613e4a575f80fd5b908301906101008286031215613e5e575f80fd5b613e66613918565b82518152613e7660208401613de1565b6020820152613e8760408401613de1565b6040820152613e9860608401613de1565b60608201526080830151608082015260a083015182811115613eb8575f80fd5b613ec487828601613d22565b60a08301525060c083015160c0820152613ee060e08401613de1565b60e082015295945050505050565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b81516001600160a01b031681526020808301519082015260408101610604565b8235815261012081016020840135614011816136fe565b6001600160a01b039081166020840152604085013590614030826136fe565b16604083015261404260608501613712565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c083015261407c60e08501613712565b6001600160a01b031660e083015261010090910191909152919050565b5f808335601e198436030181126140ae575f80fd5b8301803591506001600160401b038211156140c7575f80fd5b602001915036819003821315613370575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161412360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261414a6101208501836136c1565b915060c085015160e085015260e085015161416f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261418e575f80fd5b83016020810192503590506001600160401b038111156141ac575f80fd5b803603821315613370575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6141fa60208501613712565b6001600160a01b0316606083015261421460408501613712565b6001600160a01b0316608083015261422f6060850185614179565b6101608060a08601526142476101a0860183856141ba565b9250608087013560c086015260a087013560e086015261426960c08801613712565b9150610100614282818701846001600160a01b03169052565b61428e60e08901613712565b92506101206142a7818801856001600160a01b03169052565b6142b2828a01613712565b935061014091506142cd828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b6020815261430a6020820183516001600160a01b03169052565b602082015160408201525f604083015161432f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c085015261436b6101808501836136c1565b915060c085015160e085015260e0850151610100614393818701836001600160a01b03169052565b8601516101208681019190915286015190506101406143bc818701836001600160a01b03169052565b959095015193019290925250919050565b808202811582820484141761060457610604613c00565b8181038181111561060457610604613c00565b5f60208284031215614407575f80fd5b8151610643816136fe565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f90613d16908301846136c1565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f821115610ec057805f5260205f20601f840160051c810160208510156144d45750805b601f840160051c820191505b818110156116d8575f81556001016144e0565b81516001600160401b0381111561450c5761450c6138ba565b6145208161451a8454613b13565b846144af565b602080601f831160018114614553575f841561453c5750858301515b5f19600386901b1c1916600185901b178555610ac5565b5f85815260208120601f198616915b8281101561458157888601518255948401946001909101908401614562565b508582101561459e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156145be575f80fd5b81518015158114610643575f80fd5b5f82516145de81846020870161369f565b9190910192915050565b60ff828116828216039081111561060457610604613c00565b600181815b8085111561463b57815f190482111561462157614621613c00565b8085161561462e57918102915b93841c9390800290614606565b509250929050565b5f8261465157506001610604565b8161465d57505f610604565b8160018114614673576002811461467d57614699565b6001915050610604565b60ff84111561468e5761468e613c00565b50506001821b610604565b5060208310610133831016604e8410600b84101617156146bc575081810a610604565b6146c68383614601565b805f19048211156146d9576146d9613c00565b029392505050565b5f6106438383614643565b5f8261470657634e487b7160e01b5f52601260045260245ffd5b50049056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212202897373a11fdf065336791525f4330b70f98486cd71243a11150724c0891f0ca64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040516148ce3803806148ce83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6147818061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061021e575f3560e01c806370a082311161012a578063b8a46d02116100b4578063dd62ed3e11610079578063dd62ed3e146104bd578063e0fd9cb8146104d0578063ef793e2a146104d8578063f2fde38b146104e0578063f3f981d8146104f3575f80fd5b8063b8a46d0214610474578063c3cd692714610487578063c868efaa1461048f578063c9fe4ddf146104a2578063d2cc7a70146104b5575f80fd5b80638da5cb5b116100fa5780638da5cb5b146103ee578063909a6ac01461043257806395d89b4114610446578063973142971461044e578063a9059cbb14610461575f80fd5b806370a08231146103a0578063715018a6146103d457806371717c18146103dc5780637ee3779a146103e6575f80fd5b8063313ce567116101ab5780635507f3d11161017b5780635507f3d1146103365780635d16225d146103405780635eb995141461035357806362431a6514610366578063656900381461038d575f80fd5b8063313ce567146102c057806335cac159146102f45780634213cf781461031b5780634511243e14610323575f80fd5b806315beb59f116101f157806315beb59f1461027d57806318160ddd1461028657806323b872dd1461028e578063254ac160146102a15780632b0d8f18146102ab575f80fd5b806302a30c7d1461022257806306fdde031461023f5780630733c8c814610254578063095ea7b31461026a575b5f80fd5b61022a610506565b60405190151581526020015b60405180910390f35b61024761051d565b60405161023691906136ec565b61025c6105dd565b604051908152602001610236565b61022a610278366004613722565b6105f1565b61025c6105dc81565b61025c61060a565b61022a61029c36600461374c565b610625565b61025c6201fbd081565b6102be6102b936600461378a565b61064a565b005b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf626223005460405160ff9091168152602001610236565b61025c7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b61025c61074c565b6102be61033136600461378a565b61075d565b61025c6205302081565b6102be61034e3660046137a5565b61084c565b6102be6103613660046137d4565b61085a565b61025c7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf6262230081565b6102be61039b3660046137eb565b61086e565b61025c6103ae36600461378a565b6001600160a01b03165f9081525f8051602061470c833981519152602052604090205490565b6102be610878565b61025c6205573081565b61022a61088b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610236565b61025c5f8051602061472c83398151915281565b6102476108a2565b61022a61045c36600461378a565b6108e0565b61022a61046f366004613722565b6108f9565b6102be610482366004613823565b610906565b61041a610acd565b6102be61049d366004613839565b610aea565b6102be6104b03660046139f3565b610ca7565b61025c610db9565b61025c6104cb366004613adc565b610dce565b61025c610e17565b61025c610e2b565b6102be6104ee36600461378a565b610e3f565b61025c6105013660046137d4565b610e79565b5f80610510610e8f565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f8051602061470c8339815191529161055b90613b13565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613b13565b80156105d25780601f106105a9576101008083540402835291602001916105d2565b820191905f5260205f20905b8154815290600101906020018083116105b557829003601f168201915b505050505091505090565b5f806105e7610e8f565b6003015492915050565b5f336105fe818585610eb3565b60019150505b92915050565b5f805f8051602061470c8339815191525b6002015492915050565b5f33610632858285610ec5565b61063d858585610f22565b60019150505b9392505050565b5f8051602061472c833981519152610660610f7f565b6001600160a01b03821661068f5760405162461bcd60e51b815260040161068690613b45565b60405180910390fd5b6106998183610f87565b156106fc5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610686565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f80610756610e8f565b5492915050565b5f8051602061472c833981519152610773610f7f565b6001600160a01b0382166107995760405162461bcd60e51b815260040161068690613b45565b6107a38183610f87565b6108015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610686565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6108568282610fa8565b5050565b610862610f7f565b61086b81611030565b50565b61085682826111c8565b610880611250565b6108895f6112ab565b565b5f80610895610e8f565b6004015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061470c8339815191529161055b90613b13565b5f5f8051602061472c8339815191526106438184610f87565b5f336105fe818585610f22565b5f61090f610e8f565b6006810154909150610100900460ff161561096c5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c72656164792072656769737465726564006044820152606401610686565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a01529151909316828601528651808303909501855260809091019095528082019290925291929091610a01906109f79087018761378a565b866020013561131b565b6040805160c0810182526001870154815260028701546001600160a01b031660208083019190915282518084018452939450610ac5939192830191908190610a4b908b018b61378a565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f5b604051908082528060200260200182016040528015610a97578160200160208202803683370190505b50815260200184604051602001610aae9190613ba7565b604051602081830303815290604052815250611363565b505050505050565b5f80610ad7610e8f565b600201546001600160a01b031692915050565b610af261147e565b5f5f8051602061472c83398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190613be9565b1015610be85760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610686565b610bf28133610f87565b15610c585760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610686565b610c98858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506114c892505050565b50610ca16116df565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ceb5750825b90505f826001600160401b03166001148015610d065750303b155b905081158015610d14575080155b15610d325760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d5c57845460ff60401b1916600160401b1785555b610d6889898989611709565b8315610dae57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f805f8051602061472c83398151915261061b565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f80610e21610e8f565b6001015492915050565b5f80610e35610e8f565b6005015492915050565b610e47611250565b6001600160a01b038116610e7057604051631e4fbdf760e01b81525f6004820152602401610686565b61086b816112ab565b5f6005610e8783601f613c14565b901c92915050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b610ec08383836001611759565b505050565b5f610ed08484610dce565b90505f198114610ca15781811015610f1457604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610686565b610ca184848484035f611759565b6001600160a01b038316610f4b57604051634b637e8f60e11b81525f6004820152602401610686565b6001600160a01b038216610f745760405163ec442f0560e01b81525f6004820152602401610686565b610ec083838361183c565b610889611250565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75008054600114610fea5760405162461bcd60e51b815260040161068690613c27565b600281555f610ff7610e8f565b905061100284611975565b600181015484350361101d576110188484611a60565b611027565b6110278484611be4565b50600190555050565b5f8051602061472c83398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015611084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190613be9565b60028301549091508184111561111a5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610686565b80841161118f5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610686565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500805460011461120a5760405162461bcd60e51b815260040161068690613c27565b600281555f611217610e8f565b905061122284611daf565b600181015484350361123e576112388484611fe9565b50611248565b61123884846121f8565b600190555050565b336112827f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108895760405163118cdaa760e01b8152336004820152602401610686565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f815f0361132a57505f610604565b306001600160a01b0384160361135857611346335b3084610ec5565b611351333084610f22565b5080610604565b610643833384612494565b5f8061136d6125f7565b60408401516020015190915015611412576040830151516001600160a01b03166113ef5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610686565b604083015160208101519051611412916001600160a01b039091169083906126e7565b604051630624488560e41b81526001600160a01b0382169063624488509061143e908690600401613c6b565b6020604051808303815f875af115801561145a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106439190613be9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016114c257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6114d1610e8f565b9050806001015484146115385760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b6064820152608401610686565b60028101546001600160a01b038481169116146115aa5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b6064820152608401610686565b5f828060200190518101906115bf9190613d64565b6006830154909150610100900460ff1615806115e05750600682015460ff16155b156115f75760068201805461ffff19166101011790555b60018151600481111561160c5761160c613b93565b03611643575f816020015180602001905181019061162a9190613dec565b905061163d815f0151826020015161276e565b506116d8565b60028151600481111561165857611658613b93565b03611686575f81602001518060200190518101906116769190613e24565b905061163d8182608001516127bb565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b6064820152608401610686565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b611711612914565b61171b838361295d565b611726845f8361296f565b7f9b9029a3537fcf0e984763da4ac33bbf592a3462819171bf424e91cf62622300805460ff191660ff8316179055610ca1565b5f8051602061470c8339815191526001600160a01b0385166117905760405163e602df0560e01b81525f6004820152602401610686565b6001600160a01b0384166117b957604051634a1406b160e11b81525f6004820152602401610686565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156116d857836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161182d91815260200190565b60405180910390a35050505050565b5f8051602061470c8339815191526001600160a01b0384166118765781816002015f82825461186b9190613c14565b909155506118e69050565b6001600160a01b0384165f90815260208290526040902054828110156118c85760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610686565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611904576002810180548390039055611922565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196791815260200190565b60405180910390a350505050565b5f611986606083016040840161378a565b6001600160a01b0316036119e85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b6064820152608401610686565b5f8160c0013511611a0b5760405162461bcd60e51b815260040161068690613eee565b8035611a295760405162461bcd60e51b815260040161068690613f32565b5f611a3a604083016020840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260040161068690613f7d565b5f611a69610e8f565b9050611a99611a7e604085016020860161378a565b60a0850135611a94610100870160e0880161378a565b6129a0565b5f611abd83611aae608087016060880161378a565b86608001358760a00135612a9d565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190611af4919061378a565b6001600160a01b0316815260200187815250604051602001611b169190613fda565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611b6e60808c0160608d0161378a565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610a6e565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528888604051611bd4929190613ffa565b60405180910390a3505050505050565b5f611bed610e8f565b9050611c1a8335611c04604086016020870161378a565b611c15610100870160e0880161378a565b612b60565b5f611c2f83611aae608087016060880161378a565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191611c68918b01908b0161378a565b6001600160a01b03168152602001611c8660608a0160408b0161378a565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001611cc06101008a0160e08b0161378a565b6001600160a01b03169052604051611d309190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92611b969282019080611d8860808c0160608d0161378a565b6001600160a01b03168152602090810188905290825262053020908201526040015f610a6e565b8035611dcd5760405162461bcd60e51b815260040161068690613f32565b5f611dde604083016020840161378a565b6001600160a01b031603611e045760405162461bcd60e51b815260040161068690613f7d565b5f611e15606083016040840161378a565b6001600160a01b031603611e805760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b6064820152608401610686565b5f816080013511611ea35760405162461bcd60e51b815260040161068690613eee565b5f8160a0013511611f045760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b6064820152608401610686565b80608001358160a0013510611f6c5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b6064820152608401610686565b5f611f7e610100830160e0840161378a565b6001600160a01b03160361086b5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b6064820152608401610686565b5f611ff2610e8f565b905061201d612007604085016020860161378a565b610140850135611a9460e0870160c0880161378a565b5f612045836120346101208701610100880161378a565b866101200135876101400135612a9d565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016120893390565b6001600160a01b031681526020016120a760608a0160408b0161378a565b6001600160a01b03168152602081018890526040016120c960608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161211d6101008a0160e08b0161378a565b6001600160a01b0316905260405161213891906020016140db565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f926121ba92820190806121926101208c016101008d0161378a565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610a6e565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168888604051611bd49291906141e2565b5f612201610e8f565b90506122288335612218604086016020870161378a565b611c1560e0870160c0880161378a565b5f61223f836120346101208701610100880161378a565b6040805180820190915291945091505f90806004815260200160405180610160016040528061226b3390565b6001600160a01b03168152602001885f01358152602001886020016020810190612295919061378a565b6001600160a01b031681526020016122b360608a0160408b0161378a565b6001600160a01b03168152602081018890526040016122d560608a018a614099565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016123296101008a0160e08b0161378a565b6001600160a01b031681526080890135602082015260400161235160e08a0160c08b0161378a565b6001600160a01b031681526101408901356020918201526040516123769291016142f0565b60408051601f19818403018152919052905290505f6105dc6123a561239e6060890189614099565b9050610e79565b6123af91906143cd565b6123bc9062055730613c14565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f9261244592820190806124066101208d016101008e0161378a565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610aae91889101613ba7565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1689896040516124839291906141e2565b60405180910390a350505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156124da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124fe9190613be9565b90506125156001600160a01b038616853086612bfe565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061257d9190613be9565b90508181116125e35760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610686565b6125ed82826143e4565b9695505050505050565b5f8051602061472c83398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612651573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061267591906143f7565b90506126818282610f87565b156106045760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610686565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127589190613be9565b9050610ca184846127698585613c14565b612c65565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b826040516127a991815260200190565b60405180910390a26108568282612cf4565b6127c53082612cf4565b6127d430836060015183610eb3565b5f825f01518360200151846040015130858760a001516040516024016127ff96959493929190614412565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c084015160608501519192505f91612843919084612d28565b90505f612854308660600151610dce565b90506128653086606001515f610eb3565b81156128b75784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff4856040516128aa91815260200190565b60405180910390a26128ff565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb0856040516128f691815260200190565b60405180910390a25b80156116d8576116d8308660e0015183610f22565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661088957604051631afcd79f60e31b815260040160405180910390fd5b612965612914565b6108568282612d3d565b612977612914565b61298d835f015184602001518560400151612d8d565b612995612da8565b610ec0838383612db8565b5f6129a9610e8f565b60028101549091506001600160a01b038581169116146129db5760405162461bcd60e51b815260040161068690614452565b8215612a355760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b6064820152608401610686565b6001600160a01b03821615610ca15760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b6064820152608401610686565b5f805f612aa8610e8f565b9050612ab3876130dc565b9650612abf868661131b565b60038201546004830154919650612ad99160ff16866130f4565b60038201546004830154612af1919060ff168a6130f4565b11612b535760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b6064820152608401610686565b5094959294509192505050565b5f612b69610e8f565b80549091508403612b9c57306001600160a01b03841603612b9c5760405162461bcd60e51b815260040161068690614452565b6001600160a01b038216610ca15760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b6064820152608401610686565b6040516001600160a01b038481166024830152838116604483015260648201839052610ca19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613101565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612cb68482613162565b610ca1576040516001600160a01b0384811660248301525f6044830152612cea91869182169063095ea7b390606401612c33565b610ca18482613101565b6001600160a01b038216612d1d5760405163ec442f0560e01b81525f6004820152602401610686565b6108565f838361183c565b5f612d35845f8585613203565b949350505050565b612d45612914565b5f8051602061470c8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03612d7e84826144f3565b5060048101610ca183826144f3565b612d95612914565b612d9f83826132d3565b610ec0826132f5565b612db0612914565b610889613306565b612dc0612914565b5f612dc9610e8f565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e329190613be9565b81556060840151612e985760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b6064820152608401610686565b8054606085015103612f125760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d6500000000006064820152608401610686565b60808401516001600160a01b0316612f785760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b6064820152608401610686565b60128460a0015160ff161115612fe25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b6064820152608401610686565b60128260ff1611156130425760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b6064820152608401610686565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b918616919091021790556130be908361332d565b60048301805460ff1916911515919091179055600390910155505050565b5f6130e63361133f565b6130f03383613377565b5090565b5f612d358484845f6133ab565b5f6131156001600160a01b038416836133d2565b905080515f1415801561313957508080602001905181019061313791906145ae565b155b15610ec057604051635274afe760e01b81526001600160a01b0384166004820152602401610686565b5f805f846001600160a01b03168460405161317d91906145cd565b5f604051808303815f865af19150503d805f81146131b6576040519150601f19603f3d011682016040523d82523d5f602084013e6131bb565b606091505b50915091508180156131e55750805115806131e55750808060200190518101906131e591906145ae565b80156131fa57505f856001600160a01b03163b115b95945050505050565b5f845a10156132545760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e742067617300000000006044820152606401610686565b834710156132a45760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c75650000006044820152606401610686565b826001600160a01b03163b5f036132bc57505f612d35565b5f805f84516020860188888bf19695505050505050565b6132db612914565b6132e36133df565b6132eb6133ef565b61085682826133f7565b6132fd612914565b61086b8161357b565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c7500611702565b5f8060ff8085169084161181816133505761334885876145e8565b60ff1661335e565b61335a86866145e8565b60ff165b61336990600a6146e1565b9350909150505b9250929050565b6001600160a01b0382166133a057604051634b637e8f60e11b81525f6004820152602401610686565b610856825f8361183c565b5f811515841515036133c8576133c185846143cd565b9050612d35565b6131fa85846146ec565b606061064383835f613583565b6133e7612914565b610889613612565b610889612914565b6133ff612914565b6001600160a01b03821661347b5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f7274657220726567697374727920616464726573730000000000000000006064820152608401610686565b5f5f8051602061472c83398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f19190613be9565b116135595760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b6064820152608401610686565b81546001600160a01b0319166001600160a01b038216178255610ca183611030565b610e47612914565b6060814710156135a85760405163cd78605960e01b8152306004820152602401610686565b5f80856001600160a01b031684866040516135c391906145cd565b5f6040518083038185875af1925050503d805f81146135fd576040519150601f19603f3d011682016040523d82523d5f602084013e613602565b606091505b50915091506125ed86838361361a565b6116df612914565b60608261362f5761362a82613676565b610643565b815115801561364657506001600160a01b0384163b155b1561366f57604051639996b31560e01b81526001600160a01b0385166004820152602401610686565b5080610643565b8051156136865780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b838110156136b95781810151838201526020016136a1565b50505f910152565b5f81518084526136d881602086016020860161369f565b601f01601f19169290920160200192915050565b602081525f61064360208301846136c1565b6001600160a01b038116811461086b575f80fd5b803561371d816136fe565b919050565b5f8060408385031215613733575f80fd5b823561373e816136fe565b946020939093013593505050565b5f805f6060848603121561375e575f80fd5b8335613769816136fe565b92506020840135613779816136fe565b929592945050506040919091013590565b5f6020828403121561379a575f80fd5b8135610643816136fe565b5f808284036101208112156137b8575f80fd5b610100808212156137c7575f80fd5b9395938601359450505050565b5f602082840312156137e4575f80fd5b5035919050565b5f80604083850312156137fc575f80fd5b82356001600160401b03811115613811575f80fd5b8301610160818603121561373e575f80fd5b5f60408284031215613833575f80fd5b50919050565b5f805f806060858703121561384c575f80fd5b84359350602085013561385e816136fe565b925060408501356001600160401b0380821115613879575f80fd5b818701915087601f83011261388c575f80fd5b81358181111561389a575f80fd5b8860208285010111156138ab575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156138f0576138f06138ba565b60405290565b604080519081016001600160401b03811182821017156138f0576138f06138ba565b60405161010081016001600160401b03811182821017156138f0576138f06138ba565b604051601f8201601f191681016001600160401b0381118282101715613963576139636138ba565b604052919050565b803560ff8116811461371d575f80fd5b5f6001600160401b03821115613993576139936138ba565b50601f01601f191660200190565b5f82601f8301126139b0575f80fd5b81356139c36139be8261397b565b61393b565b8181528460208386010111156139d7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215613a08575f80fd5b60c0811215613a15575f80fd5b50613a1e6138ce565b8535613a29816136fe565b81526020860135613a39816136fe565b8060208301525060408601356040820152606086013560608201526080860135613a62816136fe565b6080820152613a7360a0870161396b565b60a0820152935060c08501356001600160401b0380821115613a93575f80fd5b613a9f888389016139a1565b945060e0870135915080821115613ab4575f80fd5b50613ac1878288016139a1565b925050613ad1610100860161396b565b905092959194509250565b5f8060408385031215613aed575f80fd5b8235613af8816136fe565b91506020830135613b08816136fe565b809150509250929050565b600181811c90821680613b2757607f821691505b60208210810361383357634e487b7160e01b5f52602260045260245ffd5b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b602081525f825160058110613bca57634e487b7160e01b5f52602160045260245ffd5b806020840152506020830151604080840152612d3560608401826136c1565b5f60208284031215613bf9575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561060457610604613c00565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b80841015613cf857845183168252938501936001939093019290850190613cd6565b5060a0880151878203601f190160e08901529450613d1681866136c1565b98975050505050505050565b5f82601f830112613d31575f80fd5b8151613d3f6139be8261397b565b818152846020838601011115613d53575f80fd5b612d3582602083016020870161369f565b5f60208284031215613d74575f80fd5b81516001600160401b0380821115613d8a575f80fd5b9083019060408286031215613d9d575f80fd5b613da56138f6565b825160058110613db3575f80fd5b8152602083015182811115613dc6575f80fd5b613dd287828601613d22565b60208301525095945050505050565b805161371d816136fe565b5f60408284031215613dfc575f80fd5b613e046138f6565b8251613e0f816136fe565b81526020928301519281019290925250919050565b5f60208284031215613e34575f80fd5b81516001600160401b0380821115613e4a575f80fd5b908301906101008286031215613e5e575f80fd5b613e66613918565b82518152613e7660208401613de1565b6020820152613e8760408401613de1565b6040820152613e9860608401613de1565b60608201526080830151608082015260a083015182811115613eb8575f80fd5b613ec487828601613d22565b60a08301525060c083015160c0820152613ee060e08401613de1565b60e082015295945050505050565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b81516001600160a01b031681526020808301519082015260408101610604565b8235815261012081016020840135614011816136fe565b6001600160a01b039081166020840152604085013590614030826136fe565b16604083015261404260608501613712565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c083015261407c60e08501613712565b6001600160a01b031660e083015261010090910191909152919050565b5f808335601e198436030181126140ae575f80fd5b8301803591506001600160401b038211156140c7575f80fd5b602001915036819003821315613370575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161412360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261414a6101208501836136c1565b915060c085015160e085015260e085015161416f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261418e575f80fd5b83016020810192503590506001600160401b038111156141ac575f80fd5b803603821315613370575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6141fa60208501613712565b6001600160a01b0316606083015261421460408501613712565b6001600160a01b0316608083015261422f6060850185614179565b6101608060a08601526142476101a0860183856141ba565b9250608087013560c086015260a087013560e086015261426960c08801613712565b9150610100614282818701846001600160a01b03169052565b61428e60e08901613712565b92506101206142a7818801856001600160a01b03169052565b6142b2828a01613712565b935061014091506142cd828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b6020815261430a6020820183516001600160a01b03169052565b602082015160408201525f604083015161432f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c085015261436b6101808501836136c1565b915060c085015160e085015260e0850151610100614393818701836001600160a01b03169052565b8601516101208681019190915286015190506101406143bc818701836001600160a01b03169052565b959095015193019290925250919050565b808202811582820484141761060457610604613c00565b8181038181111561060457610604613c00565b5f60208284031215614407575f80fd5b8151610643816136fe565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190525f90613d16908301846136c1565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f821115610ec057805f5260205f20601f840160051c810160208510156144d45750805b601f840160051c820191505b818110156116d8575f81556001016144e0565b81516001600160401b0381111561450c5761450c6138ba565b6145208161451a8454613b13565b846144af565b602080601f831160018114614553575f841561453c5750858301515b5f19600386901b1c1916600185901b178555610ac5565b5f85815260208120601f198616915b8281101561458157888601518255948401946001909101908401614562565b508582101561459e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156145be575f80fd5b81518015158114610643575f80fd5b5f82516145de81846020870161369f565b9190910192915050565b60ff828116828216039081111561060457610604613c00565b600181815b8085111561463b57815f190482111561462157614621613c00565b8085161561462e57918102915b93841c9390800290614606565b509250929050565b5f8261465157506001610604565b8161465d57505f610604565b8160018114614673576002811461467d57614699565b6001915050610604565b60ff84111561468e5761468e613c00565b50506001821b610604565b5060208310610133831016604e8410600b84101617156146bc575081810a610604565b6146c68383614601565b805f19048211156146d9576146d9613c00565b029392505050565b5f6106438383614643565b5f8261470657634e487b7160e01b5f52601260045260245ffd5b50049056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212202b6216f43f3d42931e6ecf56a1c1eed99a85b67393e179aa3664885042bc87d364736f6c63430008190033", } // ERC20TokenRemoteUpgradeableABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenRemote/NativeTokenRemote/NativeTokenRemote.go b/abi-bindings/go/ictt/TokenRemote/NativeTokenRemote/NativeTokenRemote.go index e9e9bcdb1..06d3d9e27 100644 --- a/abi-bindings/go/ictt/TokenRemote/NativeTokenRemote/NativeTokenRemote.go +++ b/abi-bindings/go/ictt/TokenRemote/NativeTokenRemote/NativeTokenRemote.go @@ -75,7 +75,7 @@ type TokenRemoteSettings struct { // NativeTokenRemoteMetaData contains all meta data concerning the NativeTokenRemote contract. var NativeTokenRemoteMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenHomeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenHomeAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenHomeDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structTokenRemoteSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"nativeAssetSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialReserveImbalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnedFeesReportingRewardPercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feesBurned\",\"type\":\"uint256\"}],\"name\":\"ReportBurnedTxFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"BURNED_FOR_TRANSFER_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNED_TX_FEES_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOME_CHAIN_BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_GAS_PER_WORD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_SEND_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REGISTER_REMOTE_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"payloadSize\",\"type\":\"uint256\"}],\"name\":\"calculateNumWords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInitialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIsCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMultiplyOnRemote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenHomeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenHomeAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenHomeDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structTokenRemoteSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"nativeAssetSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialReserveImbalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnedFeesReportingRewardPercentage\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"registerWithHome\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"}],\"name\":\"reportBurnedTxFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalNativeAssetSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615fee380380615fee83398101604081905261002e91610cb3565b61003a84848484610046565b50505050610ff4565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f8115801561008f5750825b90505f826001600160401b031660011480156100aa5750303b155b9050811580156100b8575080155b156100d65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010457845460ff60401b1916680100000000000000001785555b61011089898989610161565b831561015657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6101696101fc565b815f036101d75760405162461bcd60e51b815260206004820152603160248201527f4e6174697665546f6b656e52656d6f74653a207a65726f20696e697469616c206044820152707265736572766520696d62616c616e636560781b60648201526084015b60405180910390fd5b6101e1838061024c565b6101ed84836012610262565b6101f681610299565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661024a57604051631afcd79f60e31b815260040160405180910390fd5b565b6102546101fc565b61025e8282610323565b5050565b61026a6101fc565b825160208401516040850151610281929190610386565b6102896103a1565b6102948383836103b1565b505050565b6102a16101fc565b606481106102ff5760405162461bcd60e51b815260206004820152602560248201527f4e6174697665546f6b656e52656d6f74653a20696e76616c69642070657263656044820152646e7461676560d81b60648201526084016101ce565b7f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf50055565b61032b6101fc565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036103778482610df9565b50600481016101f68382610df9565b61038e6101fc565b61039883826106fb565b6102948261071d565b6103a96101fc565b61024a61072e565b6103b96101fc565b5f7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104519190610eb8565b815560608401516104b75760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016101ce565b80546060850151036105315760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016101ce565b60808401516001600160a01b03166105975760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016101ce565b60128460a0015160ff1611156106015760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016101ce565b60128260ff1611156106615760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016101ce565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b918616919091021790556106dd9083610758565b60048301805460ff1916911515919091179055600390910155505050565b6107036101fc565b61070b6107a0565b6107136107b0565b61025e82826107b8565b6107256101fc565b6100438161093c565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b5f8060ff80851690841611818161077b576107738587610ee3565b60ff16610789565b6107858686610ee3565b60ff165b61079490600a610fe2565b96919550909350505050565b6107a86101fc565b61024a610976565b61024a6101fc565b6107c06101fc565b6001600160a01b03821661083c5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016101ce565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c59190610eb8565b1161091a5760405162461bcd60e51b815260206004820152603260248201525f80516020615fce833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016101ce565b81546001600160a01b0319166001600160a01b0382161782556101f6836109a5565b6109446101fc565b6001600160a01b03811661096d57604051631e4fbdf760e01b81525f60048201526024016101ce565b61004381610b3d565b61097e6101fc565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610751565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610a0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a309190610eb8565b600283015490915081841115610a8f5760405162461bcd60e51b815260206004820152603160248201525f80516020615fce83398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016101ce565b808411610b045760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016101ce565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610be357610be3610bad565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610c1157610c11610bad565b604052919050565b80516001600160a01b0381168114610c2f575f80fd5b919050565b5f82601f830112610c43575f80fd5b81516001600160401b03811115610c5c57610c5c610bad565b6020610c70601f8301601f19168201610be9565b8281528582848701011115610c83575f80fd5b5f5b83811015610ca0578581018301518282018401528201610c85565b505f928101909101919091529392505050565b5f805f80848603610120811215610cc8575f80fd5b60c0811215610cd5575f80fd5b50610cde610bc1565b610ce786610c19565b8152610cf560208701610c19565b60208201526040860151604082015260608601516060820152610d1a60808701610c19565b608082015260a086015160ff81168114610d32575f80fd5b60a082015260c08601519094506001600160401b03811115610d52575f80fd5b610d5e87828801610c34565b60e08701516101009097015195989097509350505050565b600181811c90821680610d8a57607f821691505b602082108103610da857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029457805f5260205f20601f840160051c81016020851015610dd35750805b601f840160051c820191505b81811015610df2575f8155600101610ddf565b5050505050565b81516001600160401b03811115610e1257610e12610bad565b610e2681610e208454610d76565b84610dae565b602080601f831160018114610e59575f8415610e425750858301515b5f19600386901b1c1916600185901b178555610eb0565b5f85815260208120601f198616915b82811015610e8757888601518255948401946001909101908401610e68565b5085821015610ea457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215610ec8575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115610efc57610efc610ecf565b92915050565b600181815b80851115610f3c57815f1904821115610f2257610f22610ecf565b80851615610f2f57918102915b93841c9390800290610f07565b509250929050565b5f82610f5257506001610efc565b81610f5e57505f610efc565b8160018114610f745760028114610f7e57610f9a565b6001915050610efc565b60ff841115610f8f57610f8f610ecf565b50506001821b610efc565b5060208310610133831016604e8410600b8410161715610fbd575081810a610efc565b610fc78383610f02565b805f1904821115610fda57610fda610ecf565b029392505050565b5f610fed8383610f44565b9392505050565b614fcd806110015f395ff3fe608060405260043610610280575f3560e01c8063715018a61161014e578063b8a46d02116100c0578063dd62ed3e11610079578063dd62ed3e14610736578063e0fd9cb814610755578063ed0ae4b014610452578063ef793e2a14610769578063f2fde38b1461077d578063f3f981d81461079c5761028f565b8063b8a46d02146106b9578063c3cd6927146106d8578063c452165e146106ec578063c868efaa14610703578063d0e30db01461028f578063d2cc7a70146107225761028f565b80638f6cec88116101125780638f6cec8814610608578063909a6ac01461062757806395d89b4114610647578063973142971461065b578063a5717bc01461067a578063a9059cbb1461069a5761028f565b8063715018a61461057b57806371717c181461058f5780637ee3779a146105a55780638bf2fa94146105b95780638da5cb5b146105cc5761028f565b80632e1a7d4d116101f25780634511243e116101ab5780634511243e146104b55780635507f3d1146104d457806355538c8b146104ea5780635eb99514146105095780636e6eef8d1461052857806370a082311461053b5761028f565b80632e1a7d4d146103e6578063313ce56714610405578063329c3e1214610420578063347212c41461045257806335cac1591461046e5780634213cf78146104a15761028f565b806315beb59f1161024457806315beb59f1461035557806318160ddd1461036a5780631906529c1461037e57806323b872dd14610392578063254ac160146103b15780632b0d8f18146103c75761028f565b806302a30c7d1461029757806306fdde03146102c05780630733c8c8146102e1578063095ea7b3146103035780630ca1c5c9146103225761028f565b3661028f5761028d6107bb565b005b61028d6107bb565b3480156102a2575f80fd5b506102ab6107fc565b60405190151581526020015b60405180910390f35b3480156102cb575f80fd5b506102d4610813565b6040516102b79190613f06565b3480156102ec575f80fd5b506102f56108d3565b6040519081526020016102b7565b34801561030e575f80fd5b506102ab61031d366004613f3c565b6108e7565b34801561032d575f80fd5b507f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf501546102f5565b348015610360575f80fd5b506102f56105dc81565b348015610375575f80fd5b506102f5610900565b348015610389575f80fd5b506102f561091b565b34801561039d575f80fd5b506102ab6103ac366004613f66565b610972565b3480156103bc575f80fd5b506102f56201fbd081565b3480156103d2575f80fd5b5061028d6103e1366004613fa4565b610997565b3480156103f1575f80fd5b5061028d610400366004613fbf565b610a99565b348015610410575f80fd5b50604051601281526020016102b7565b34801561042b575f80fd5b5061043a6001600160991b0181565b6040516001600160a01b0390911681526020016102b7565b34801561045d575f80fd5b5061043a62010203600160981b0181565b348015610479575f80fd5b506102f57f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b3480156104ac575f80fd5b506102f5610ae5565b3480156104c0575f80fd5b5061028d6104cf366004613fa4565b610af6565b3480156104df575f80fd5b506102f56205302081565b3480156104f5575f80fd5b5061028d610504366004613fbf565b610be5565b348015610514575f80fd5b5061028d610523366004613fbf565b610ef7565b61028d610536366004613fd6565b610f08565b348015610546575f80fd5b506102f5610555366004613fa4565b6001600160a01b03165f9081525f80516020614f18833981519152602052604090205490565b348015610586575f80fd5b5061028d610f36565b34801561059a575f80fd5b506102f56205573081565b3480156105b0575f80fd5b506102ab610f47565b61028d6105c736600461400d565b610f5e565b3480156105d7575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661043a565b348015610613575f80fd5b5061028d61062236600461414d565b610f8c565b348015610632575f80fd5b506102f55f80516020614f7883398151915281565b348015610652575f80fd5b506102d461109e565b348015610666575f80fd5b506102ab610675366004613fa4565b6110dc565b348015610685575f80fd5b506102f55f80516020614f5883398151915281565b3480156106a5575f80fd5b506102ab6106b4366004613f3c565b6110f5565b3480156106c4575f80fd5b5061028d6106d3366004614217565b611102565b3480156106e3575f80fd5b5061043a611276565b3480156106f7575f80fd5b5061043a600160981b81565b34801561070e575f80fd5b5061028d61071d366004614227565b611293565b34801561072d575f80fd5b506102f5611450565b348015610741575f80fd5b506102f56107503660046142a8565b611465565b348015610760575f80fd5b506102f56114ae565b348015610774575f80fd5b506102f56114c2565b348015610788575f80fd5b5061028d610797366004613fa4565b6114d6565b3480156107a7575f80fd5b506102f56107b6366004613fbf565b611510565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a26107fa3334611526565b565b5f8061080661155e565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f80516020614f1883398151915291610851906142df565b80601f016020809104026020016040519081016040528092919081815260200182805461087d906142df565b80156108c85780601f1061089f576101008083540402835291602001916108c8565b820191905f5260205f20905b8154815290600101906020018083116108ab57829003601f168201915b505050505091505090565b5f806108dd61155e565b6003015492915050565b5f336108f4818585611582565b60019150505b92915050565b5f805f80516020614f188339815191525b6002015492915050565b5f5f80516020614f588339815191528161094462010203600160981b0131600160981b31614325565b90505f61094f6114c2565b836001015461095e9190614325565b905061096a8282614338565b935050505090565b5f3361097f858285611594565b61098a8585856115f1565b60019150505b9392505050565b5f80516020614f788339815191526109ad61164e565b6001600160a01b0382166109dc5760405162461bcd60e51b81526004016109d39061434b565b60405180910390fd5b6109e68183611656565b15610a495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016109d3565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a2610ad83382611677565b610ae233826116ab565b50565b5f80610aef61155e565b5492915050565b5f80516020614f78833981519152610b0c61164e565b6001600160a01b038216610b325760405162461bcd60e51b81526004016109d39061434b565b610b3c8183611656565b610b9a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016109d3565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b5f80516020614f388339815191528054600114610c145760405162461bcd60e51b81526004016109d390614399565b600281557f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf502545f80516020614f5883398151915290600160981b31908111610cd25760405162461bcd60e51b8152602060048201526044602482018190527f4e6174697665546f6b656e52656d6f74653a206275726e206164647265737320908201527f62616c616e6365206e6f742067726561746572207468616e206c6173742072656064820152631c1bdc9d60e21b608482015260a4016109d3565b5f826002015482610ce39190614338565b90505f6064845f015483610cf791906143dd565b610d0191906143f4565b90505f610d0e8284614338565b6002860185905590508115610d3157610d27308361173e565b610d313083611526565b5f610d4b610d3d6108d3565b610d45610f47565b846117eb565b11610db55760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e52656d6f74653a207a65726f207363616c6564206160448201527336b7bab73a103a37903932b837b93a10313ab93760611b60648201526084016109d3565b604080518082018252600181528151808301835262010203600160981b018152602080820185905292515f9380840192610df192909101614427565b60405160208183030381529060405281525090505f610eac6040518060c00160405280610e1c6114ae565b8152602001610e29611276565b6001600160a01b0316815260408051808201825230815260208181018a905283015281018c90526060015f5b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b50815260200184604051602001610e959190614447565b604051602081830303815290604052815250611800565b9050807f0832c643b65d6d3724ed14ac3a655fbc7cae54fb010918b2c2f70ef6b1bb94a584604051610ee091815260200190565b60405180910390a250506001909555505050505050565b610eff61164e565b610ae28161191b565b610f106107fc565b610f2c5760405162461bcd60e51b81526004016109d390614489565b610ae28134611ab3565b610f3e611b2a565b6107fa5f611b85565b5f80610f5161155e565b6004015460ff1692915050565b610f666107fc565b610f825760405162461bcd60e51b81526004016109d390614489565b610ae28134611bf5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fd05750825b90505f826001600160401b03166001148015610feb5750303b155b905081158015610ff9575080155b156110175760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561104157845460ff60401b1916600160401b1785555b61104d89898989611c61565b831561109357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f80516020614f1883398151915291610851906142df565b5f5f80516020614f788339815191526109908184611656565b5f336108f48185856115f1565b5f61110b61155e565b6006810154909150610100900460ff16156111685760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c726561647920726567697374657265640060448201526064016109d3565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a015291519093168286015286518083039095018552608090910190955280820192909252919290916111fd906111f390870187613fa4565b8660200135611cf1565b6040805160c0810182526001870154815260028701546001600160a01b03166020808301919091528251808401845293945061126e939192830191908190611247908b018b613fa4565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f610e55565b505050505050565b5f8061128061155e565b600201546001600160a01b031692915050565b61129b611d38565b5f5f80516020614f7883398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611306573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132a91906144d8565b10156113915760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016109d3565b61139b8133611656565b156114015760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016109d3565b611441858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d8292505050565b5061144a611f99565b50505050565b5f805f80516020614f78833981519152610911565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f806114b861155e565b6001015492915050565b5f806114cc61155e565b6005015492915050565b6114de611b2a565b6001600160a01b03811661150757604051631e4fbdf760e01b81525f60048201526024016109d3565b610ae281611b85565b5f600561151e83601f614325565b901c92915050565b6001600160a01b03821661154f5760405163ec442f0560e01b81525f60048201526024016109d3565b61155a5f8383611fc3565b5050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b61158f83838360016120fc565b505050565b5f61159f8484611465565b90505f19811461144a57818110156115e357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109d3565b61144a84848484035f6120fc565b6001600160a01b03831661161a57604051634b637e8f60e11b81525f60048201526024016109d3565b6001600160a01b0382166116435760405163ec442f0560e01b81525f60048201526024016109d3565b61158f838383611fc3565b6107fa611b2a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6001600160a01b0382166116a057604051634b637e8f60e11b81525f60048201526024016109d3565b61155a825f83611fc3565b804710156116ce5760405163cd78605960e01b81523060048201526024016109d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611717576040519150601f19603f3d011682016040523d82523d5f602084013e61171c565b606091505b505090508061158f57604051630a12f52160e11b815260040160405180910390fd5b7f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf50180545f80516020614f588339815191529183915f9061177f908490614325565b90915550506040516327ad555d60e11b81526001600160a01b0384166004820152602481018390526001600160991b0190634f5aaaba906044015f604051808303815f87803b1580156117d0575f80fd5b505af11580156117e2573d5f803e3d5ffd5b50505050505050565b5f6117f88484845f6121df565b949350505050565b5f8061180a61220f565b604084015160200151909150156118af576040830151516001600160a01b031661188c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016109d3565b6040830151602081015190516118af916001600160a01b039091169083906122ff565b604051630624488560e41b81526001600160a01b038216906362448850906118db9086906004016144ef565b6020604051808303815f875af11580156118f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099091906144d8565b5f80516020614f7883398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa15801561196f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199391906144d8565b600283015490915081841115611a055760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016109d3565b808411611a7a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016109d3565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f80516020614f388339815191528054600114611ae25760405162461bcd60e51b81526004016109d390614399565b600281555f611aef61155e565b9050611afa84612386565b6001810154843503611b1657611b1084846125c0565b50611b22565b611b1084846127e4565b505b600190555050565b33611b5c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107fa5760405163118cdaa760e01b81523360048201526024016109d3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f80516020614f388339815191528054600114611c245760405162461bcd60e51b81526004016109d390614399565b600281555f611c3161155e565b9050611c3c84612a85565b6001810154843503611c5757611c528484612b70565b611b20565b611b208484612cdf565b611c69612ea5565b815f03611cd25760405162461bcd60e51b815260206004820152603160248201527f4e6174697665546f6b656e52656d6f74653a207a65726f20696e697469616c206044820152707265736572766520696d62616c616e636560781b60648201526084016109d3565b611cdc8384612eee565b611ce884836012612f00565b61144a81612f31565b5f815f03611d0057505f6108fa565b306001600160a01b03841603611d2d57611d1b333084611594565b611d263330846115f1565b50806108fa565b610990833384612fa8565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611d7c57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f611d8b61155e565b905080600101548414611df25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b60648201526084016109d3565b60028101546001600160a01b03848116911614611e645760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b60648201526084016109d3565b5f82806020019051810190611e7991906145e8565b6006830154909150610100900460ff161580611e9a5750600682015460ff16155b15611eb15760068201805461ffff19166101011790555b600181516004811115611ec657611ec6614413565b03611efd575f8160200151806020019051810190611ee49190614670565b9050611ef7815f0151826020015161310b565b50611f92565b600281516004811115611f1257611f12614413565b03611f40575f8160200151806020019051810190611f3091906146a8565b9050611ef7818260800151613158565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b60648201526084016109d3565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614f188339815191526001600160a01b038416611ffd5781816002015f828254611ff29190614325565b9091555061206d9050565b6001600160a01b0384165f908152602082905260409020548281101561204f5760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016109d3565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661208b5760028101805483900390556120a9565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ee91815260200190565b60405180910390a350505050565b5f80516020614f188339815191526001600160a01b0385166121335760405163e602df0560e01b81525f60048201526024016109d3565b6001600160a01b03841661215c57604051634a1406b160e11b81525f60048201526024016109d3565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611f9257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516121d091815260200190565b60405180910390a35050505050565b5f811515841515036121fc576121f585846143dd565b90506117f8565b61220685846143f4565b95945050505050565b5f80516020614f7883398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612269573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228d9190614772565b90506122998282611656565b156108fa5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016109d3565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561234c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237091906144d8565b905061144a84846123818585614325565b613282565b80356123a45760405162461bcd60e51b81526004016109d39061478d565b5f6123b56040830160208401613fa4565b6001600160a01b0316036123db5760405162461bcd60e51b81526004016109d3906147d8565b5f6123ec6060830160408401613fa4565b6001600160a01b0316036124575760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b60648201526084016109d3565b5f81608001351161247a5760405162461bcd60e51b81526004016109d390614835565b5f8160a00135116124db5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b60648201526084016109d3565b80608001358160a00135106125435760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b60648201526084016109d3565b5f612555610100830160e08401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b60648201526084016109d3565b5f6125c961155e565b90506125f96125de6040850160208601613fa4565b6101408501356125f460e0870160c08801613fa4565b61333f565b5f6126218361261061012087016101008801613fa4565b86610120013587610140013561343c565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016126653390565b6001600160a01b0316815260200161268360608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016126a560608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016126f96101008a0160e08b01613fa4565b6001600160a01b0316905260405161271491906020016148bb565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612796928201908061276e6101208c016101008d01613fa4565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610e55565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1688886040516127d49291906149c2565b60405180910390a3505050505050565b5f6127ed61155e565b905061281983356128046040860160208701613fa4565b61281460e0870160c08801613fa4565b6134ff565b5f6128308361261061012087016101008801613fa4565b6040805180820190915291945091505f90806004815260200160405180610160016040528061285c3390565b6001600160a01b03168152602001885f013581526020018860200160208101906128869190613fa4565b6001600160a01b031681526020016128a460608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016128c660608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161291a6101008a0160e08b01613fa4565b6001600160a01b031681526080890135602082015260400161294260e08a0160c08b01613fa4565b6001600160a01b03168152610140890135602091820152604051612967929101614ad0565b60408051601f19818403018152919052905290505f6105dc61299661298f6060890189614879565b9050611510565b6129a091906143dd565b6129ad9062055730614325565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f92612a3692820190806129f76101208d016101008e01613fa4565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610e9591889101614447565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168989604051612a749291906149c2565b60405180910390a350505050505050565b5f612a966060830160408401613fa4565b6001600160a01b031603612af85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b60648201526084016109d3565b5f8160c0013511612b1b5760405162461bcd60e51b81526004016109d390614835565b8035612b395760405162461bcd60e51b81526004016109d39061478d565b5f612b4a6040830160208401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b81526004016109d3906147d8565b5f612b7961155e565b9050612ba4612b8e6040850160208601613fa4565b60a08501356125f4610100870160e08801613fa4565b5f612bc883612bb96080870160608801613fa4565b86608001358760a0013561343c565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190612bff9190613fa4565b6001600160a01b0316815260200187815250604051602001612c219190614427565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612c7960808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610e55565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5288886040516127d4929190614bad565b5f612ce861155e565b9050612d108335612cff6040860160208701613fa4565b612814610100870160e08801613fa4565b5f612d2583612bb96080870160608801613fa4565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191612d5e918b01908b01613fa4565b6001600160a01b03168152602001612d7c60608a0160408b01613fa4565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001612db66101008a0160e08b01613fa4565b6001600160a01b03169052604051612e269190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612e7e60808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825262053020908201526040015f610e55565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107fa57604051631afcd79f60e31b815260040160405180910390fd5b612ef6612ea5565b61155a828261359d565b612f08612ea5565b612f1e835f0151846020015185604001516135ed565b612f26613608565b61158f838383613618565b612f39612ea5565b60648110612f975760405162461bcd60e51b815260206004820152602560248201527f4e6174697665546f6b656e52656d6f74653a20696e76616c69642070657263656044820152646e7461676560d81b60648201526084016109d3565b5f80516020614f5883398151915255565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612fee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301291906144d8565b90506130296001600160a01b03861685308661393c565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561306d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061309191906144d8565b90508181116130f75760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016109d3565b6131018282614338565b9695505050505050565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8260405161314691815260200190565b60405180910390a261155a828261173e565b613162308261173e565b5f825f0151836020015184604001518560a001516040516024016131899493929190614c4c565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c084015160608501519192505f916131cf9190859085613975565b905080156132235783606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff48460405161321691815260200190565b60405180910390a261144a565b83606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08460405161326291815260200190565b60405180910390a260e084015161144a906001600160a01b0316846116ab565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526132d38482613a45565b61144a576040516001600160a01b0384811660248301525f604483015261333591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613ae2565b61144a8482613ae2565b5f61334861155e565b60028101549091506001600160a01b0385811691161461337a5760405162461bcd60e51b81526004016109d390614c7d565b82156133d45760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b60648201526084016109d3565b6001600160a01b0382161561144a5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b60648201526084016109d3565b5f805f61344761155e565b905061345287613b43565b965061345e8686611cf1565b600382015460048301549196506134789160ff16866117eb565b60038201546004830154613490919060ff168a6117eb565b116134f25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b60648201526084016109d3565b5094959294509192505050565b5f61350861155e565b8054909150840361353b57306001600160a01b0384160361353b5760405162461bcd60e51b81526004016109d390614c7d565b6001600160a01b03821661144a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b60648201526084016109d3565b6135a5612ea5565b5f80516020614f188339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036135de8482614d1e565b506004810161144a8382614d1e565b6135f5612ea5565b6135ff8382613b5b565b61158f82613b7d565b613610612ea5565b6107fa613b8e565b613620612ea5565b5f61362961155e565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561366e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369291906144d8565b815560608401516136f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016109d3565b80546060850151036137725760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016109d3565b60808401516001600160a01b03166137d85760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016109d3565b60128460a0015160ff1611156138425760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016109d3565b60128260ff1611156138a25760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016109d3565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b9186169190910217905561391e9083613ba2565b60048301805460ff1916911515919091179055600390910155505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261144a9186918216906323b872dd90608401613303565b5f845a10156139c65760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016109d3565b83471015613a165760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016109d3565b826001600160a01b03163b5f03613a2e57505f6117f8565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b031684604051613a609190614dd9565b5f604051808303815f865af19150503d805f8114613a99576040519150601f19603f3d011682016040523d82523d5f602084013e613a9e565b606091505b5091509150818015613ac8575080511580613ac8575080806020019051810190613ac89190614df4565b80156122065750505050506001600160a01b03163b151590565b5f613af66001600160a01b03841683613bec565b905080515f14158015613b1a575080806020019051810190613b189190614df4565b155b1561158f57604051635274afe760e01b81526001600160a01b03841660048201526024016109d3565b5f613b5762010203600160981b01836116ab565b5090565b613b63612ea5565b613b6b613bf9565b613b73613c09565b61155a8282613c11565b613b85612ea5565b610ae281613d95565b5f5f80516020614f38833981519152611fbc565b5f8060ff808516908416118181613bc557613bbd8587614e13565b60ff16613bd3565b613bcf8686614e13565b60ff165b613bde90600a614f0c565b9350909150505b9250929050565b606061099083835f613d9d565b613c01612ea5565b6107fa613e2c565b6107fa612ea5565b613c19612ea5565b6001600160a01b038216613c955760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016109d3565b5f5f80516020614f7883398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0b91906144d8565b11613d735760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016109d3565b81546001600160a01b0319166001600160a01b03821617825561144a8361191b565b6114de612ea5565b606081471015613dc25760405163cd78605960e01b81523060048201526024016109d3565b5f80856001600160a01b03168486604051613ddd9190614dd9565b5f6040518083038185875af1925050503d805f8114613e17576040519150601f19603f3d011682016040523d82523d5f602084013e613e1c565b606091505b5091509150613101868383613e34565b611f99612ea5565b606082613e4957613e4482613e90565b610990565b8151158015613e6057506001600160a01b0384163b155b15613e8957604051639996b31560e01b81526001600160a01b03851660048201526024016109d3565b5080610990565b805115613ea05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015613ed3578181015183820152602001613ebb565b50505f910152565b5f8151808452613ef2816020860160208601613eb9565b601f01601f19169290920160200192915050565b602081525f6109906020830184613edb565b6001600160a01b0381168114610ae2575f80fd5b8035613f3781613f18565b919050565b5f8060408385031215613f4d575f80fd5b8235613f5881613f18565b946020939093013593505050565b5f805f60608486031215613f78575f80fd5b8335613f8381613f18565b92506020840135613f9381613f18565b929592945050506040919091013590565b5f60208284031215613fb4575f80fd5b813561099081613f18565b5f60208284031215613fcf575f80fd5b5035919050565b5f60208284031215613fe6575f80fd5b81356001600160401b03811115613ffb575f80fd5b82016101608185031215610990575f80fd5b5f610100828403121561401e575f80fd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561405a5761405a614024565b60405290565b604080519081016001600160401b038111828210171561405a5761405a614024565b60405161010081016001600160401b038111828210171561405a5761405a614024565b604051601f8201601f191681016001600160401b03811182821017156140cd576140cd614024565b604052919050565b5f6001600160401b038211156140ed576140ed614024565b50601f01601f191660200190565b5f82601f83011261410a575f80fd5b813561411d614118826140d5565b6140a5565b818152846020838601011115614131575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215614162575f80fd5b60c081121561416f575f80fd5b50614178614038565b853561418381613f18565b8152602086013561419381613f18565b80602083015250604086013560408201526060860135606082015260808601356141bc81613f18565b608082015260a086013560ff811681146141d4575f80fd5b60a0820152935060c08501356001600160401b038111156141f3575f80fd5b6141ff878288016140fb565b949794965050505060e0830135926101000135919050565b5f6040828403121561401e575f80fd5b5f805f806060858703121561423a575f80fd5b84359350602085013561424c81613f18565b925060408501356001600160401b0380821115614267575f80fd5b818701915087601f83011261427a575f80fd5b813581811115614288575f80fd5b886020828501011115614299575f80fd5b95989497505060200194505050565b5f80604083850312156142b9575f80fd5b82356142c481613f18565b915060208301356142d481613f18565b809150509250929050565b600181811c908216806142f357607f821691505b60208210810361401e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156108fa576108fa614311565b818103818111156108fa576108fa614311565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b80820281158282048414176108fa576108fa614311565b5f8261440e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b0316815260208083015190820152604081016108fa565b602081525f82516005811061446a57634e487b7160e01b5f52602160045260245ffd5b8060208401525060208301516040808401526117f86060840182613edb565b6020808252602f908201527f4e6174697665546f6b656e52656d6f74653a20636f6e747261637420756e646560408201526e1c98dbdb1b185d195c985b1a5e9959608a1b606082015260800190565b5f602082840312156144e8575f80fd5b5051919050565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b8084101561457c5784518316825293850193600193909301929085019061455a565b5060a0880151878203601f190160e0890152945061459a8186613edb565b98975050505050505050565b5f82601f8301126145b5575f80fd5b81516145c3614118826140d5565b8181528460208386010111156145d7575f80fd5b6117f8826020830160208701613eb9565b5f602082840312156145f8575f80fd5b81516001600160401b038082111561460e575f80fd5b9083019060408286031215614621575f80fd5b614629614060565b825160058110614637575f80fd5b815260208301518281111561464a575f80fd5b614656878286016145a6565b60208301525095945050505050565b8051613f3781613f18565b5f60408284031215614680575f80fd5b614688614060565b825161469381613f18565b81526020928301519281019290925250919050565b5f602082840312156146b8575f80fd5b81516001600160401b03808211156146ce575f80fd5b9083019061010082860312156146e2575f80fd5b6146ea614082565b825181526146fa60208401614665565b602082015261470b60408401614665565b604082015261471c60608401614665565b60608201526080830151608082015260a08301518281111561473c575f80fd5b614748878286016145a6565b60a08301525060c083015160c082015261476460e08401614665565b60e082015295945050505050565b5f60208284031215614782575f80fd5b815161099081613f18565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b5f808335601e1984360301811261488e575f80fd5b8301803591506001600160401b038211156148a7575f80fd5b602001915036819003821315613be5575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161490360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261492a610120850183613edb565b915060c085015160e085015260e085015161494f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261496e575f80fd5b83016020810192503590506001600160401b0381111561498c575f80fd5b803603821315613be5575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6149da60208501613f2c565b6001600160a01b031660608301526149f460408501613f2c565b6001600160a01b03166080830152614a0f6060850185614959565b6101608060a0860152614a276101a08601838561499a565b9250608087013560c086015260a087013560e0860152614a4960c08801613f2c565b9150610100614a62818701846001600160a01b03169052565b614a6e60e08901613f2c565b9250610120614a87818801856001600160a01b03169052565b614a92828a01613f2c565b93506101409150614aad828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b60208152614aea6020820183516001600160a01b03169052565b602082015160408201525f6040830151614b0f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c0850152614b4b610180850183613edb565b915060c085015160e085015260e0850151610100614b73818701836001600160a01b03169052565b860151610120868101919091528601519050610140614b9c818701836001600160a01b03169052565b959095015193019290925250919050565b8235815261012081016020840135614bc481613f18565b6001600160a01b039081166020840152604085013590614be382613f18565b166040830152614bf560608501613f2c565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c0830152614c2f60e08501613f2c565b6001600160a01b031660e083015261010090910191909152919050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f9061310190830184613edb565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f82111561158f57805f5260205f20601f840160051c81016020851015614cff5750805b601f840160051c820191505b81811015611f92575f8155600101614d0b565b81516001600160401b03811115614d3757614d37614024565b614d4b81614d4584546142df565b84614cda565b602080601f831160018114614d7e575f8415614d675750858301515b5f19600386901b1c1916600185901b17855561126e565b5f85815260208120601f198616915b82811015614dac57888601518255948401946001909101908401614d8d565b5085821015614dc957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251614dea818460208701613eb9565b9190910192915050565b5f60208284031215614e04575f80fd5b81518015158114610990575f80fd5b60ff82811682821603908111156108fa576108fa614311565b600181815b80851115614e6657815f1904821115614e4c57614e4c614311565b80851615614e5957918102915b93841c9390800290614e31565b509250929050565b5f82614e7c575060016108fa565b81614e8857505f6108fa565b8160018114614e9e5760028114614ea857614ec4565b60019150506108fa565b60ff841115614eb957614eb9614311565b50506001821b6108fa565b5060208310610133831016604e8410600b8410161715614ee7575081810a6108fa565b614ef18383614e2c565b805f1904821115614f0457614f04614311565b029392505050565b5f6109908383614e6e56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c750069a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212202d98df8601de9c3ccd57c48eb799f7d588e9cc9e7d04e8103f52a97aaa53d42d64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", + Bin: "0x608060405234801561000f575f80fd5b50604051615fee380380615fee83398101604081905261002e91610cb3565b61003a84848484610046565b50505050610ff4565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f8115801561008f5750825b90505f826001600160401b031660011480156100aa5750303b155b9050811580156100b8575080155b156100d65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561010457845460ff60401b1916680100000000000000001785555b61011089898989610161565b831561015657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6101696101fc565b815f036101d75760405162461bcd60e51b815260206004820152603160248201527f4e6174697665546f6b656e52656d6f74653a207a65726f20696e697469616c206044820152707265736572766520696d62616c616e636560781b60648201526084015b60405180910390fd5b6101e1838061024c565b6101ed84836012610262565b6101f681610299565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661024a57604051631afcd79f60e31b815260040160405180910390fd5b565b6102546101fc565b61025e8282610323565b5050565b61026a6101fc565b825160208401516040850151610281929190610386565b6102896103a1565b6102948383836103b1565b505050565b6102a16101fc565b606481106102ff5760405162461bcd60e51b815260206004820152602560248201527f4e6174697665546f6b656e52656d6f74653a20696e76616c69642070657263656044820152646e7461676560d81b60648201526084016101ce565b7f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf50055565b61032b6101fc565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036103778482610df9565b50600481016101f68382610df9565b61038e6101fc565b61039883826106fb565b6102948261071d565b6103a96101fc565b61024a61072e565b6103b96101fc565b5f7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104519190610eb8565b815560608401516104b75760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016101ce565b80546060850151036105315760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016101ce565b60808401516001600160a01b03166105975760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016101ce565b60128460a0015160ff1611156106015760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016101ce565b60128260ff1611156106615760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016101ce565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b918616919091021790556106dd9083610758565b60048301805460ff1916911515919091179055600390910155505050565b6107036101fc565b61070b6107a0565b6107136107b0565b61025e82826107b8565b6107256101fc565b6100438161093c565b5f7fd2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c75005b6001905550565b5f8060ff80851690841611818161077b576107738587610ee3565b60ff16610789565b6107858686610ee3565b60ff165b61079490600a610fe2565b96919550909350505050565b6107a86101fc565b61024a610976565b61024a6101fc565b6107c06101fc565b6001600160a01b03821661083c5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016101ce565b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c59190610eb8565b1161091a5760405162461bcd60e51b815260206004820152603260248201525f80516020615fce833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016101ce565b81546001600160a01b0319166001600160a01b0382161782556101f6836109a5565b6109446101fc565b6001600160a01b03811661096d57604051631e4fbdf760e01b81525f60048201526024016101ce565b61004381610b3d565b61097e6101fc565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610751565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610a0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a309190610eb8565b600283015490915081841115610a8f5760405162461bcd60e51b815260206004820152603160248201525f80516020615fce83398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016101ce565b808411610b045760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016101ce565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610be357610be3610bad565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610c1157610c11610bad565b604052919050565b80516001600160a01b0381168114610c2f575f80fd5b919050565b5f82601f830112610c43575f80fd5b81516001600160401b03811115610c5c57610c5c610bad565b6020610c70601f8301601f19168201610be9565b8281528582848701011115610c83575f80fd5b5f5b83811015610ca0578581018301518282018401528201610c85565b505f928101909101919091529392505050565b5f805f80848603610120811215610cc8575f80fd5b60c0811215610cd5575f80fd5b50610cde610bc1565b610ce786610c19565b8152610cf560208701610c19565b60208201526040860151604082015260608601516060820152610d1a60808701610c19565b608082015260a086015160ff81168114610d32575f80fd5b60a082015260c08601519094506001600160401b03811115610d52575f80fd5b610d5e87828801610c34565b60e08701516101009097015195989097509350505050565b600181811c90821680610d8a57607f821691505b602082108103610da857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029457805f5260205f20601f840160051c81016020851015610dd35750805b601f840160051c820191505b81811015610df2575f8155600101610ddf565b5050505050565b81516001600160401b03811115610e1257610e12610bad565b610e2681610e208454610d76565b84610dae565b602080601f831160018114610e59575f8415610e425750858301515b5f19600386901b1c1916600185901b178555610eb0565b5f85815260208120601f198616915b82811015610e8757888601518255948401946001909101908401610e68565b5085821015610ea457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215610ec8575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115610efc57610efc610ecf565b92915050565b600181815b80851115610f3c57815f1904821115610f2257610f22610ecf565b80851615610f2f57918102915b93841c9390800290610f07565b509250929050565b5f82610f5257506001610efc565b81610f5e57505f610efc565b8160018114610f745760028114610f7e57610f9a565b6001915050610efc565b60ff841115610f8f57610f8f610ecf565b50506001821b610efc565b5060208310610133831016604e8410600b8410161715610fbd575081810a610efc565b610fc78383610f02565b805f1904821115610fda57610fda610ecf565b029392505050565b5f610fed8383610f44565b9392505050565b614fcd806110015f395ff3fe608060405260043610610280575f3560e01c8063715018a61161014e578063b8a46d02116100c0578063dd62ed3e11610079578063dd62ed3e14610736578063e0fd9cb814610755578063ed0ae4b014610452578063ef793e2a14610769578063f2fde38b1461077d578063f3f981d81461079c5761028f565b8063b8a46d02146106b9578063c3cd6927146106d8578063c452165e146106ec578063c868efaa14610703578063d0e30db01461028f578063d2cc7a70146107225761028f565b80638f6cec88116101125780638f6cec8814610608578063909a6ac01461062757806395d89b4114610647578063973142971461065b578063a5717bc01461067a578063a9059cbb1461069a5761028f565b8063715018a61461057b57806371717c181461058f5780637ee3779a146105a55780638bf2fa94146105b95780638da5cb5b146105cc5761028f565b80632e1a7d4d116101f25780634511243e116101ab5780634511243e146104b55780635507f3d1146104d457806355538c8b146104ea5780635eb99514146105095780636e6eef8d1461052857806370a082311461053b5761028f565b80632e1a7d4d146103e6578063313ce56714610405578063329c3e1214610420578063347212c41461045257806335cac1591461046e5780634213cf78146104a15761028f565b806315beb59f1161024457806315beb59f1461035557806318160ddd1461036a5780631906529c1461037e57806323b872dd14610392578063254ac160146103b15780632b0d8f18146103c75761028f565b806302a30c7d1461029757806306fdde03146102c05780630733c8c8146102e1578063095ea7b3146103035780630ca1c5c9146103225761028f565b3661028f5761028d6107bb565b005b61028d6107bb565b3480156102a2575f80fd5b506102ab6107fc565b60405190151581526020015b60405180910390f35b3480156102cb575f80fd5b506102d4610813565b6040516102b79190613f06565b3480156102ec575f80fd5b506102f56108d3565b6040519081526020016102b7565b34801561030e575f80fd5b506102ab61031d366004613f3c565b6108e7565b34801561032d575f80fd5b507f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf501546102f5565b348015610360575f80fd5b506102f56105dc81565b348015610375575f80fd5b506102f5610900565b348015610389575f80fd5b506102f561091b565b34801561039d575f80fd5b506102ab6103ac366004613f66565b610972565b3480156103bc575f80fd5b506102f56201fbd081565b3480156103d2575f80fd5b5061028d6103e1366004613fa4565b610997565b3480156103f1575f80fd5b5061028d610400366004613fbf565b610a99565b348015610410575f80fd5b50604051601281526020016102b7565b34801561042b575f80fd5b5061043a6001600160991b0181565b6040516001600160a01b0390911681526020016102b7565b34801561045d575f80fd5b5061043a62010203600160981b0181565b348015610479575f80fd5b506102f57f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b3480156104ac575f80fd5b506102f5610ae5565b3480156104c0575f80fd5b5061028d6104cf366004613fa4565b610af6565b3480156104df575f80fd5b506102f56205302081565b3480156104f5575f80fd5b5061028d610504366004613fbf565b610be5565b348015610514575f80fd5b5061028d610523366004613fbf565b610ef7565b61028d610536366004613fd6565b610f08565b348015610546575f80fd5b506102f5610555366004613fa4565b6001600160a01b03165f9081525f80516020614f18833981519152602052604090205490565b348015610586575f80fd5b5061028d610f36565b34801561059a575f80fd5b506102f56205573081565b3480156105b0575f80fd5b506102ab610f47565b61028d6105c736600461400d565b610f5e565b3480156105d7575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661043a565b348015610613575f80fd5b5061028d61062236600461414d565b610f8c565b348015610632575f80fd5b506102f55f80516020614f7883398151915281565b348015610652575f80fd5b506102d461109e565b348015610666575f80fd5b506102ab610675366004613fa4565b6110dc565b348015610685575f80fd5b506102f55f80516020614f5883398151915281565b3480156106a5575f80fd5b506102ab6106b4366004613f3c565b6110f5565b3480156106c4575f80fd5b5061028d6106d3366004614217565b611102565b3480156106e3575f80fd5b5061043a611276565b3480156106f7575f80fd5b5061043a600160981b81565b34801561070e575f80fd5b5061028d61071d366004614227565b611293565b34801561072d575f80fd5b506102f5611450565b348015610741575f80fd5b506102f56107503660046142a8565b611465565b348015610760575f80fd5b506102f56114ae565b348015610774575f80fd5b506102f56114c2565b348015610788575f80fd5b5061028d610797366004613fa4565b6114d6565b3480156107a7575f80fd5b506102f56107b6366004613fbf565b611510565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a26107fa3334611526565b565b5f8061080661155e565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f80516020614f1883398151915291610851906142df565b80601f016020809104026020016040519081016040528092919081815260200182805461087d906142df565b80156108c85780601f1061089f576101008083540402835291602001916108c8565b820191905f5260205f20905b8154815290600101906020018083116108ab57829003601f168201915b505050505091505090565b5f806108dd61155e565b6003015492915050565b5f336108f4818585611582565b60019150505b92915050565b5f805f80516020614f188339815191525b6002015492915050565b5f5f80516020614f588339815191528161094462010203600160981b0131600160981b31614325565b90505f61094f6114c2565b836001015461095e9190614325565b905061096a8282614338565b935050505090565b5f3361097f858285611594565b61098a8585856115f1565b60019150505b9392505050565b5f80516020614f788339815191526109ad61164e565b6001600160a01b0382166109dc5760405162461bcd60e51b81526004016109d39061434b565b60405180910390fd5b6109e68183611656565b15610a495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016109d3565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a2610ad83382611677565b610ae233826116ab565b50565b5f80610aef61155e565b5492915050565b5f80516020614f78833981519152610b0c61164e565b6001600160a01b038216610b325760405162461bcd60e51b81526004016109d39061434b565b610b3c8183611656565b610b9a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016109d3565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b5f80516020614f388339815191528054600114610c145760405162461bcd60e51b81526004016109d390614399565b600281557f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf502545f80516020614f5883398151915290600160981b31908111610cd25760405162461bcd60e51b8152602060048201526044602482018190527f4e6174697665546f6b656e52656d6f74653a206275726e206164647265737320908201527f62616c616e6365206e6f742067726561746572207468616e206c6173742072656064820152631c1bdc9d60e21b608482015260a4016109d3565b5f826002015482610ce39190614338565b90505f6064845f015483610cf791906143dd565b610d0191906143f4565b90505f610d0e8284614338565b6002860185905590508115610d3157610d27308361173e565b610d313083611526565b5f610d4b610d3d6108d3565b610d45610f47565b846117eb565b11610db55760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e52656d6f74653a207a65726f207363616c6564206160448201527336b7bab73a103a37903932b837b93a10313ab93760611b60648201526084016109d3565b604080518082018252600181528151808301835262010203600160981b018152602080820185905292515f9380840192610df192909101614427565b60405160208183030381529060405281525090505f610eac6040518060c00160405280610e1c6114ae565b8152602001610e29611276565b6001600160a01b0316815260408051808201825230815260208181018a905283015281018c90526060015f5b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b50815260200184604051602001610e959190614447565b604051602081830303815290604052815250611800565b9050807f0832c643b65d6d3724ed14ac3a655fbc7cae54fb010918b2c2f70ef6b1bb94a584604051610ee091815260200190565b60405180910390a250506001909555505050505050565b610eff61164e565b610ae28161191b565b610f106107fc565b610f2c5760405162461bcd60e51b81526004016109d390614489565b610ae28134611ab3565b610f3e611b2a565b6107fa5f611b85565b5f80610f5161155e565b6004015460ff1692915050565b610f666107fc565b610f825760405162461bcd60e51b81526004016109d390614489565b610ae28134611bf5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fd05750825b90505f826001600160401b03166001148015610feb5750303b155b905081158015610ff9575080155b156110175760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561104157845460ff60401b1916600160401b1785555b61104d89898989611c61565b831561109357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f80516020614f1883398151915291610851906142df565b5f5f80516020614f788339815191526109908184611656565b5f336108f48185856115f1565b5f61110b61155e565b6006810154909150610100900460ff16156111685760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c726561647920726567697374657265640060448201526064016109d3565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a015291519093168286015286518083039095018552608090910190955280820192909252919290916111fd906111f390870187613fa4565b8660200135611cf1565b6040805160c0810182526001870154815260028701546001600160a01b03166020808301919091528251808401845293945061126e939192830191908190611247908b018b613fa4565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f610e55565b505050505050565b5f8061128061155e565b600201546001600160a01b031692915050565b61129b611d38565b5f5f80516020614f7883398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611306573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132a91906144d8565b10156113915760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016109d3565b61139b8133611656565b156114015760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016109d3565b611441858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d8292505050565b5061144a611f99565b50505050565b5f805f80516020614f78833981519152610911565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f806114b861155e565b6001015492915050565b5f806114cc61155e565b6005015492915050565b6114de611b2a565b6001600160a01b03811661150757604051631e4fbdf760e01b81525f60048201526024016109d3565b610ae281611b85565b5f600561151e83601f614325565b901c92915050565b6001600160a01b03821661154f5760405163ec442f0560e01b81525f60048201526024016109d3565b61155a5f8383611fc3565b5050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b61158f83838360016120fc565b505050565b5f61159f8484611465565b90505f19811461144a57818110156115e357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109d3565b61144a84848484035f6120fc565b6001600160a01b03831661161a57604051634b637e8f60e11b81525f60048201526024016109d3565b6001600160a01b0382166116435760405163ec442f0560e01b81525f60048201526024016109d3565b61158f838383611fc3565b6107fa611b2a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6001600160a01b0382166116a057604051634b637e8f60e11b81525f60048201526024016109d3565b61155a825f83611fc3565b804710156116ce5760405163cd78605960e01b81523060048201526024016109d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611717576040519150601f19603f3d011682016040523d82523d5f602084013e61171c565b606091505b505090508061158f57604051630a12f52160e11b815260040160405180910390fd5b7f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf50180545f80516020614f588339815191529183915f9061177f908490614325565b90915550506040516327ad555d60e11b81526001600160a01b0384166004820152602481018390526001600160991b0190634f5aaaba906044015f604051808303815f87803b1580156117d0575f80fd5b505af11580156117e2573d5f803e3d5ffd5b50505050505050565b5f6117f88484845f6121df565b949350505050565b5f8061180a61220f565b604084015160200151909150156118af576040830151516001600160a01b031661188c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016109d3565b6040830151602081015190516118af916001600160a01b039091169083906122ff565b604051630624488560e41b81526001600160a01b038216906362448850906118db9086906004016144ef565b6020604051808303815f875af11580156118f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099091906144d8565b5f80516020614f7883398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa15801561196f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199391906144d8565b600283015490915081841115611a055760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016109d3565b808411611a7a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016109d3565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f80516020614f388339815191528054600114611ae25760405162461bcd60e51b81526004016109d390614399565b600281555f611aef61155e565b9050611afa84612386565b6001810154843503611b1657611b1084846125c0565b50611b22565b611b1084846127e4565b505b600190555050565b33611b5c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107fa5760405163118cdaa760e01b81523360048201526024016109d3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f80516020614f388339815191528054600114611c245760405162461bcd60e51b81526004016109d390614399565b600281555f611c3161155e565b9050611c3c84612a85565b6001810154843503611c5757611c528484612b70565b611b20565b611b208484612cdf565b611c69612ea5565b815f03611cd25760405162461bcd60e51b815260206004820152603160248201527f4e6174697665546f6b656e52656d6f74653a207a65726f20696e697469616c206044820152707265736572766520696d62616c616e636560781b60648201526084016109d3565b611cdc8384612eee565b611ce884836012612f00565b61144a81612f31565b5f815f03611d0057505f6108fa565b306001600160a01b03841603611d2d57611d1b333084611594565b611d263330846115f1565b50806108fa565b610990833384612fa8565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611d7c57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f611d8b61155e565b905080600101548414611df25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b60648201526084016109d3565b60028101546001600160a01b03848116911614611e645760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b60648201526084016109d3565b5f82806020019051810190611e7991906145e8565b6006830154909150610100900460ff161580611e9a5750600682015460ff16155b15611eb15760068201805461ffff19166101011790555b600181516004811115611ec657611ec6614413565b03611efd575f8160200151806020019051810190611ee49190614670565b9050611ef7815f0151826020015161310b565b50611f92565b600281516004811115611f1257611f12614413565b03611f40575f8160200151806020019051810190611f3091906146a8565b9050611ef7818260800151613158565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b60648201526084016109d3565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614f188339815191526001600160a01b038416611ffd5781816002015f828254611ff29190614325565b9091555061206d9050565b6001600160a01b0384165f908152602082905260409020548281101561204f5760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016109d3565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661208b5760028101805483900390556120a9565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ee91815260200190565b60405180910390a350505050565b5f80516020614f188339815191526001600160a01b0385166121335760405163e602df0560e01b81525f60048201526024016109d3565b6001600160a01b03841661215c57604051634a1406b160e11b81525f60048201526024016109d3565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611f9257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516121d091815260200190565b60405180910390a35050505050565b5f811515841515036121fc576121f585846143dd565b90506117f8565b61220685846143f4565b95945050505050565b5f80516020614f7883398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612269573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228d9190614772565b90506122998282611656565b156108fa5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016109d3565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561234c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237091906144d8565b905061144a84846123818585614325565b613282565b80356123a45760405162461bcd60e51b81526004016109d39061478d565b5f6123b56040830160208401613fa4565b6001600160a01b0316036123db5760405162461bcd60e51b81526004016109d3906147d8565b5f6123ec6060830160408401613fa4565b6001600160a01b0316036124575760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b60648201526084016109d3565b5f81608001351161247a5760405162461bcd60e51b81526004016109d390614835565b5f8160a00135116124db5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b60648201526084016109d3565b80608001358160a00135106125435760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b60648201526084016109d3565b5f612555610100830160e08401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b60648201526084016109d3565b5f6125c961155e565b90506125f96125de6040850160208601613fa4565b6101408501356125f460e0870160c08801613fa4565b61333f565b5f6126218361261061012087016101008801613fa4565b86610120013587610140013561343c565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016126653390565b6001600160a01b0316815260200161268360608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016126a560608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016126f96101008a0160e08b01613fa4565b6001600160a01b0316905260405161271491906020016148bb565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612796928201908061276e6101208c016101008d01613fa4565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610e55565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1688886040516127d49291906149c2565b60405180910390a3505050505050565b5f6127ed61155e565b905061281983356128046040860160208701613fa4565b61281460e0870160c08801613fa4565b6134ff565b5f6128308361261061012087016101008801613fa4565b6040805180820190915291945091505f90806004815260200160405180610160016040528061285c3390565b6001600160a01b03168152602001885f013581526020018860200160208101906128869190613fa4565b6001600160a01b031681526020016128a460608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016128c660608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161291a6101008a0160e08b01613fa4565b6001600160a01b031681526080890135602082015260400161294260e08a0160c08b01613fa4565b6001600160a01b03168152610140890135602091820152604051612967929101614ad0565b60408051601f19818403018152919052905290505f6105dc61299661298f6060890189614879565b9050611510565b6129a091906143dd565b6129ad9062055730614325565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f92612a3692820190806129f76101208d016101008e01613fa4565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610e9591889101614447565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168989604051612a749291906149c2565b60405180910390a350505050505050565b5f612a966060830160408401613fa4565b6001600160a01b031603612af85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b60648201526084016109d3565b5f8160c0013511612b1b5760405162461bcd60e51b81526004016109d390614835565b8035612b395760405162461bcd60e51b81526004016109d39061478d565b5f612b4a6040830160208401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b81526004016109d3906147d8565b5f612b7961155e565b9050612ba4612b8e6040850160208601613fa4565b60a08501356125f4610100870160e08801613fa4565b5f612bc883612bb96080870160608801613fa4565b86608001358760a0013561343c565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190612bff9190613fa4565b6001600160a01b0316815260200187815250604051602001612c219190614427565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612c7960808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610e55565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5288886040516127d4929190614bad565b5f612ce861155e565b9050612d108335612cff6040860160208701613fa4565b612814610100870160e08801613fa4565b5f612d2583612bb96080870160608801613fa4565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191612d5e918b01908b01613fa4565b6001600160a01b03168152602001612d7c60608a0160408b01613fa4565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001612db66101008a0160e08b01613fa4565b6001600160a01b03169052604051612e269190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612e7e60808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825262053020908201526040015f610e55565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107fa57604051631afcd79f60e31b815260040160405180910390fd5b612ef6612ea5565b61155a828261359d565b612f08612ea5565b612f1e835f0151846020015185604001516135ed565b612f26613608565b61158f838383613618565b612f39612ea5565b60648110612f975760405162461bcd60e51b815260206004820152602560248201527f4e6174697665546f6b656e52656d6f74653a20696e76616c69642070657263656044820152646e7461676560d81b60648201526084016109d3565b5f80516020614f5883398151915255565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612fee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301291906144d8565b90506130296001600160a01b03861685308661393c565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561306d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061309191906144d8565b90508181116130f75760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016109d3565b6131018282614338565b9695505050505050565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8260405161314691815260200190565b60405180910390a261155a828261173e565b613162308261173e565b5f825f0151836020015184604001518560a001516040516024016131899493929190614c4c565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c084015160608501519192505f916131cf9190859085613975565b905080156132235783606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff48460405161321691815260200190565b60405180910390a261144a565b83606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08460405161326291815260200190565b60405180910390a260e084015161144a906001600160a01b0316846116ab565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526132d38482613a45565b61144a576040516001600160a01b0384811660248301525f604483015261333591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613ae2565b61144a8482613ae2565b5f61334861155e565b60028101549091506001600160a01b0385811691161461337a5760405162461bcd60e51b81526004016109d390614c7d565b82156133d45760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b60648201526084016109d3565b6001600160a01b0382161561144a5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b60648201526084016109d3565b5f805f61344761155e565b905061345287613b43565b965061345e8686611cf1565b600382015460048301549196506134789160ff16866117eb565b60038201546004830154613490919060ff168a6117eb565b116134f25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b60648201526084016109d3565b5094959294509192505050565b5f61350861155e565b8054909150840361353b57306001600160a01b0384160361353b5760405162461bcd60e51b81526004016109d390614c7d565b6001600160a01b03821661144a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b60648201526084016109d3565b6135a5612ea5565b5f80516020614f188339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036135de8482614d1e565b506004810161144a8382614d1e565b6135f5612ea5565b6135ff8382613b5b565b61158f82613b7d565b613610612ea5565b6107fa613b8e565b613620612ea5565b5f61362961155e565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561366e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369291906144d8565b815560608401516136f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016109d3565b80546060850151036137725760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016109d3565b60808401516001600160a01b03166137d85760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016109d3565b60128460a0015160ff1611156138425760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016109d3565b60128260ff1611156138a25760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016109d3565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b9186169190910217905561391e9083613ba2565b60048301805460ff1916911515919091179055600390910155505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261144a9186918216906323b872dd90608401613303565b5f845a10156139c65760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016109d3565b83471015613a165760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016109d3565b826001600160a01b03163b5f03613a2e57505f6117f8565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b031684604051613a609190614dd9565b5f604051808303815f865af19150503d805f8114613a99576040519150601f19603f3d011682016040523d82523d5f602084013e613a9e565b606091505b5091509150818015613ac8575080511580613ac8575080806020019051810190613ac89190614df4565b80156122065750505050506001600160a01b03163b151590565b5f613af66001600160a01b03841683613bec565b905080515f14158015613b1a575080806020019051810190613b189190614df4565b155b1561158f57604051635274afe760e01b81526001600160a01b03841660048201526024016109d3565b5f613b5762010203600160981b01836116ab565b5090565b613b63612ea5565b613b6b613bf9565b613b73613c09565b61155a8282613c11565b613b85612ea5565b610ae281613d95565b5f5f80516020614f38833981519152611fbc565b5f8060ff808516908416118181613bc557613bbd8587614e13565b60ff16613bd3565b613bcf8686614e13565b60ff165b613bde90600a614f0c565b9350909150505b9250929050565b606061099083835f613d9d565b613c01612ea5565b6107fa613e2c565b6107fa612ea5565b613c19612ea5565b6001600160a01b038216613c955760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016109d3565b5f5f80516020614f7883398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0b91906144d8565b11613d735760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016109d3565b81546001600160a01b0319166001600160a01b03821617825561144a8361191b565b6114de612ea5565b606081471015613dc25760405163cd78605960e01b81523060048201526024016109d3565b5f80856001600160a01b03168486604051613ddd9190614dd9565b5f6040518083038185875af1925050503d805f8114613e17576040519150601f19603f3d011682016040523d82523d5f602084013e613e1c565b606091505b5091509150613101868383613e34565b611f99612ea5565b606082613e4957613e4482613e90565b610990565b8151158015613e6057506001600160a01b0384163b155b15613e8957604051639996b31560e01b81526001600160a01b03851660048201526024016109d3565b5080610990565b805115613ea05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015613ed3578181015183820152602001613ebb565b50505f910152565b5f8151808452613ef2816020860160208601613eb9565b601f01601f19169290920160200192915050565b602081525f6109906020830184613edb565b6001600160a01b0381168114610ae2575f80fd5b8035613f3781613f18565b919050565b5f8060408385031215613f4d575f80fd5b8235613f5881613f18565b946020939093013593505050565b5f805f60608486031215613f78575f80fd5b8335613f8381613f18565b92506020840135613f9381613f18565b929592945050506040919091013590565b5f60208284031215613fb4575f80fd5b813561099081613f18565b5f60208284031215613fcf575f80fd5b5035919050565b5f60208284031215613fe6575f80fd5b81356001600160401b03811115613ffb575f80fd5b82016101608185031215610990575f80fd5b5f610100828403121561401e575f80fd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561405a5761405a614024565b60405290565b604080519081016001600160401b038111828210171561405a5761405a614024565b60405161010081016001600160401b038111828210171561405a5761405a614024565b604051601f8201601f191681016001600160401b03811182821017156140cd576140cd614024565b604052919050565b5f6001600160401b038211156140ed576140ed614024565b50601f01601f191660200190565b5f82601f83011261410a575f80fd5b813561411d614118826140d5565b6140a5565b818152846020838601011115614131575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215614162575f80fd5b60c081121561416f575f80fd5b50614178614038565b853561418381613f18565b8152602086013561419381613f18565b80602083015250604086013560408201526060860135606082015260808601356141bc81613f18565b608082015260a086013560ff811681146141d4575f80fd5b60a0820152935060c08501356001600160401b038111156141f3575f80fd5b6141ff878288016140fb565b949794965050505060e0830135926101000135919050565b5f6040828403121561401e575f80fd5b5f805f806060858703121561423a575f80fd5b84359350602085013561424c81613f18565b925060408501356001600160401b0380821115614267575f80fd5b818701915087601f83011261427a575f80fd5b813581811115614288575f80fd5b886020828501011115614299575f80fd5b95989497505060200194505050565b5f80604083850312156142b9575f80fd5b82356142c481613f18565b915060208301356142d481613f18565b809150509250929050565b600181811c908216806142f357607f821691505b60208210810361401e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156108fa576108fa614311565b818103818111156108fa576108fa614311565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b80820281158282048414176108fa576108fa614311565b5f8261440e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b0316815260208083015190820152604081016108fa565b602081525f82516005811061446a57634e487b7160e01b5f52602160045260245ffd5b8060208401525060208301516040808401526117f86060840182613edb565b6020808252602f908201527f4e6174697665546f6b656e52656d6f74653a20636f6e747261637420756e646560408201526e1c98dbdb1b185d195c985b1a5e9959608a1b606082015260800190565b5f602082840312156144e8575f80fd5b5051919050565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b8084101561457c5784518316825293850193600193909301929085019061455a565b5060a0880151878203601f190160e0890152945061459a8186613edb565b98975050505050505050565b5f82601f8301126145b5575f80fd5b81516145c3614118826140d5565b8181528460208386010111156145d7575f80fd5b6117f8826020830160208701613eb9565b5f602082840312156145f8575f80fd5b81516001600160401b038082111561460e575f80fd5b9083019060408286031215614621575f80fd5b614629614060565b825160058110614637575f80fd5b815260208301518281111561464a575f80fd5b614656878286016145a6565b60208301525095945050505050565b8051613f3781613f18565b5f60408284031215614680575f80fd5b614688614060565b825161469381613f18565b81526020928301519281019290925250919050565b5f602082840312156146b8575f80fd5b81516001600160401b03808211156146ce575f80fd5b9083019061010082860312156146e2575f80fd5b6146ea614082565b825181526146fa60208401614665565b602082015261470b60408401614665565b604082015261471c60608401614665565b60608201526080830151608082015260a08301518281111561473c575f80fd5b614748878286016145a6565b60a08301525060c083015160c082015261476460e08401614665565b60e082015295945050505050565b5f60208284031215614782575f80fd5b815161099081613f18565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b5f808335601e1984360301811261488e575f80fd5b8301803591506001600160401b038211156148a7575f80fd5b602001915036819003821315613be5575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161490360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261492a610120850183613edb565b915060c085015160e085015260e085015161494f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261496e575f80fd5b83016020810192503590506001600160401b0381111561498c575f80fd5b803603821315613be5575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6149da60208501613f2c565b6001600160a01b031660608301526149f460408501613f2c565b6001600160a01b03166080830152614a0f6060850185614959565b6101608060a0860152614a276101a08601838561499a565b9250608087013560c086015260a087013560e0860152614a4960c08801613f2c565b9150610100614a62818701846001600160a01b03169052565b614a6e60e08901613f2c565b9250610120614a87818801856001600160a01b03169052565b614a92828a01613f2c565b93506101409150614aad828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b60208152614aea6020820183516001600160a01b03169052565b602082015160408201525f6040830151614b0f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c0850152614b4b610180850183613edb565b915060c085015160e085015260e0850151610100614b73818701836001600160a01b03169052565b860151610120868101919091528601519050610140614b9c818701836001600160a01b03169052565b959095015193019290925250919050565b8235815261012081016020840135614bc481613f18565b6001600160a01b039081166020840152604085013590614be382613f18565b166040830152614bf560608501613f2c565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c0830152614c2f60e08501613f2c565b6001600160a01b031660e083015261010090910191909152919050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f9061310190830184613edb565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f82111561158f57805f5260205f20601f840160051c81016020851015614cff5750805b601f840160051c820191505b81811015611f92575f8155600101614d0b565b81516001600160401b03811115614d3757614d37614024565b614d4b81614d4584546142df565b84614cda565b602080601f831160018114614d7e575f8415614d675750858301515b5f19600386901b1c1916600185901b17855561126e565b5f85815260208120601f198616915b82811015614dac57888601518255948401946001909101908401614d8d565b5085821015614dc957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251614dea818460208701613eb9565b9190910192915050565b5f60208284031215614e04575f80fd5b81518015158114610990575f80fd5b60ff82811682821603908111156108fa576108fa614311565b600181815b80851115614e6657815f1904821115614e4c57614e4c614311565b80851615614e5957918102915b93841c9390800290614e31565b509250929050565b5f82614e7c575060016108fa565b81614e8857505f6108fa565b8160018114614e9e5760028114614ea857614ec4565b60019150506108fa565b60ff841115614eb957614eb9614311565b50506001821b6108fa565b5060208310610133831016604e8410600b8410161715614ee7575081810a6108fa565b614ef18383614e2c565b805f1904821115614f0457614f04614311565b029392505050565b5f6109908383614e6e56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c750069a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212201b8ce1a3a17a5a05b783dcb054aa6995d382f3f04a539a1c6e898952e34d7a1b64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // NativeTokenRemoteABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/TokenRemote/NativeTokenRemoteUpgradeable/NativeTokenRemoteUpgradeable.go b/abi-bindings/go/ictt/TokenRemote/NativeTokenRemoteUpgradeable/NativeTokenRemoteUpgradeable.go index 9827c052c..e116c01c0 100644 --- a/abi-bindings/go/ictt/TokenRemote/NativeTokenRemoteUpgradeable/NativeTokenRemoteUpgradeable.go +++ b/abi-bindings/go/ictt/TokenRemote/NativeTokenRemoteUpgradeable/NativeTokenRemoteUpgradeable.go @@ -75,7 +75,7 @@ type TokenRemoteSettings struct { // NativeTokenRemoteUpgradeableMetaData contains all meta data concerning the NativeTokenRemoteUpgradeable contract. var NativeTokenRemoteUpgradeableMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feesBurned\",\"type\":\"uint256\"}],\"name\":\"ReportBurnedTxFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensAndCallSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"BURNED_FOR_TRANSFER_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNED_TX_FEES_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOME_CHAIN_BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_GAS_PER_WORD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_CALL_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTI_HOP_SEND_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REGISTER_REMOTE_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_REMOTE_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"payloadSize\",\"type\":\"uint256\"}],\"name\":\"calculateNumWords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInitialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIsCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMultiplyOnRemote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenHomeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenHomeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenHomeAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenHomeDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structTokenRemoteSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"nativeAssetSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialReserveImbalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnedFeesReportingRewardPercentage\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"registerWithHome\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"}],\"name\":\"reportBurnedTxFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"}],\"internalType\":\"structSendTokensInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"recipientGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"multiHopFallback\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fallbackRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"primaryFeeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFee\",\"type\":\"uint256\"}],\"internalType\":\"structSendAndCallInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"sendAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalNativeAssetSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161511a38038061511a83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b614fcd8061014d5f395ff3fe608060405260043610610280575f3560e01c8063715018a61161014e578063b8a46d02116100c0578063dd62ed3e11610079578063dd62ed3e14610736578063e0fd9cb814610755578063ed0ae4b014610452578063ef793e2a14610769578063f2fde38b1461077d578063f3f981d81461079c5761028f565b8063b8a46d02146106b9578063c3cd6927146106d8578063c452165e146106ec578063c868efaa14610703578063d0e30db01461028f578063d2cc7a70146107225761028f565b80638f6cec88116101125780638f6cec8814610608578063909a6ac01461062757806395d89b4114610647578063973142971461065b578063a5717bc01461067a578063a9059cbb1461069a5761028f565b8063715018a61461057b57806371717c181461058f5780637ee3779a146105a55780638bf2fa94146105b95780638da5cb5b146105cc5761028f565b80632e1a7d4d116101f25780634511243e116101ab5780634511243e146104b55780635507f3d1146104d457806355538c8b146104ea5780635eb99514146105095780636e6eef8d1461052857806370a082311461053b5761028f565b80632e1a7d4d146103e6578063313ce56714610405578063329c3e1214610420578063347212c41461045257806335cac1591461046e5780634213cf78146104a15761028f565b806315beb59f1161024457806315beb59f1461035557806318160ddd1461036a5780631906529c1461037e57806323b872dd14610392578063254ac160146103b15780632b0d8f18146103c75761028f565b806302a30c7d1461029757806306fdde03146102c05780630733c8c8146102e1578063095ea7b3146103035780630ca1c5c9146103225761028f565b3661028f5761028d6107bb565b005b61028d6107bb565b3480156102a2575f80fd5b506102ab6107fc565b60405190151581526020015b60405180910390f35b3480156102cb575f80fd5b506102d4610813565b6040516102b79190613f06565b3480156102ec575f80fd5b506102f56108d3565b6040519081526020016102b7565b34801561030e575f80fd5b506102ab61031d366004613f3c565b6108e7565b34801561032d575f80fd5b507f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf501546102f5565b348015610360575f80fd5b506102f56105dc81565b348015610375575f80fd5b506102f5610900565b348015610389575f80fd5b506102f561091b565b34801561039d575f80fd5b506102ab6103ac366004613f66565b610972565b3480156103bc575f80fd5b506102f56201fbd081565b3480156103d2575f80fd5b5061028d6103e1366004613fa4565b610997565b3480156103f1575f80fd5b5061028d610400366004613fbf565b610a99565b348015610410575f80fd5b50604051601281526020016102b7565b34801561042b575f80fd5b5061043a6001600160991b0181565b6040516001600160a01b0390911681526020016102b7565b34801561045d575f80fd5b5061043a62010203600160981b0181565b348015610479575f80fd5b506102f57f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b3480156104ac575f80fd5b506102f5610ae5565b3480156104c0575f80fd5b5061028d6104cf366004613fa4565b610af6565b3480156104df575f80fd5b506102f56205302081565b3480156104f5575f80fd5b5061028d610504366004613fbf565b610be5565b348015610514575f80fd5b5061028d610523366004613fbf565b610ef7565b61028d610536366004613fd6565b610f08565b348015610546575f80fd5b506102f5610555366004613fa4565b6001600160a01b03165f9081525f80516020614f18833981519152602052604090205490565b348015610586575f80fd5b5061028d610f36565b34801561059a575f80fd5b506102f56205573081565b3480156105b0575f80fd5b506102ab610f47565b61028d6105c736600461400d565b610f5e565b3480156105d7575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661043a565b348015610613575f80fd5b5061028d61062236600461414d565b610f8c565b348015610632575f80fd5b506102f55f80516020614f7883398151915281565b348015610652575f80fd5b506102d461109e565b348015610666575f80fd5b506102ab610675366004613fa4565b6110dc565b348015610685575f80fd5b506102f55f80516020614f5883398151915281565b3480156106a5575f80fd5b506102ab6106b4366004613f3c565b6110f5565b3480156106c4575f80fd5b5061028d6106d3366004614217565b611102565b3480156106e3575f80fd5b5061043a611276565b3480156106f7575f80fd5b5061043a600160981b81565b34801561070e575f80fd5b5061028d61071d366004614227565b611293565b34801561072d575f80fd5b506102f5611450565b348015610741575f80fd5b506102f56107503660046142a8565b611465565b348015610760575f80fd5b506102f56114ae565b348015610774575f80fd5b506102f56114c2565b348015610788575f80fd5b5061028d610797366004613fa4565b6114d6565b3480156107a7575f80fd5b506102f56107b6366004613fbf565b611510565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a26107fa3334611526565b565b5f8061080661155e565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f80516020614f1883398151915291610851906142df565b80601f016020809104026020016040519081016040528092919081815260200182805461087d906142df565b80156108c85780601f1061089f576101008083540402835291602001916108c8565b820191905f5260205f20905b8154815290600101906020018083116108ab57829003601f168201915b505050505091505090565b5f806108dd61155e565b6003015492915050565b5f336108f4818585611582565b60019150505b92915050565b5f805f80516020614f188339815191525b6002015492915050565b5f5f80516020614f588339815191528161094462010203600160981b0131600160981b31614325565b90505f61094f6114c2565b836001015461095e9190614325565b905061096a8282614338565b935050505090565b5f3361097f858285611594565b61098a8585856115f1565b60019150505b9392505050565b5f80516020614f788339815191526109ad61164e565b6001600160a01b0382166109dc5760405162461bcd60e51b81526004016109d39061434b565b60405180910390fd5b6109e68183611656565b15610a495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016109d3565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a2610ad83382611677565b610ae233826116ab565b50565b5f80610aef61155e565b5492915050565b5f80516020614f78833981519152610b0c61164e565b6001600160a01b038216610b325760405162461bcd60e51b81526004016109d39061434b565b610b3c8183611656565b610b9a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016109d3565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b5f80516020614f388339815191528054600114610c145760405162461bcd60e51b81526004016109d390614399565b600281557f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf502545f80516020614f5883398151915290600160981b31908111610cd25760405162461bcd60e51b8152602060048201526044602482018190527f4e6174697665546f6b656e52656d6f74653a206275726e206164647265737320908201527f62616c616e6365206e6f742067726561746572207468616e206c6173742072656064820152631c1bdc9d60e21b608482015260a4016109d3565b5f826002015482610ce39190614338565b90505f6064845f015483610cf791906143dd565b610d0191906143f4565b90505f610d0e8284614338565b6002860185905590508115610d3157610d27308361173e565b610d313083611526565b5f610d4b610d3d6108d3565b610d45610f47565b846117eb565b11610db55760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e52656d6f74653a207a65726f207363616c6564206160448201527336b7bab73a103a37903932b837b93a10313ab93760611b60648201526084016109d3565b604080518082018252600181528151808301835262010203600160981b018152602080820185905292515f9380840192610df192909101614427565b60405160208183030381529060405281525090505f610eac6040518060c00160405280610e1c6114ae565b8152602001610e29611276565b6001600160a01b0316815260408051808201825230815260208181018a905283015281018c90526060015f5b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b50815260200184604051602001610e959190614447565b604051602081830303815290604052815250611800565b9050807f0832c643b65d6d3724ed14ac3a655fbc7cae54fb010918b2c2f70ef6b1bb94a584604051610ee091815260200190565b60405180910390a250506001909555505050505050565b610eff61164e565b610ae28161191b565b610f106107fc565b610f2c5760405162461bcd60e51b81526004016109d390614489565b610ae28134611ab3565b610f3e611b2a565b6107fa5f611b85565b5f80610f5161155e565b6004015460ff1692915050565b610f666107fc565b610f825760405162461bcd60e51b81526004016109d390614489565b610ae28134611bf5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fd05750825b90505f826001600160401b03166001148015610feb5750303b155b905081158015610ff9575080155b156110175760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561104157845460ff60401b1916600160401b1785555b61104d89898989611c61565b831561109357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f80516020614f1883398151915291610851906142df565b5f5f80516020614f788339815191526109908184611656565b5f336108f48185856115f1565b5f61110b61155e565b6006810154909150610100900460ff16156111685760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c726561647920726567697374657265640060448201526064016109d3565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a015291519093168286015286518083039095018552608090910190955280820192909252919290916111fd906111f390870187613fa4565b8660200135611cf1565b6040805160c0810182526001870154815260028701546001600160a01b03166020808301919091528251808401845293945061126e939192830191908190611247908b018b613fa4565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f610e55565b505050505050565b5f8061128061155e565b600201546001600160a01b031692915050565b61129b611d38565b5f5f80516020614f7883398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611306573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132a91906144d8565b10156113915760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016109d3565b61139b8133611656565b156114015760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016109d3565b611441858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d8292505050565b5061144a611f99565b50505050565b5f805f80516020614f78833981519152610911565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f806114b861155e565b6001015492915050565b5f806114cc61155e565b6005015492915050565b6114de611b2a565b6001600160a01b03811661150757604051631e4fbdf760e01b81525f60048201526024016109d3565b610ae281611b85565b5f600561151e83601f614325565b901c92915050565b6001600160a01b03821661154f5760405163ec442f0560e01b81525f60048201526024016109d3565b61155a5f8383611fc3565b5050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b61158f83838360016120fc565b505050565b5f61159f8484611465565b90505f19811461144a57818110156115e357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109d3565b61144a84848484035f6120fc565b6001600160a01b03831661161a57604051634b637e8f60e11b81525f60048201526024016109d3565b6001600160a01b0382166116435760405163ec442f0560e01b81525f60048201526024016109d3565b61158f838383611fc3565b6107fa611b2a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6001600160a01b0382166116a057604051634b637e8f60e11b81525f60048201526024016109d3565b61155a825f83611fc3565b804710156116ce5760405163cd78605960e01b81523060048201526024016109d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611717576040519150601f19603f3d011682016040523d82523d5f602084013e61171c565b606091505b505090508061158f57604051630a12f52160e11b815260040160405180910390fd5b7f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf50180545f80516020614f588339815191529183915f9061177f908490614325565b90915550506040516327ad555d60e11b81526001600160a01b0384166004820152602481018390526001600160991b0190634f5aaaba906044015f604051808303815f87803b1580156117d0575f80fd5b505af11580156117e2573d5f803e3d5ffd5b50505050505050565b5f6117f88484845f6121df565b949350505050565b5f8061180a61220f565b604084015160200151909150156118af576040830151516001600160a01b031661188c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016109d3565b6040830151602081015190516118af916001600160a01b039091169083906122ff565b604051630624488560e41b81526001600160a01b038216906362448850906118db9086906004016144ef565b6020604051808303815f875af11580156118f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099091906144d8565b5f80516020614f7883398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa15801561196f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199391906144d8565b600283015490915081841115611a055760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016109d3565b808411611a7a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016109d3565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f80516020614f388339815191528054600114611ae25760405162461bcd60e51b81526004016109d390614399565b600281555f611aef61155e565b9050611afa84612386565b6001810154843503611b1657611b1084846125c0565b50611b22565b611b1084846127e4565b505b600190555050565b33611b5c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107fa5760405163118cdaa760e01b81523360048201526024016109d3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f80516020614f388339815191528054600114611c245760405162461bcd60e51b81526004016109d390614399565b600281555f611c3161155e565b9050611c3c84612a85565b6001810154843503611c5757611c528484612b70565b611b20565b611b208484612cdf565b611c69612ea5565b815f03611cd25760405162461bcd60e51b815260206004820152603160248201527f4e6174697665546f6b656e52656d6f74653a207a65726f20696e697469616c206044820152707265736572766520696d62616c616e636560781b60648201526084016109d3565b611cdc8384612eee565b611ce884836012612f00565b61144a81612f31565b5f815f03611d0057505f6108fa565b306001600160a01b03841603611d2d57611d1b333084611594565b611d263330846115f1565b50806108fa565b610990833384612fa8565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611d7c57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f611d8b61155e565b905080600101548414611df25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b60648201526084016109d3565b60028101546001600160a01b03848116911614611e645760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b60648201526084016109d3565b5f82806020019051810190611e7991906145e8565b6006830154909150610100900460ff161580611e9a5750600682015460ff16155b15611eb15760068201805461ffff19166101011790555b600181516004811115611ec657611ec6614413565b03611efd575f8160200151806020019051810190611ee49190614670565b9050611ef7815f0151826020015161310b565b50611f92565b600281516004811115611f1257611f12614413565b03611f40575f8160200151806020019051810190611f3091906146a8565b9050611ef7818260800151613158565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b60648201526084016109d3565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614f188339815191526001600160a01b038416611ffd5781816002015f828254611ff29190614325565b9091555061206d9050565b6001600160a01b0384165f908152602082905260409020548281101561204f5760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016109d3565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661208b5760028101805483900390556120a9565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ee91815260200190565b60405180910390a350505050565b5f80516020614f188339815191526001600160a01b0385166121335760405163e602df0560e01b81525f60048201526024016109d3565b6001600160a01b03841661215c57604051634a1406b160e11b81525f60048201526024016109d3565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611f9257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516121d091815260200190565b60405180910390a35050505050565b5f811515841515036121fc576121f585846143dd565b90506117f8565b61220685846143f4565b95945050505050565b5f80516020614f7883398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612269573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228d9190614772565b90506122998282611656565b156108fa5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016109d3565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561234c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237091906144d8565b905061144a84846123818585614325565b613282565b80356123a45760405162461bcd60e51b81526004016109d39061478d565b5f6123b56040830160208401613fa4565b6001600160a01b0316036123db5760405162461bcd60e51b81526004016109d3906147d8565b5f6123ec6060830160408401613fa4565b6001600160a01b0316036124575760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b60648201526084016109d3565b5f81608001351161247a5760405162461bcd60e51b81526004016109d390614835565b5f8160a00135116124db5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b60648201526084016109d3565b80608001358160a00135106125435760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b60648201526084016109d3565b5f612555610100830160e08401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b60648201526084016109d3565b5f6125c961155e565b90506125f96125de6040850160208601613fa4565b6101408501356125f460e0870160c08801613fa4565b61333f565b5f6126218361261061012087016101008801613fa4565b86610120013587610140013561343c565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016126653390565b6001600160a01b0316815260200161268360608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016126a560608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016126f96101008a0160e08b01613fa4565b6001600160a01b0316905260405161271491906020016148bb565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612796928201908061276e6101208c016101008d01613fa4565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610e55565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1688886040516127d49291906149c2565b60405180910390a3505050505050565b5f6127ed61155e565b905061281983356128046040860160208701613fa4565b61281460e0870160c08801613fa4565b6134ff565b5f6128308361261061012087016101008801613fa4565b6040805180820190915291945091505f90806004815260200160405180610160016040528061285c3390565b6001600160a01b03168152602001885f013581526020018860200160208101906128869190613fa4565b6001600160a01b031681526020016128a460608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016128c660608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161291a6101008a0160e08b01613fa4565b6001600160a01b031681526080890135602082015260400161294260e08a0160c08b01613fa4565b6001600160a01b03168152610140890135602091820152604051612967929101614ad0565b60408051601f19818403018152919052905290505f6105dc61299661298f6060890189614879565b9050611510565b6129a091906143dd565b6129ad9062055730614325565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f92612a3692820190806129f76101208d016101008e01613fa4565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610e9591889101614447565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168989604051612a749291906149c2565b60405180910390a350505050505050565b5f612a966060830160408401613fa4565b6001600160a01b031603612af85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b60648201526084016109d3565b5f8160c0013511612b1b5760405162461bcd60e51b81526004016109d390614835565b8035612b395760405162461bcd60e51b81526004016109d39061478d565b5f612b4a6040830160208401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b81526004016109d3906147d8565b5f612b7961155e565b9050612ba4612b8e6040850160208601613fa4565b60a08501356125f4610100870160e08801613fa4565b5f612bc883612bb96080870160608801613fa4565b86608001358760a0013561343c565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190612bff9190613fa4565b6001600160a01b0316815260200187815250604051602001612c219190614427565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612c7960808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610e55565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5288886040516127d4929190614bad565b5f612ce861155e565b9050612d108335612cff6040860160208701613fa4565b612814610100870160e08801613fa4565b5f612d2583612bb96080870160608801613fa4565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191612d5e918b01908b01613fa4565b6001600160a01b03168152602001612d7c60608a0160408b01613fa4565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001612db66101008a0160e08b01613fa4565b6001600160a01b03169052604051612e269190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612e7e60808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825262053020908201526040015f610e55565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107fa57604051631afcd79f60e31b815260040160405180910390fd5b612ef6612ea5565b61155a828261359d565b612f08612ea5565b612f1e835f0151846020015185604001516135ed565b612f26613608565b61158f838383613618565b612f39612ea5565b60648110612f975760405162461bcd60e51b815260206004820152602560248201527f4e6174697665546f6b656e52656d6f74653a20696e76616c69642070657263656044820152646e7461676560d81b60648201526084016109d3565b5f80516020614f5883398151915255565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612fee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301291906144d8565b90506130296001600160a01b03861685308661393c565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561306d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061309191906144d8565b90508181116130f75760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016109d3565b6131018282614338565b9695505050505050565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8260405161314691815260200190565b60405180910390a261155a828261173e565b613162308261173e565b5f825f0151836020015184604001518560a001516040516024016131899493929190614c4c565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c084015160608501519192505f916131cf9190859085613975565b905080156132235783606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff48460405161321691815260200190565b60405180910390a261144a565b83606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08460405161326291815260200190565b60405180910390a260e084015161144a906001600160a01b0316846116ab565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526132d38482613a45565b61144a576040516001600160a01b0384811660248301525f604483015261333591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613ae2565b61144a8482613ae2565b5f61334861155e565b60028101549091506001600160a01b0385811691161461337a5760405162461bcd60e51b81526004016109d390614c7d565b82156133d45760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b60648201526084016109d3565b6001600160a01b0382161561144a5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b60648201526084016109d3565b5f805f61344761155e565b905061345287613b43565b965061345e8686611cf1565b600382015460048301549196506134789160ff16866117eb565b60038201546004830154613490919060ff168a6117eb565b116134f25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b60648201526084016109d3565b5094959294509192505050565b5f61350861155e565b8054909150840361353b57306001600160a01b0384160361353b5760405162461bcd60e51b81526004016109d390614c7d565b6001600160a01b03821661144a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b60648201526084016109d3565b6135a5612ea5565b5f80516020614f188339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036135de8482614d1e565b506004810161144a8382614d1e565b6135f5612ea5565b6135ff8382613b5b565b61158f82613b7d565b613610612ea5565b6107fa613b8e565b613620612ea5565b5f61362961155e565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561366e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369291906144d8565b815560608401516136f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016109d3565b80546060850151036137725760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016109d3565b60808401516001600160a01b03166137d85760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016109d3565b60128460a0015160ff1611156138425760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016109d3565b60128260ff1611156138a25760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016109d3565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b9186169190910217905561391e9083613ba2565b60048301805460ff1916911515919091179055600390910155505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261144a9186918216906323b872dd90608401613303565b5f845a10156139c65760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016109d3565b83471015613a165760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016109d3565b826001600160a01b03163b5f03613a2e57505f6117f8565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b031684604051613a609190614dd9565b5f604051808303815f865af19150503d805f8114613a99576040519150601f19603f3d011682016040523d82523d5f602084013e613a9e565b606091505b5091509150818015613ac8575080511580613ac8575080806020019051810190613ac89190614df4565b80156122065750505050506001600160a01b03163b151590565b5f613af66001600160a01b03841683613bec565b905080515f14158015613b1a575080806020019051810190613b189190614df4565b155b1561158f57604051635274afe760e01b81526001600160a01b03841660048201526024016109d3565b5f613b5762010203600160981b01836116ab565b5090565b613b63612ea5565b613b6b613bf9565b613b73613c09565b61155a8282613c11565b613b85612ea5565b610ae281613d95565b5f5f80516020614f38833981519152611fbc565b5f8060ff808516908416118181613bc557613bbd8587614e13565b60ff16613bd3565b613bcf8686614e13565b60ff165b613bde90600a614f0c565b9350909150505b9250929050565b606061099083835f613d9d565b613c01612ea5565b6107fa613e2c565b6107fa612ea5565b613c19612ea5565b6001600160a01b038216613c955760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016109d3565b5f5f80516020614f7883398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0b91906144d8565b11613d735760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016109d3565b81546001600160a01b0319166001600160a01b03821617825561144a8361191b565b6114de612ea5565b606081471015613dc25760405163cd78605960e01b81523060048201526024016109d3565b5f80856001600160a01b03168486604051613ddd9190614dd9565b5f6040518083038185875af1925050503d805f8114613e17576040519150601f19603f3d011682016040523d82523d5f602084013e613e1c565b606091505b5091509150613101868383613e34565b611f99612ea5565b606082613e4957613e4482613e90565b610990565b8151158015613e6057506001600160a01b0384163b155b15613e8957604051639996b31560e01b81526001600160a01b03851660048201526024016109d3565b5080610990565b805115613ea05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015613ed3578181015183820152602001613ebb565b50505f910152565b5f8151808452613ef2816020860160208601613eb9565b601f01601f19169290920160200192915050565b602081525f6109906020830184613edb565b6001600160a01b0381168114610ae2575f80fd5b8035613f3781613f18565b919050565b5f8060408385031215613f4d575f80fd5b8235613f5881613f18565b946020939093013593505050565b5f805f60608486031215613f78575f80fd5b8335613f8381613f18565b92506020840135613f9381613f18565b929592945050506040919091013590565b5f60208284031215613fb4575f80fd5b813561099081613f18565b5f60208284031215613fcf575f80fd5b5035919050565b5f60208284031215613fe6575f80fd5b81356001600160401b03811115613ffb575f80fd5b82016101608185031215610990575f80fd5b5f610100828403121561401e575f80fd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561405a5761405a614024565b60405290565b604080519081016001600160401b038111828210171561405a5761405a614024565b60405161010081016001600160401b038111828210171561405a5761405a614024565b604051601f8201601f191681016001600160401b03811182821017156140cd576140cd614024565b604052919050565b5f6001600160401b038211156140ed576140ed614024565b50601f01601f191660200190565b5f82601f83011261410a575f80fd5b813561411d614118826140d5565b6140a5565b818152846020838601011115614131575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215614162575f80fd5b60c081121561416f575f80fd5b50614178614038565b853561418381613f18565b8152602086013561419381613f18565b80602083015250604086013560408201526060860135606082015260808601356141bc81613f18565b608082015260a086013560ff811681146141d4575f80fd5b60a0820152935060c08501356001600160401b038111156141f3575f80fd5b6141ff878288016140fb565b949794965050505060e0830135926101000135919050565b5f6040828403121561401e575f80fd5b5f805f806060858703121561423a575f80fd5b84359350602085013561424c81613f18565b925060408501356001600160401b0380821115614267575f80fd5b818701915087601f83011261427a575f80fd5b813581811115614288575f80fd5b886020828501011115614299575f80fd5b95989497505060200194505050565b5f80604083850312156142b9575f80fd5b82356142c481613f18565b915060208301356142d481613f18565b809150509250929050565b600181811c908216806142f357607f821691505b60208210810361401e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156108fa576108fa614311565b818103818111156108fa576108fa614311565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b80820281158282048414176108fa576108fa614311565b5f8261440e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b0316815260208083015190820152604081016108fa565b602081525f82516005811061446a57634e487b7160e01b5f52602160045260245ffd5b8060208401525060208301516040808401526117f86060840182613edb565b6020808252602f908201527f4e6174697665546f6b656e52656d6f74653a20636f6e747261637420756e646560408201526e1c98dbdb1b185d195c985b1a5e9959608a1b606082015260800190565b5f602082840312156144e8575f80fd5b5051919050565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b8084101561457c5784518316825293850193600193909301929085019061455a565b5060a0880151878203601f190160e0890152945061459a8186613edb565b98975050505050505050565b5f82601f8301126145b5575f80fd5b81516145c3614118826140d5565b8181528460208386010111156145d7575f80fd5b6117f8826020830160208701613eb9565b5f602082840312156145f8575f80fd5b81516001600160401b038082111561460e575f80fd5b9083019060408286031215614621575f80fd5b614629614060565b825160058110614637575f80fd5b815260208301518281111561464a575f80fd5b614656878286016145a6565b60208301525095945050505050565b8051613f3781613f18565b5f60408284031215614680575f80fd5b614688614060565b825161469381613f18565b81526020928301519281019290925250919050565b5f602082840312156146b8575f80fd5b81516001600160401b03808211156146ce575f80fd5b9083019061010082860312156146e2575f80fd5b6146ea614082565b825181526146fa60208401614665565b602082015261470b60408401614665565b604082015261471c60608401614665565b60608201526080830151608082015260a08301518281111561473c575f80fd5b614748878286016145a6565b60a08301525060c083015160c082015261476460e08401614665565b60e082015295945050505050565b5f60208284031215614782575f80fd5b815161099081613f18565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b5f808335601e1984360301811261488e575f80fd5b8301803591506001600160401b038211156148a7575f80fd5b602001915036819003821315613be5575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161490360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261492a610120850183613edb565b915060c085015160e085015260e085015161494f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261496e575f80fd5b83016020810192503590506001600160401b0381111561498c575f80fd5b803603821315613be5575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6149da60208501613f2c565b6001600160a01b031660608301526149f460408501613f2c565b6001600160a01b03166080830152614a0f6060850185614959565b6101608060a0860152614a276101a08601838561499a565b9250608087013560c086015260a087013560e0860152614a4960c08801613f2c565b9150610100614a62818701846001600160a01b03169052565b614a6e60e08901613f2c565b9250610120614a87818801856001600160a01b03169052565b614a92828a01613f2c565b93506101409150614aad828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b60208152614aea6020820183516001600160a01b03169052565b602082015160408201525f6040830151614b0f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c0850152614b4b610180850183613edb565b915060c085015160e085015260e0850151610100614b73818701836001600160a01b03169052565b860151610120868101919091528601519050610140614b9c818701836001600160a01b03169052565b959095015193019290925250919050565b8235815261012081016020840135614bc481613f18565b6001600160a01b039081166020840152604085013590614be382613f18565b166040830152614bf560608501613f2c565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c0830152614c2f60e08501613f2c565b6001600160a01b031660e083015261010090910191909152919050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f9061310190830184613edb565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f82111561158f57805f5260205f20601f840160051c81016020851015614cff5750805b601f840160051c820191505b81811015611f92575f8155600101614d0b565b81516001600160401b03811115614d3757614d37614024565b614d4b81614d4584546142df565b84614cda565b602080601f831160018114614d7e575f8415614d675750858301515b5f19600386901b1c1916600185901b17855561126e565b5f85815260208120601f198616915b82811015614dac57888601518255948401946001909101908401614d8d565b5085821015614dc957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251614dea818460208701613eb9565b9190910192915050565b5f60208284031215614e04575f80fd5b81518015158114610990575f80fd5b60ff82811682821603908111156108fa576108fa614311565b600181815b80851115614e6657815f1904821115614e4c57614e4c614311565b80851615614e5957918102915b93841c9390800290614e31565b509250929050565b5f82614e7c575060016108fa565b81614e8857505f6108fa565b8160018114614e9e5760028114614ea857614ec4565b60019150506108fa565b60ff841115614eb957614eb9614311565b50506001821b6108fa565b5060208310610133831016604e8410600b8410161715614ee7575081810a6108fa565b614ef18383614e2c565b805f1904821115614f0457614f04614311565b029392505050565b5f6109908383614e6e56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c750069a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212208f623a776529a77a32438740bff336aed28ff97cc2392ae5b3446d011dc1d03364736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b5060405161511a38038061511a83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b614fcd8061014d5f395ff3fe608060405260043610610280575f3560e01c8063715018a61161014e578063b8a46d02116100c0578063dd62ed3e11610079578063dd62ed3e14610736578063e0fd9cb814610755578063ed0ae4b014610452578063ef793e2a14610769578063f2fde38b1461077d578063f3f981d81461079c5761028f565b8063b8a46d02146106b9578063c3cd6927146106d8578063c452165e146106ec578063c868efaa14610703578063d0e30db01461028f578063d2cc7a70146107225761028f565b80638f6cec88116101125780638f6cec8814610608578063909a6ac01461062757806395d89b4114610647578063973142971461065b578063a5717bc01461067a578063a9059cbb1461069a5761028f565b8063715018a61461057b57806371717c181461058f5780637ee3779a146105a55780638bf2fa94146105b95780638da5cb5b146105cc5761028f565b80632e1a7d4d116101f25780634511243e116101ab5780634511243e146104b55780635507f3d1146104d457806355538c8b146104ea5780635eb99514146105095780636e6eef8d1461052857806370a082311461053b5761028f565b80632e1a7d4d146103e6578063313ce56714610405578063329c3e1214610420578063347212c41461045257806335cac1591461046e5780634213cf78146104a15761028f565b806315beb59f1161024457806315beb59f1461035557806318160ddd1461036a5780631906529c1461037e57806323b872dd14610392578063254ac160146103b15780632b0d8f18146103c75761028f565b806302a30c7d1461029757806306fdde03146102c05780630733c8c8146102e1578063095ea7b3146103035780630ca1c5c9146103225761028f565b3661028f5761028d6107bb565b005b61028d6107bb565b3480156102a2575f80fd5b506102ab6107fc565b60405190151581526020015b60405180910390f35b3480156102cb575f80fd5b506102d4610813565b6040516102b79190613f06565b3480156102ec575f80fd5b506102f56108d3565b6040519081526020016102b7565b34801561030e575f80fd5b506102ab61031d366004613f3c565b6108e7565b34801561032d575f80fd5b507f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf501546102f5565b348015610360575f80fd5b506102f56105dc81565b348015610375575f80fd5b506102f5610900565b348015610389575f80fd5b506102f561091b565b34801561039d575f80fd5b506102ab6103ac366004613f66565b610972565b3480156103bc575f80fd5b506102f56201fbd081565b3480156103d2575f80fd5b5061028d6103e1366004613fa4565b610997565b3480156103f1575f80fd5b5061028d610400366004613fbf565b610a99565b348015610410575f80fd5b50604051601281526020016102b7565b34801561042b575f80fd5b5061043a6001600160991b0181565b6040516001600160a01b0390911681526020016102b7565b34801561045d575f80fd5b5061043a62010203600160981b0181565b348015610479575f80fd5b506102f57f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0081565b3480156104ac575f80fd5b506102f5610ae5565b3480156104c0575f80fd5b5061028d6104cf366004613fa4565b610af6565b3480156104df575f80fd5b506102f56205302081565b3480156104f5575f80fd5b5061028d610504366004613fbf565b610be5565b348015610514575f80fd5b5061028d610523366004613fbf565b610ef7565b61028d610536366004613fd6565b610f08565b348015610546575f80fd5b506102f5610555366004613fa4565b6001600160a01b03165f9081525f80516020614f18833981519152602052604090205490565b348015610586575f80fd5b5061028d610f36565b34801561059a575f80fd5b506102f56205573081565b3480156105b0575f80fd5b506102ab610f47565b61028d6105c736600461400d565b610f5e565b3480156105d7575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661043a565b348015610613575f80fd5b5061028d61062236600461414d565b610f8c565b348015610632575f80fd5b506102f55f80516020614f7883398151915281565b348015610652575f80fd5b506102d461109e565b348015610666575f80fd5b506102ab610675366004613fa4565b6110dc565b348015610685575f80fd5b506102f55f80516020614f5883398151915281565b3480156106a5575f80fd5b506102ab6106b4366004613f3c565b6110f5565b3480156106c4575f80fd5b5061028d6106d3366004614217565b611102565b3480156106e3575f80fd5b5061043a611276565b3480156106f7575f80fd5b5061043a600160981b81565b34801561070e575f80fd5b5061028d61071d366004614227565b611293565b34801561072d575f80fd5b506102f5611450565b348015610741575f80fd5b506102f56107503660046142a8565b611465565b348015610760575f80fd5b506102f56114ae565b348015610774575f80fd5b506102f56114c2565b348015610788575f80fd5b5061028d610797366004613fa4565b6114d6565b3480156107a7575f80fd5b506102f56107b6366004613fbf565b611510565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a26107fa3334611526565b565b5f8061080661155e565b6006015460ff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f80516020614f1883398151915291610851906142df565b80601f016020809104026020016040519081016040528092919081815260200182805461087d906142df565b80156108c85780601f1061089f576101008083540402835291602001916108c8565b820191905f5260205f20905b8154815290600101906020018083116108ab57829003601f168201915b505050505091505090565b5f806108dd61155e565b6003015492915050565b5f336108f4818585611582565b60019150505b92915050565b5f805f80516020614f188339815191525b6002015492915050565b5f5f80516020614f588339815191528161094462010203600160981b0131600160981b31614325565b90505f61094f6114c2565b836001015461095e9190614325565b905061096a8282614338565b935050505090565b5f3361097f858285611594565b61098a8585856115f1565b60019150505b9392505050565b5f80516020614f788339815191526109ad61164e565b6001600160a01b0382166109dc5760405162461bcd60e51b81526004016109d39061434b565b60405180910390fd5b6109e68183611656565b15610a495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016109d3565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a2610ad83382611677565b610ae233826116ab565b50565b5f80610aef61155e565b5492915050565b5f80516020614f78833981519152610b0c61164e565b6001600160a01b038216610b325760405162461bcd60e51b81526004016109d39061434b565b610b3c8183611656565b610b9a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016109d3565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b5f80516020614f388339815191528054600114610c145760405162461bcd60e51b81526004016109d390614399565b600281557f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf502545f80516020614f5883398151915290600160981b31908111610cd25760405162461bcd60e51b8152602060048201526044602482018190527f4e6174697665546f6b656e52656d6f74653a206275726e206164647265737320908201527f62616c616e6365206e6f742067726561746572207468616e206c6173742072656064820152631c1bdc9d60e21b608482015260a4016109d3565b5f826002015482610ce39190614338565b90505f6064845f015483610cf791906143dd565b610d0191906143f4565b90505f610d0e8284614338565b6002860185905590508115610d3157610d27308361173e565b610d313083611526565b5f610d4b610d3d6108d3565b610d45610f47565b846117eb565b11610db55760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e52656d6f74653a207a65726f207363616c6564206160448201527336b7bab73a103a37903932b837b93a10313ab93760611b60648201526084016109d3565b604080518082018252600181528151808301835262010203600160981b018152602080820185905292515f9380840192610df192909101614427565b60405160208183030381529060405281525090505f610eac6040518060c00160405280610e1c6114ae565b8152602001610e29611276565b6001600160a01b0316815260408051808201825230815260208181018a905283015281018c90526060015f5b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b50815260200184604051602001610e959190614447565b604051602081830303815290604052815250611800565b9050807f0832c643b65d6d3724ed14ac3a655fbc7cae54fb010918b2c2f70ef6b1bb94a584604051610ee091815260200190565b60405180910390a250506001909555505050505050565b610eff61164e565b610ae28161191b565b610f106107fc565b610f2c5760405162461bcd60e51b81526004016109d390614489565b610ae28134611ab3565b610f3e611b2a565b6107fa5f611b85565b5f80610f5161155e565b6004015460ff1692915050565b610f666107fc565b610f825760405162461bcd60e51b81526004016109d390614489565b610ae28134611bf5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fd05750825b90505f826001600160401b03166001148015610feb5750303b155b905081158015610ff9575080155b156110175760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561104157845460ff60401b1916600160401b1785555b61104d89898989611c61565b831561109357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f80516020614f1883398151915291610851906142df565b5f5f80516020614f788339815191526109908184611656565b5f336108f48185856115f1565b5f61110b61155e565b6006810154909150610100900460ff16156111685760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c726561647920726567697374657265640060448201526064016109d3565b604080516060808201835260058401548252600284015460ff600160a01b820481166020808601918252600160a81b9093048216858701908152865180880188525f808252885188518188015293518516848a015291519093168286015286518083039095018552608090910190955280820192909252919290916111fd906111f390870187613fa4565b8660200135611cf1565b6040805160c0810182526001870154815260028701546001600160a01b03166020808301919091528251808401845293945061126e939192830191908190611247908b018b613fa4565b6001600160a01b0316815260209081018690529082526201fbd0908201526040015f610e55565b505050505050565b5f8061128061155e565b600201546001600160a01b031692915050565b61129b611d38565b5f5f80516020614f7883398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611306573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132a91906144d8565b10156113915760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016109d3565b61139b8133611656565b156114015760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016109d3565b611441858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d8292505050565b5061144a611f99565b50505050565b5f805f80516020614f78833981519152610911565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f806114b861155e565b6001015492915050565b5f806114cc61155e565b6005015492915050565b6114de611b2a565b6001600160a01b03811661150757604051631e4fbdf760e01b81525f60048201526024016109d3565b610ae281611b85565b5f600561151e83601f614325565b901c92915050565b6001600160a01b03821661154f5760405163ec442f0560e01b81525f60048201526024016109d3565b61155a5f8383611fc3565b5050565b7f600d6a9b283d1eda563de594ce4843869b6f128a4baa222422ed94a60b0cef0090565b61158f83838360016120fc565b505050565b5f61159f8484611465565b90505f19811461144a57818110156115e357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109d3565b61144a84848484035f6120fc565b6001600160a01b03831661161a57604051634b637e8f60e11b81525f60048201526024016109d3565b6001600160a01b0382166116435760405163ec442f0560e01b81525f60048201526024016109d3565b61158f838383611fc3565b6107fa611b2a565b6001600160a01b03165f908152600191909101602052604090205460ff1690565b6001600160a01b0382166116a057604051634b637e8f60e11b81525f60048201526024016109d3565b61155a825f83611fc3565b804710156116ce5760405163cd78605960e01b81523060048201526024016109d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611717576040519150601f19603f3d011682016040523d82523d5f602084013e61171c565b606091505b505090508061158f57604051630a12f52160e11b815260040160405180910390fd5b7f69a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf50180545f80516020614f588339815191529183915f9061177f908490614325565b90915550506040516327ad555d60e11b81526001600160a01b0384166004820152602481018390526001600160991b0190634f5aaaba906044015f604051808303815f87803b1580156117d0575f80fd5b505af11580156117e2573d5f803e3d5ffd5b50505050505050565b5f6117f88484845f6121df565b949350505050565b5f8061180a61220f565b604084015160200151909150156118af576040830151516001600160a01b031661188c5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b60648201526084016109d3565b6040830151602081015190516118af916001600160a01b039091169083906122ff565b604051630624488560e41b81526001600160a01b038216906362448850906118db9086906004016144ef565b6020604051808303815f875af11580156118f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099091906144d8565b5f80516020614f7883398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa15801561196f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199391906144d8565b600283015490915081841115611a055760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016109d3565b808411611a7a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016109d3565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b5f80516020614f388339815191528054600114611ae25760405162461bcd60e51b81526004016109d390614399565b600281555f611aef61155e565b9050611afa84612386565b6001810154843503611b1657611b1084846125c0565b50611b22565b611b1084846127e4565b505b600190555050565b33611b5c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107fa5760405163118cdaa760e01b81523360048201526024016109d3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f80516020614f388339815191528054600114611c245760405162461bcd60e51b81526004016109d390614399565b600281555f611c3161155e565b9050611c3c84612a85565b6001810154843503611c5757611c528484612b70565b611b20565b611b208484612cdf565b611c69612ea5565b815f03611cd25760405162461bcd60e51b815260206004820152603160248201527f4e6174697665546f6b656e52656d6f74653a207a65726f20696e697469616c206044820152707265736572766520696d62616c616e636560781b60648201526084016109d3565b611cdc8384612eee565b611ce884836012612f00565b61144a81612f31565b5f815f03611d0057505f6108fa565b306001600160a01b03841603611d2d57611d1b333084611594565b611d263330846115f1565b50806108fa565b610990833384612fa8565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611d7c57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f611d8b61155e565b905080600101548414611df25760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b60648201526084016109d3565b60028101546001600160a01b03848116911614611e645760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b60648201526084016109d3565b5f82806020019051810190611e7991906145e8565b6006830154909150610100900460ff161580611e9a5750600682015460ff16155b15611eb15760068201805461ffff19166101011790555b600181516004811115611ec657611ec6614413565b03611efd575f8160200151806020019051810190611ee49190614670565b9050611ef7815f0151826020015161310b565b50611f92565b600281516004811115611f1257611f12614413565b03611f40575f8160200151806020019051810190611f3091906146a8565b9050611ef7818260800151613158565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b60648201526084016109d3565b5050505050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b6001905550565b5f80516020614f188339815191526001600160a01b038416611ffd5781816002015f828254611ff29190614325565b9091555061206d9050565b6001600160a01b0384165f908152602082905260409020548281101561204f5760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016109d3565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661208b5760028101805483900390556120a9565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ee91815260200190565b60405180910390a350505050565b5f80516020614f188339815191526001600160a01b0385166121335760405163e602df0560e01b81525f60048201526024016109d3565b6001600160a01b03841661215c57604051634a1406b160e11b81525f60048201526024016109d3565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611f9257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516121d091815260200190565b60405180910390a35050505050565b5f811515841515036121fc576121f585846143dd565b90506117f8565b61220685846143f4565b95945050505050565b5f80516020614f7883398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015612269573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228d9190614772565b90506122998282611656565b156108fa5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016109d3565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561234c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237091906144d8565b905061144a84846123818585614325565b613282565b80356123a45760405162461bcd60e51b81526004016109d39061478d565b5f6123b56040830160208401613fa4565b6001600160a01b0316036123db5760405162461bcd60e51b81526004016109d3906147d8565b5f6123ec6060830160408401613fa4565b6001600160a01b0316036124575760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b60648201526084016109d3565b5f81608001351161247a5760405162461bcd60e51b81526004016109d390614835565b5f8160a00135116124db5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b60648201526084016109d3565b80608001358160a00135106125435760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b60648201526084016109d3565b5f612555610100830160e08401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b60648201526084016109d3565b5f6125c961155e565b90506125f96125de6040850160208601613fa4565b6101408501356125f460e0870160c08801613fa4565b61333f565b5f6126218361261061012087016101008801613fa4565b86610120013587610140013561343c565b6040805180820190915291945091505f908060028152602001604051806101000160405280865f01548152602001306001600160a01b031681526020016126653390565b6001600160a01b0316815260200161268360608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016126a560608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a089013560208201526040016126f96101008a0160e08b01613fa4565b6001600160a01b0316905260405161271491906020016148bb565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612796928201908061276e6101208c016101008d01613fa4565b6001600160a01b03168152602090810188905290825260808a0135908201526040015f610e55565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b1688886040516127d49291906149c2565b60405180910390a3505050505050565b5f6127ed61155e565b905061281983356128046040860160208701613fa4565b61281460e0870160c08801613fa4565b6134ff565b5f6128308361261061012087016101008801613fa4565b6040805180820190915291945091505f90806004815260200160405180610160016040528061285c3390565b6001600160a01b03168152602001885f013581526020018860200160208101906128869190613fa4565b6001600160a01b031681526020016128a460608a0160408b01613fa4565b6001600160a01b03168152602081018890526040016128c660608a018a614879565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060a0890135602082015260400161291a6101008a0160e08b01613fa4565b6001600160a01b031681526080890135602082015260400161294260e08a0160c08b01613fa4565b6001600160a01b03168152610140890135602091820152604051612967929101614ad0565b60408051601f19818403018152919052905290505f6105dc61299661298f6060890189614879565b9050611510565b6129a091906143dd565b6129ad9062055730614325565b6040805160c0810182526001870154815260028701546001600160a01b03166020820152815180830183529293505f92612a3692820190806129f76101208d016101008e01613fa4565b6001600160a01b031681526020908101899052908252818101869052604080515f815280830182528184015251606090920191610e9591889101614447565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168989604051612a749291906149c2565b60405180910390a350505050505050565b5f612a966060830160408401613fa4565b6001600160a01b031603612af85760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b60648201526084016109d3565b5f8160c0013511612b1b5760405162461bcd60e51b81526004016109d390614835565b8035612b395760405162461bcd60e51b81526004016109d39061478d565b5f612b4a6040830160208401613fa4565b6001600160a01b031603610ae25760405162461bcd60e51b81526004016109d3906147d8565b5f612b7961155e565b9050612ba4612b8e6040850160208601613fa4565b60a08501356125f4610100870160e08801613fa4565b5f612bc883612bb96080870160608801613fa4565b86608001358760a0013561343c565b6040805180820190915291945091505f9080600181526020016040518060400160405280886040016020810190612bff9190613fa4565b6001600160a01b0316815260200187815250604051602001612c219190614427565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612c7960808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825260c08a0135908201526040015f610e55565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb5288886040516127d4929190614bad565b5f612ce861155e565b9050612d108335612cff6040860160208701613fa4565b612814610100870160e08801613fa4565b5f612d2583612bb96080870160608801613fa4565b60408051808201825260038152815160e081018352883581529396509193505f9260208084019282820191612d5e918b01908b01613fa4565b6001600160a01b03168152602001612d7c60608a0160408b01613fa4565b6001600160a01b031681526020810188905260a0890135604082015260c08901356060820152608001612db66101008a0160e08b01613fa4565b6001600160a01b03169052604051612e269190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f198184030181529181529152805160c0810182526001860154815260028601546001600160a01b03166020820152815180830183529293505f92612ca19282019080612e7e60808c0160608d01613fa4565b6001600160a01b03168152602090810188905290825262053020908201526040015f610e55565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107fa57604051631afcd79f60e31b815260040160405180910390fd5b612ef6612ea5565b61155a828261359d565b612f08612ea5565b612f1e835f0151846020015185604001516135ed565b612f26613608565b61158f838383613618565b612f39612ea5565b60648110612f975760405162461bcd60e51b815260206004820152602560248201527f4e6174697665546f6b656e52656d6f74653a20696e76616c69642070657263656044820152646e7461676560d81b60648201526084016109d3565b5f80516020614f5883398151915255565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612fee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301291906144d8565b90506130296001600160a01b03861685308661393c565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561306d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061309191906144d8565b90508181116130f75760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016109d3565b6131018282614338565b9695505050505050565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8260405161314691815260200190565b60405180910390a261155a828261173e565b613162308261173e565b5f825f0151836020015184604001518560a001516040516024016131899493929190614c4c565b60408051601f198184030181529190526020810180516001600160e01b031663161b12ff60e11b17905260c084015160608501519192505f916131cf9190859085613975565b905080156132235783606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff48460405161321691815260200190565b60405180910390a261144a565b83606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb08460405161326291815260200190565b60405180910390a260e084015161144a906001600160a01b0316846116ab565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526132d38482613a45565b61144a576040516001600160a01b0384811660248301525f604483015261333591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613ae2565b61144a8482613ae2565b5f61334861155e565b60028101549091506001600160a01b0385811691161461337a5760405162461bcd60e51b81526004016109d390614c7d565b82156133d45760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b60648201526084016109d3565b6001600160a01b0382161561144a5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b60648201526084016109d3565b5f805f61344761155e565b905061345287613b43565b965061345e8686611cf1565b600382015460048301549196506134789160ff16866117eb565b60038201546004830154613490919060ff168a6117eb565b116134f25760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b60648201526084016109d3565b5094959294509192505050565b5f61350861155e565b8054909150840361353b57306001600160a01b0384160361353b5760405162461bcd60e51b81526004016109d390614c7d565b6001600160a01b03821661144a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b60648201526084016109d3565b6135a5612ea5565b5f80516020614f188339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036135de8482614d1e565b506004810161144a8382614d1e565b6135f5612ea5565b6135ff8382613b5b565b61158f82613b7d565b613610612ea5565b6107fa613b8e565b613620612ea5565b5f61362961155e565b90506005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561366e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061369291906144d8565b815560608401516136f85760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b60648201526084016109d3565b80546060850151036137725760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d65000000000060648201526084016109d3565b60808401516001600160a01b03166137d85760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b60648201526084016109d3565b60128460a0015160ff1611156138425760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b60648201526084016109d3565b60128260ff1611156138a25760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b60648201526084016109d3565b60608401516001820155608084015160028201805460058401869055600684018054871560ff1990911617905560a08701516001600160a01b039093166001600160a81b031990911617600160a01b60ff808516919091029190911760ff60a81b1916600160a81b9186169190910217905561391e9083613ba2565b60048301805460ff1916911515919091179055600390910155505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261144a9186918216906323b872dd90608401613303565b5f845a10156139c65760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e7420676173000000000060448201526064016109d3565b83471015613a165760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c756500000060448201526064016109d3565b826001600160a01b03163b5f03613a2e57505f6117f8565b5f805f84516020860188888bf19695505050505050565b5f805f846001600160a01b031684604051613a609190614dd9565b5f604051808303815f865af19150503d805f8114613a99576040519150601f19603f3d011682016040523d82523d5f602084013e613a9e565b606091505b5091509150818015613ac8575080511580613ac8575080806020019051810190613ac89190614df4565b80156122065750505050506001600160a01b03163b151590565b5f613af66001600160a01b03841683613bec565b905080515f14158015613b1a575080806020019051810190613b189190614df4565b155b1561158f57604051635274afe760e01b81526001600160a01b03841660048201526024016109d3565b5f613b5762010203600160981b01836116ab565b5090565b613b63612ea5565b613b6b613bf9565b613b73613c09565b61155a8282613c11565b613b85612ea5565b610ae281613d95565b5f5f80516020614f38833981519152611fbc565b5f8060ff808516908416118181613bc557613bbd8587614e13565b60ff16613bd3565b613bcf8686614e13565b60ff165b613bde90600a614f0c565b9350909150505b9250929050565b606061099083835f613d9d565b613c01612ea5565b6107fa613e2c565b6107fa612ea5565b613c19612ea5565b6001600160a01b038216613c955760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016109d3565b5f5f80516020614f7883398151915290505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0b91906144d8565b11613d735760405162461bcd60e51b815260206004820152603260248201527f54656c65706f7274657252656769737472794170703a20696e76616c69642054604482015271656c65706f7274657220726567697374727960701b60648201526084016109d3565b81546001600160a01b0319166001600160a01b03821617825561144a8361191b565b6114de612ea5565b606081471015613dc25760405163cd78605960e01b81523060048201526024016109d3565b5f80856001600160a01b03168486604051613ddd9190614dd9565b5f6040518083038185875af1925050503d805f8114613e17576040519150601f19603f3d011682016040523d82523d5f602084013e613e1c565b606091505b5091509150613101868383613e34565b611f99612ea5565b606082613e4957613e4482613e90565b610990565b8151158015613e6057506001600160a01b0384163b155b15613e8957604051639996b31560e01b81526001600160a01b03851660048201526024016109d3565b5080610990565b805115613ea05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015613ed3578181015183820152602001613ebb565b50505f910152565b5f8151808452613ef2816020860160208601613eb9565b601f01601f19169290920160200192915050565b602081525f6109906020830184613edb565b6001600160a01b0381168114610ae2575f80fd5b8035613f3781613f18565b919050565b5f8060408385031215613f4d575f80fd5b8235613f5881613f18565b946020939093013593505050565b5f805f60608486031215613f78575f80fd5b8335613f8381613f18565b92506020840135613f9381613f18565b929592945050506040919091013590565b5f60208284031215613fb4575f80fd5b813561099081613f18565b5f60208284031215613fcf575f80fd5b5035919050565b5f60208284031215613fe6575f80fd5b81356001600160401b03811115613ffb575f80fd5b82016101608185031215610990575f80fd5b5f610100828403121561401e575f80fd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561405a5761405a614024565b60405290565b604080519081016001600160401b038111828210171561405a5761405a614024565b60405161010081016001600160401b038111828210171561405a5761405a614024565b604051601f8201601f191681016001600160401b03811182821017156140cd576140cd614024565b604052919050565b5f6001600160401b038211156140ed576140ed614024565b50601f01601f191660200190565b5f82601f83011261410a575f80fd5b813561411d614118826140d5565b6140a5565b818152846020838601011115614131575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80848603610120811215614162575f80fd5b60c081121561416f575f80fd5b50614178614038565b853561418381613f18565b8152602086013561419381613f18565b80602083015250604086013560408201526060860135606082015260808601356141bc81613f18565b608082015260a086013560ff811681146141d4575f80fd5b60a0820152935060c08501356001600160401b038111156141f3575f80fd5b6141ff878288016140fb565b949794965050505060e0830135926101000135919050565b5f6040828403121561401e575f80fd5b5f805f806060858703121561423a575f80fd5b84359350602085013561424c81613f18565b925060408501356001600160401b0380821115614267575f80fd5b818701915087601f83011261427a575f80fd5b813581811115614288575f80fd5b886020828501011115614299575f80fd5b95989497505060200194505050565b5f80604083850312156142b9575f80fd5b82356142c481613f18565b915060208301356142d481613f18565b809150509250929050565b600181811c908216806142f357607f821691505b60208210810361401e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156108fa576108fa614311565b818103818111156108fa576108fa614311565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b80820281158282048414176108fa576108fa614311565b5f8261440e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b81516001600160a01b0316815260208083015190820152604081016108fa565b602081525f82516005811061446a57634e487b7160e01b5f52602160045260245ffd5b8060208401525060208301516040808401526117f86060840182613edb565b6020808252602f908201527f4e6174697665546f6b656e52656d6f74653a20636f6e747261637420756e646560408201526e1c98dbdb1b185d195c985b1a5e9959608a1b606082015260800190565b5f602082840312156144e8575f80fd5b5051919050565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501525f929161010085019190606087015160a0870152608087015160e060c08801528051938490528401925f92506101208701905b8084101561457c5784518316825293850193600193909301929085019061455a565b5060a0880151878203601f190160e0890152945061459a8186613edb565b98975050505050505050565b5f82601f8301126145b5575f80fd5b81516145c3614118826140d5565b8181528460208386010111156145d7575f80fd5b6117f8826020830160208701613eb9565b5f602082840312156145f8575f80fd5b81516001600160401b038082111561460e575f80fd5b9083019060408286031215614621575f80fd5b614629614060565b825160058110614637575f80fd5b815260208301518281111561464a575f80fd5b614656878286016145a6565b60208301525095945050505050565b8051613f3781613f18565b5f60408284031215614680575f80fd5b614688614060565b825161469381613f18565b81526020928301519281019290925250919050565b5f602082840312156146b8575f80fd5b81516001600160401b03808211156146ce575f80fd5b9083019061010082860312156146e2575f80fd5b6146ea614082565b825181526146fa60208401614665565b602082015261470b60408401614665565b604082015261471c60608401614665565b60608201526080830151608082015260a08301518281111561473c575f80fd5b614748878286016145a6565b60a08301525060c083015160c082015261476460e08401614665565b60e082015295945050505050565b5f60208284031215614782575f80fd5b815161099081613f18565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b5f808335601e1984360301811261488e575f80fd5b8301803591506001600160401b038211156148a7575f80fd5b602001915036819003821315613be5575f80fd5b60208152815160208201525f602083015160018060a01b0380821660408501528060408601511660608501525050606083015161490360808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c085015261492a610120850183613edb565b915060c085015160e085015260e085015161494f828601826001600160a01b03169052565b5090949350505050565b5f808335601e1984360301811261496e575f80fd5b83016020810192503590506001600160401b0381111561498c575f80fd5b803603821315613be5575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60408152823560408201525f6149da60208501613f2c565b6001600160a01b031660608301526149f460408501613f2c565b6001600160a01b03166080830152614a0f6060850185614959565b6101608060a0860152614a276101a08601838561499a565b9250608087013560c086015260a087013560e0860152614a4960c08801613f2c565b9150610100614a62818701846001600160a01b03169052565b614a6e60e08901613f2c565b9250610120614a87818801856001600160a01b03169052565b614a92828a01613f2c565b93506101409150614aad828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b60208152614aea6020820183516001600160a01b03169052565b602082015160408201525f6040830151614b0f60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c0850152614b4b610180850183613edb565b915060c085015160e085015260e0850151610100614b73818701836001600160a01b03169052565b860151610120868101919091528601519050610140614b9c818701836001600160a01b03169052565b959095015193019290925250919050565b8235815261012081016020840135614bc481613f18565b6001600160a01b039081166020840152604085013590614be382613f18565b166040830152614bf560608501613f2c565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c0830152614c2f60e08501613f2c565b6001600160a01b031660e083015261010090910191909152919050565b8481526001600160a01b038481166020830152831660408201526080606082018190525f9061310190830184613edb565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b601f82111561158f57805f5260205f20601f840160051c81016020851015614cff5750805b601f840160051c820191505b81811015611f92575f8155600101614d0b565b81516001600160401b03811115614d3757614d37614024565b614d4b81614d4584546142df565b84614cda565b602080601f831160018114614d7e575f8415614d675750858301515b5f19600386901b1c1916600185901b17855561126e565b5f85815260208120601f198616915b82811015614dac57888601518255948401946001909101908401614d8d565b5085821015614dc957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251614dea818460208701613eb9565b9190910192915050565b5f60208284031215614e04575f80fd5b81518015158114610990575f80fd5b60ff82811682821603908111156108fa576108fa614311565b600181815b80851115614e6657815f1904821115614e4c57614e4c614311565b80851615614e5957918102915b93841c9390800290614e31565b509250929050565b5f82614e7c575060016108fa565b81614e8857505f6108fa565b8160018114614e9e5760028114614ea857614ec4565b60019150506108fa565b60ff841115614eb957614eb9614311565b50506001821b6108fa565b5060208310610133831016604e8410600b8410161715614ee7575081810a6108fa565b614ef18383614e2c565b805f1904821115614f0457614f04614311565b029392505050565b5f6109908383614e6e56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00d2f1ed38b7d242bfb8b41862afb813a15193219a4bc717f2056607593e6c750069a5f7616543528c4fbe43f410b1034bd6da4ba06c25bedf04617268014cf500de77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220832c5ad6c5cb8b0b2ebe7f175a8b66d6f2f51bc1c706fc0f6cb38a09790f473d64736f6c63430008190033", } // NativeTokenRemoteUpgradeableABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/WrappedNativeToken/WrappedNativeToken.go b/abi-bindings/go/ictt/WrappedNativeToken/WrappedNativeToken.go index ec3cfc698..8bf864fc2 100644 --- a/abi-bindings/go/ictt/WrappedNativeToken/WrappedNativeToken.go +++ b/abi-bindings/go/ictt/WrappedNativeToken/WrappedNativeToken.go @@ -32,7 +32,7 @@ var ( // WrappedNativeTokenMetaData contains all meta data concerning the WrappedNativeToken contract. var WrappedNativeTokenMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051610c5e380380610c5e83398101604081905261002e916100c7565b8060405160200161003f919061016e565b6040516020818303038152906040528160405160200161005f919061019d565b60408051601f19818403018152919052600361007b8382610249565b5060046100888282610249565b50505050610308565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156100bf5781810151838201526020016100a7565b50505f910152565b5f602082840312156100d7575f80fd5b81516001600160401b03808211156100ed575f80fd5b818401915084601f830112610100575f80fd5b81518181111561011257610112610091565b604051601f8201601f19908116603f0116810190838211818310171561013a5761013a610091565b81604052828152876020848701011115610152575f80fd5b6101638360208301602088016100a5565b979650505050505050565b6702bb930b83832b2160c51b81525f82516101908160088501602087016100a5565b9190910160080192915050565b605760f81b81525f82516101b88160018501602087016100a5565b9190910160010192915050565b600181811c908216806101d957607f821691505b6020821081036101f757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024457805f5260205f20601f840160051c810160208510156102225750805b601f840160051c820191505b81811015610241575f815560010161022e565b50505b505050565b81516001600160401b0381111561026257610262610091565b6102768161027084546101c5565b846101fd565b602080601f8311600181146102a9575f84156102925750858301515b5f19600386901b1c1916600185901b178555610300565b5f85815260208120601f198616915b828110156102d7578886015182559484019460019091019084016102b8565b50858210156102f457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b610949806103155f395ff3fe60806040526004361061009f575f3560e01c8063313ce56711610063578063313ce5671461016b57806370a082311461018657806395d89b41146101ba578063a9059cbb146101ce578063d0e30db0146100ae578063dd62ed3e146101ed576100ae565b806306fdde03146100b6578063095ea7b3146100e057806318160ddd1461010f57806323b872dd1461012d5780632e1a7d4d1461014c576100ae565b366100ae576100ac610231565b005b6100ac610231565b3480156100c1575f80fd5b506100ca610272565b6040516100d7919061078c565b60405180910390f35b3480156100eb575f80fd5b506100ff6100fa3660046107f3565b610302565b60405190151581526020016100d7565b34801561011a575f80fd5b506002545b6040519081526020016100d7565b348015610138575f80fd5b506100ff61014736600461081b565b61031b565b348015610157575f80fd5b506100ac610166366004610854565b61033e565b348015610176575f80fd5b50604051601281526020016100d7565b348015610191575f80fd5b5061011f6101a036600461086b565b6001600160a01b03165f9081526020819052604090205490565b3480156101c5575f80fd5b506100ca61038a565b3480156101d9575f80fd5b506100ff6101e83660046107f3565b610399565b3480156101f8575f80fd5b5061011f61020736600461088b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61023b33346103a6565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b606060038054610281906108bc565b80601f01602080910402602001604051908101604052809291908181526020018280546102ad906108bc565b80156102f85780601f106102cf576101008083540402835291602001916102f8565b820191905f5260205f20905b8154815290600101906020018083116102db57829003601f168201915b5050505050905090565b5f3361030f8185856103e3565b60019150505b92915050565b5f336103288582856103f5565b610333858585610470565b506001949350505050565b61034833826104cd565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26103873382610501565b50565b606060048054610281906108bc565b5f3361030f818585610470565b6001600160a01b0382166103d45760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6103df5f8383610594565b5050565b6103f083838360016106ba565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046a578181101561045c57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103cb565b61046a84848484035f6106ba565b50505050565b6001600160a01b03831661049957604051634b637e8f60e11b81525f60048201526024016103cb565b6001600160a01b0382166104c25760405163ec442f0560e01b81525f60048201526024016103cb565b6103f0838383610594565b6001600160a01b0382166104f657604051634b637e8f60e11b81525f60048201526024016103cb565b6103df825f83610594565b804710156105245760405163cd78605960e01b81523060048201526024016103cb565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461056d576040519150601f19603f3d011682016040523d82523d5f602084013e610572565b606091505b50509050806103f057604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383166105be578060025f8282546105b391906108f4565b9091555061062e9050565b6001600160a01b0383165f90815260208190526040902054818110156106105760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103cb565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661064a57600280548290039055610668565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106ad91815260200190565b60405180910390a3505050565b6001600160a01b0384166106e35760405163e602df0560e01b81525f60048201526024016103cb565b6001600160a01b03831661070c57604051634a1406b160e11b81525f60048201526024016103cb565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046a57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161077e91815260200190565b60405180910390a350505050565b5f602080835283518060208501525f5b818110156107b85785810183015185820160400152820161079c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b61080d836107d8565b946020939093013593505050565b5f805f6060848603121561082d575f80fd5b610836846107d8565b9250610844602085016107d8565b9150604084013590509250925092565b5f60208284031215610864575f80fd5b5035919050565b5f6020828403121561087b575f80fd5b610884826107d8565b9392505050565b5f806040838503121561089c575f80fd5b6108a5836107d8565b91506108b3602084016107d8565b90509250929050565b600181811c908216806108d057607f821691505b6020821081036108ee57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561031557634e487b7160e01b5f52601160045260245ffdfea2646970667358221220b7f3d4c7c37cb1f8df000e42921ac6382f8888d308aa9f917f83ea79ae20f06764736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051610c5e380380610c5e83398101604081905261002e916100c7565b8060405160200161003f919061016e565b6040516020818303038152906040528160405160200161005f919061019d565b60408051601f19818403018152919052600361007b8382610249565b5060046100888282610249565b50505050610308565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156100bf5781810151838201526020016100a7565b50505f910152565b5f602082840312156100d7575f80fd5b81516001600160401b03808211156100ed575f80fd5b818401915084601f830112610100575f80fd5b81518181111561011257610112610091565b604051601f8201601f19908116603f0116810190838211818310171561013a5761013a610091565b81604052828152876020848701011115610152575f80fd5b6101638360208301602088016100a5565b979650505050505050565b6702bb930b83832b2160c51b81525f82516101908160088501602087016100a5565b9190910160080192915050565b605760f81b81525f82516101b88160018501602087016100a5565b9190910160010192915050565b600181811c908216806101d957607f821691505b6020821081036101f757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024457805f5260205f20601f840160051c810160208510156102225750805b601f840160051c820191505b81811015610241575f815560010161022e565b50505b505050565b81516001600160401b0381111561026257610262610091565b6102768161027084546101c5565b846101fd565b602080601f8311600181146102a9575f84156102925750858301515b5f19600386901b1c1916600185901b178555610300565b5f85815260208120601f198616915b828110156102d7578886015182559484019460019091019084016102b8565b50858210156102f457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b610949806103155f395ff3fe60806040526004361061009f575f3560e01c8063313ce56711610063578063313ce5671461016b57806370a082311461018657806395d89b41146101ba578063a9059cbb146101ce578063d0e30db0146100ae578063dd62ed3e146101ed576100ae565b806306fdde03146100b6578063095ea7b3146100e057806318160ddd1461010f57806323b872dd1461012d5780632e1a7d4d1461014c576100ae565b366100ae576100ac610231565b005b6100ac610231565b3480156100c1575f80fd5b506100ca610272565b6040516100d7919061078c565b60405180910390f35b3480156100eb575f80fd5b506100ff6100fa3660046107f3565b610302565b60405190151581526020016100d7565b34801561011a575f80fd5b506002545b6040519081526020016100d7565b348015610138575f80fd5b506100ff61014736600461081b565b61031b565b348015610157575f80fd5b506100ac610166366004610854565b61033e565b348015610176575f80fd5b50604051601281526020016100d7565b348015610191575f80fd5b5061011f6101a036600461086b565b6001600160a01b03165f9081526020819052604090205490565b3480156101c5575f80fd5b506100ca61038a565b3480156101d9575f80fd5b506100ff6101e83660046107f3565b610399565b3480156101f8575f80fd5b5061011f61020736600461088b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61023b33346103a6565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b606060038054610281906108bc565b80601f01602080910402602001604051908101604052809291908181526020018280546102ad906108bc565b80156102f85780601f106102cf576101008083540402835291602001916102f8565b820191905f5260205f20905b8154815290600101906020018083116102db57829003601f168201915b5050505050905090565b5f3361030f8185856103e3565b60019150505b92915050565b5f336103288582856103f5565b610333858585610470565b506001949350505050565b61034833826104cd565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26103873382610501565b50565b606060048054610281906108bc565b5f3361030f818585610470565b6001600160a01b0382166103d45760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6103df5f8383610594565b5050565b6103f083838360016106ba565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046a578181101561045c57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103cb565b61046a84848484035f6106ba565b50505050565b6001600160a01b03831661049957604051634b637e8f60e11b81525f60048201526024016103cb565b6001600160a01b0382166104c25760405163ec442f0560e01b81525f60048201526024016103cb565b6103f0838383610594565b6001600160a01b0382166104f657604051634b637e8f60e11b81525f60048201526024016103cb565b6103df825f83610594565b804710156105245760405163cd78605960e01b81523060048201526024016103cb565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461056d576040519150601f19603f3d011682016040523d82523d5f602084013e610572565b606091505b50509050806103f057604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383166105be578060025f8282546105b391906108f4565b9091555061062e9050565b6001600160a01b0383165f90815260208190526040902054818110156106105760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103cb565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661064a57600280548290039055610668565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106ad91815260200190565b60405180910390a3505050565b6001600160a01b0384166106e35760405163e602df0560e01b81525f60048201526024016103cb565b6001600160a01b03831661070c57604051634a1406b160e11b81525f60048201526024016103cb565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046a57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161077e91815260200190565b60405180910390a350505050565b5f602080835283518060208501525f5b818110156107b85785810183015185820160400152820161079c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b61080d836107d8565b946020939093013593505050565b5f805f6060848603121561082d575f80fd5b610836846107d8565b9250610844602085016107d8565b9150604084013590509250925092565b5f60208284031215610864575f80fd5b5035919050565b5f6020828403121561087b575f80fd5b610884826107d8565b9392505050565b5f806040838503121561089c575f80fd5b6108a5836107d8565b91506108b3602084016107d8565b90509250929050565b600181811c908216806108d057607f821691505b6020821081036108ee57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561031557634e487b7160e01b5f52601160045260245ffdfea26469706673582212203271d3e7551142c19a1b36a89e24f0469f7c4938748ff1d5581578b2e08e5c7364736f6c63430008190033", } // WrappedNativeTokenABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/mocks/ExampleERC20Decimals/ExampleERC20Decimals.go b/abi-bindings/go/ictt/mocks/ExampleERC20Decimals/ExampleERC20Decimals.go index da6cffd8c..1fcc1ad1f 100644 --- a/abi-bindings/go/ictt/mocks/ExampleERC20Decimals/ExampleERC20Decimals.go +++ b/abi-bindings/go/ictt/mocks/ExampleERC20Decimals/ExampleERC20Decimals.go @@ -32,7 +32,7 @@ var ( // ExampleERC20DecimalsMetaData contains all meta data concerning the ExampleERC20Decimals contract. var ExampleERC20DecimalsMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"tokenDecimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561000f575f80fd5b50604051610d2a380380610d2a83398101604081905261002e91610217565b6040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161007d91906102d6565b50600461008a82826102d6565b5050506100a9336b204fce5e3e250261100000006100b460201b60201c565b60ff166080526103ba565b6001600160a01b0382166100e25760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100ed5f83836100f1565b5050565b6001600160a01b03831661011b578060025f8282546101109190610395565b9091555061018b9050565b6001600160a01b0383165f908152602081905260409020548181101561016d5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100d9565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166101a7576002805482900390556101c5565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161020a91815260200190565b60405180910390a3505050565b5f60208284031215610227575f80fd5b815160ff81168114610237575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061026657607f821691505b60208210810361028457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102d157805f5260205f20601f840160051c810160208510156102af5750805b601f840160051c820191505b818110156102ce575f81556001016102bb565b50505b505050565b81516001600160401b038111156102ef576102ef61023e565b610303816102fd8454610252565b8461028a565b602080601f831160018114610336575f841561031f5750858301515b5f19600386901b1c1916600185901b17855561038d565b5f85815260208120601f198616915b8281101561036457888601518255948401946001909101908401610345565b508582101561038157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b808201808211156103b457634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516109516103d95f395f8181610151015261018801526109515ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806342966c681161008857806395d89b411161006357806395d89b411461020d578063a0712d6814610215578063a9059cbb14610228578063dd62ed3e1461023b575f80fd5b806342966c68146101bf57806370a08231146101d257806379cc6790146101fa575f80fd5b806323b872dd116100c357806323b872dd1461013c578063313ce5671461014f5780633b97e8561461018357806340c10f19146101aa575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610273565b6040516100fe9190610794565b60405180910390f35b61011a6101153660046107fb565b610303565b60405190151581526020016100fe565b6002545b6040519081526020016100fe565b61011a61014a366004610823565b61031c565b7f00000000000000000000000000000000000000000000000000000000000000005b60405160ff90911681526020016100fe565b6101717f000000000000000000000000000000000000000000000000000000000000000081565b6101bd6101b83660046107fb565b61033f565b005b6101bd6101cd36600461085c565b6103aa565b61012e6101e0366004610873565b6001600160a01b03165f9081526020819052604090205490565b6101bd6102083660046107fb565b6103b7565b6100f16103cc565b6101bd61022336600461085c565b6103db565b61011a6102363660046107fb565b61043d565b61012e610249366004610893565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b606060038054610282906108c4565b80601f01602080910402602001604051908101604052809291908181526020018280546102ae906108c4565b80156102f95780601f106102d0576101008083540402835291602001916102f9565b820191905f5260205f20905b8154815290600101906020018083116102dc57829003601f168201915b5050505050905090565b5f3361031081858561044a565b60019150505b92915050565b5f3361032985828561045c565b6103348585856104d7565b506001949350505050565b678ac7230489e8000081111561039c5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b6103a68282610534565b5050565b6103b43382610568565b50565b6103c282338361045c565b6103a68282610568565b606060048054610282906108c4565b678ac7230489e800008111156104335760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e74206578636565646564006044820152606401610393565b6103b43382610534565b5f336103108185856104d7565b610457838383600161059c565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146104d157818110156104c357604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610393565b6104d184848484035f61059c565b50505050565b6001600160a01b03831661050057604051634b637e8f60e11b81525f6004820152602401610393565b6001600160a01b0382166105295760405163ec442f0560e01b81525f6004820152602401610393565b61045783838361066e565b6001600160a01b03821661055d5760405163ec442f0560e01b81525f6004820152602401610393565b6103a65f838361066e565b6001600160a01b03821661059157604051634b637e8f60e11b81525f6004820152602401610393565b6103a6825f8361066e565b6001600160a01b0384166105c55760405163e602df0560e01b81525f6004820152602401610393565b6001600160a01b0383166105ee57604051634a1406b160e11b81525f6004820152602401610393565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156104d157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161066091815260200190565b60405180910390a350505050565b6001600160a01b038316610698578060025f82825461068d91906108fc565b909155506107089050565b6001600160a01b0383165f90815260208190526040902054818110156106ea5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610393565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661072457600280548290039055610742565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161078791815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b818110156107c0578581018301518582016040015282016107a4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107f6575f80fd5b919050565b5f806040838503121561080c575f80fd5b610815836107e0565b946020939093013593505050565b5f805f60608486031215610835575f80fd5b61083e846107e0565b925061084c602085016107e0565b9150604084013590509250925092565b5f6020828403121561086c575f80fd5b5035919050565b5f60208284031215610883575f80fd5b61088c826107e0565b9392505050565b5f80604083850312156108a4575f80fd5b6108ad836107e0565b91506108bb602084016107e0565b90509250929050565b600181811c908216806108d857607f821691505b6020821081036108f657634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561031657634e487b7160e01b5f52601160045260245ffdfea2646970667358221220744b5b494a54efd1149f413002eac6582360a1c89c4a81fb0e639eaaf4f8ce4264736f6c63430008190033", + Bin: "0x60a060405234801561000f575f80fd5b50604051610d2a380380610d2a83398101604081905261002e91610217565b6040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161007d91906102d6565b50600461008a82826102d6565b5050506100a9336b204fce5e3e250261100000006100b460201b60201c565b60ff166080526103ba565b6001600160a01b0382166100e25760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100ed5f83836100f1565b5050565b6001600160a01b03831661011b578060025f8282546101109190610395565b9091555061018b9050565b6001600160a01b0383165f908152602081905260409020548181101561016d5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100d9565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166101a7576002805482900390556101c5565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161020a91815260200190565b60405180910390a3505050565b5f60208284031215610227575f80fd5b815160ff81168114610237575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061026657607f821691505b60208210810361028457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102d157805f5260205f20601f840160051c810160208510156102af5750805b601f840160051c820191505b818110156102ce575f81556001016102bb565b50505b505050565b81516001600160401b038111156102ef576102ef61023e565b610303816102fd8454610252565b8461028a565b602080601f831160018114610336575f841561031f5750858301515b5f19600386901b1c1916600185901b17855561038d565b5f85815260208120601f198616915b8281101561036457888601518255948401946001909101908401610345565b508582101561038157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b808201808211156103b457634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516109516103d95f395f8181610151015261018801526109515ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806342966c681161008857806395d89b411161006357806395d89b411461020d578063a0712d6814610215578063a9059cbb14610228578063dd62ed3e1461023b575f80fd5b806342966c68146101bf57806370a08231146101d257806379cc6790146101fa575f80fd5b806323b872dd116100c357806323b872dd1461013c578063313ce5671461014f5780633b97e8561461018357806340c10f19146101aa575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610273565b6040516100fe9190610794565b60405180910390f35b61011a6101153660046107fb565b610303565b60405190151581526020016100fe565b6002545b6040519081526020016100fe565b61011a61014a366004610823565b61031c565b7f00000000000000000000000000000000000000000000000000000000000000005b60405160ff90911681526020016100fe565b6101717f000000000000000000000000000000000000000000000000000000000000000081565b6101bd6101b83660046107fb565b61033f565b005b6101bd6101cd36600461085c565b6103aa565b61012e6101e0366004610873565b6001600160a01b03165f9081526020819052604090205490565b6101bd6102083660046107fb565b6103b7565b6100f16103cc565b6101bd61022336600461085c565b6103db565b61011a6102363660046107fb565b61043d565b61012e610249366004610893565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b606060038054610282906108c4565b80601f01602080910402602001604051908101604052809291908181526020018280546102ae906108c4565b80156102f95780601f106102d0576101008083540402835291602001916102f9565b820191905f5260205f20905b8154815290600101906020018083116102dc57829003601f168201915b5050505050905090565b5f3361031081858561044a565b60019150505b92915050565b5f3361032985828561045c565b6103348585856104d7565b506001949350505050565b678ac7230489e8000081111561039c5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b6103a68282610534565b5050565b6103b43382610568565b50565b6103c282338361045c565b6103a68282610568565b606060048054610282906108c4565b678ac7230489e800008111156104335760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e74206578636565646564006044820152606401610393565b6103b43382610534565b5f336103108185856104d7565b610457838383600161059c565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146104d157818110156104c357604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610393565b6104d184848484035f61059c565b50505050565b6001600160a01b03831661050057604051634b637e8f60e11b81525f6004820152602401610393565b6001600160a01b0382166105295760405163ec442f0560e01b81525f6004820152602401610393565b61045783838361066e565b6001600160a01b03821661055d5760405163ec442f0560e01b81525f6004820152602401610393565b6103a65f838361066e565b6001600160a01b03821661059157604051634b637e8f60e11b81525f6004820152602401610393565b6103a6825f8361066e565b6001600160a01b0384166105c55760405163e602df0560e01b81525f6004820152602401610393565b6001600160a01b0383166105ee57604051634a1406b160e11b81525f6004820152602401610393565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156104d157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161066091815260200190565b60405180910390a350505050565b6001600160a01b038316610698578060025f82825461068d91906108fc565b909155506107089050565b6001600160a01b0383165f90815260208190526040902054818110156106ea5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610393565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661072457600280548290039055610742565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161078791815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b818110156107c0578581018301518582016040015282016107a4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107f6575f80fd5b919050565b5f806040838503121561080c575f80fd5b610815836107e0565b946020939093013593505050565b5f805f60608486031215610835575f80fd5b61083e846107e0565b925061084c602085016107e0565b9150604084013590509250925092565b5f6020828403121561086c575f80fd5b5035919050565b5f60208284031215610883575f80fd5b61088c826107e0565b9392505050565b5f80604083850312156108a4575f80fd5b6108ad836107e0565b91506108bb602084016107e0565b90509250929050565b600181811c908216806108d857607f821691505b6020821081036108f657634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561031657634e487b7160e01b5f52601160045260245ffdfea26469706673582212202e0383997c8539f98962a448bd41102dc087f43412c3c7cf4b0300b8fe12ca3064736f6c63430008190033", } // ExampleERC20DecimalsABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/mocks/MockERC20SendAndCallReceiver/MockERC20SendAndCallReceiver.go b/abi-bindings/go/ictt/mocks/MockERC20SendAndCallReceiver/MockERC20SendAndCallReceiver.go index 8064ec93e..e05823b9d 100644 --- a/abi-bindings/go/ictt/mocks/MockERC20SendAndCallReceiver/MockERC20SendAndCallReceiver.go +++ b/abi-bindings/go/ictt/mocks/MockERC20SendAndCallReceiver/MockERC20SendAndCallReceiver.go @@ -32,7 +32,7 @@ var ( // MockERC20SendAndCallReceiverMetaData contains all meta data concerning the MockERC20SendAndCallReceiver contract. var MockERC20SendAndCallReceiverMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"TokensReceived\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"blockSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"blockedSenders\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"blocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b506107608061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063487bd69e146100435780637f450d8d1461008157806394395edd146100be575b5f80fd5b61006d610051366004610589565b5f60208181529281526040808220909352908152205460ff1681565b604051901515815260200160405180910390f35b6100bc61008f366004610589565b5f918252602082815260408084206001600160a01b0390931684529190529020805460ff19166001179055565b005b6100bc6100cc3660046105b3565b5f878152602081815260408083206001600160a01b038916845290915290205460ff16156101565760405162461bcd60e51b815260206004820152602c60248201527f4d6f636b455243323053656e64416e6443616c6c52656365697665723a20736560448201526b1b99195c88189b1bd8dad95960a21b60648201526084015b60405180910390fd5b846001600160a01b0316866001600160a01b0316887f7149eb81ada224b86bfda05a4cf439b25596d3c0d8015aebd1cdc11ab17fe190878787876040516101a09493929190610662565b60405180910390a4806102095760405162461bcd60e51b815260206004820152602b60248201527f4d6f636b455243323053656e64416e6443616c6c52656365697665723a20656d60448201526a1c1d1e481c185e5b1bd85960aa1b606482015260840161014d565b61021484338561021e565b5050505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015610264573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028891906106a9565b905061029f6001600160a01b038616853086610383565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa1580156102e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030791906106a9565b905081811161036d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161014d565b61037782826106c0565b925050505b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526103dd9085906103e3565b50505050565b5f6103f76001600160a01b03841683610449565b905080515f1415801561041b57508080602001905181019061041991906106df565b155b1561044457604051635274afe760e01b81526001600160a01b038416600482015260240161014d565b505050565b606061045683835f61045f565b90505b92915050565b6060814710156104845760405163cd78605960e01b815230600482015260240161014d565b5f80856001600160a01b0316848660405161049f91906106fe565b5f6040518083038185875af1925050503d805f81146104d9576040519150601f19603f3d011682016040523d82523d5f602084013e6104de565b606091505b50915091506103778683836060826104fe576104f982610545565b61037c565b815115801561051557506001600160a01b0384163b155b1561053e57604051639996b31560e01b81526001600160a01b038516600482015260240161014d565b508061037c565b8051156105555780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610584575f80fd5b919050565b5f806040838503121561059a575f80fd5b823591506105aa6020840161056e565b90509250929050565b5f805f805f805f60c0888a0312156105c9575f80fd5b873596506105d96020890161056e565b95506105e76040890161056e565b94506105f56060890161056e565b93506080880135925060a088013567ffffffffffffffff80821115610618575f80fd5b818a0191508a601f83011261062b575f80fd5b813581811115610639575f80fd5b8b602082850101111561064a575f80fd5b60208301945080935050505092959891949750929550565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f602082840312156106b9575f80fd5b5051919050565b8181038181111561045957634e487b7160e01b5f52601160045260245ffd5b5f602082840312156106ef575f80fd5b8151801515811461037c575f80fd5b5f82515f5b8181101561071d5760208186018101518583015201610703565b505f92019182525091905056fea26469706673582212203ee3336e9b0a78bc0cab5c31c302e54fc751d0e246a50801cb0e74b6bd703a6064736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b506107608061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063487bd69e146100435780637f450d8d1461008157806394395edd146100be575b5f80fd5b61006d610051366004610589565b5f60208181529281526040808220909352908152205460ff1681565b604051901515815260200160405180910390f35b6100bc61008f366004610589565b5f918252602082815260408084206001600160a01b0390931684529190529020805460ff19166001179055565b005b6100bc6100cc3660046105b3565b5f878152602081815260408083206001600160a01b038916845290915290205460ff16156101565760405162461bcd60e51b815260206004820152602c60248201527f4d6f636b455243323053656e64416e6443616c6c52656365697665723a20736560448201526b1b99195c88189b1bd8dad95960a21b60648201526084015b60405180910390fd5b846001600160a01b0316866001600160a01b0316887f7149eb81ada224b86bfda05a4cf439b25596d3c0d8015aebd1cdc11ab17fe190878787876040516101a09493929190610662565b60405180910390a4806102095760405162461bcd60e51b815260206004820152602b60248201527f4d6f636b455243323053656e64416e6443616c6c52656365697665723a20656d60448201526a1c1d1e481c185e5b1bd85960aa1b606482015260840161014d565b61021484338561021e565b5050505050505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015610264573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028891906106a9565b905061029f6001600160a01b038616853086610383565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa1580156102e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030791906106a9565b905081811161036d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161014d565b61037782826106c0565b925050505b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526103dd9085906103e3565b50505050565b5f6103f76001600160a01b03841683610449565b905080515f1415801561041b57508080602001905181019061041991906106df565b155b1561044457604051635274afe760e01b81526001600160a01b038416600482015260240161014d565b505050565b606061045683835f61045f565b90505b92915050565b6060814710156104845760405163cd78605960e01b815230600482015260240161014d565b5f80856001600160a01b0316848660405161049f91906106fe565b5f6040518083038185875af1925050503d805f81146104d9576040519150601f19603f3d011682016040523d82523d5f602084013e6104de565b606091505b50915091506103778683836060826104fe576104f982610545565b61037c565b815115801561051557506001600160a01b0384163b155b1561053e57604051639996b31560e01b81526001600160a01b038516600482015260240161014d565b508061037c565b8051156105555780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610584575f80fd5b919050565b5f806040838503121561059a575f80fd5b823591506105aa6020840161056e565b90509250929050565b5f805f805f805f60c0888a0312156105c9575f80fd5b873596506105d96020890161056e565b95506105e76040890161056e565b94506105f56060890161056e565b93506080880135925060a088013567ffffffffffffffff80821115610618575f80fd5b818a0191508a601f83011261062b575f80fd5b813581811115610639575f80fd5b8b602082850101111561064a575f80fd5b60208301945080935050505092959891949750929550565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f602082840312156106b9575f80fd5b5051919050565b8181038181111561045957634e487b7160e01b5f52601160045260245ffd5b5f602082840312156106ef575f80fd5b8151801515811461037c575f80fd5b5f82515f5b8181101561071d5760208186018101518583015201610703565b505f92019182525091905056fea2646970667358221220935f86821dab445799303eb58207a81b0763703997fd4f8f463f7674bdebea8364736f6c63430008190033", } // MockERC20SendAndCallReceiverABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/ictt/mocks/MockNativeSendAndCallReceiver/MockNativeSendAndCallReceiver.go b/abi-bindings/go/ictt/mocks/MockNativeSendAndCallReceiver/MockNativeSendAndCallReceiver.go index 2be10955c..a47153582 100644 --- a/abi-bindings/go/ictt/mocks/MockNativeSendAndCallReceiver/MockNativeSendAndCallReceiver.go +++ b/abi-bindings/go/ictt/mocks/MockNativeSendAndCallReceiver/MockNativeSendAndCallReceiver.go @@ -32,7 +32,7 @@ var ( // MockNativeSendAndCallReceiverMetaData contains all meta data concerning the MockNativeSendAndCallReceiver contract. var MockNativeSendAndCallReceiverMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originTokenTransferrerAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"TokensReceived\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"blockSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"blockedSenders\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"blocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originTokenTransferrerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b506103678061001c5f395ff3fe608060405260043610610033575f3560e01c80632c3625fe14610037578063487bd69e1461004c5780637f450d8d14610096575b5f80fd5b61004a61004536600461023f565b6100dd565b005b348015610057575f80fd5b506100826100663660046102d2565b5f60208181529281526040808220909352908152205460ff1681565b604051901515815260200160405180910390f35b3480156100a1575f80fd5b5061004a6100b03660046102d2565b5f918252602082815260408084206001600160a01b0390931684529190529020805460ff19166001179055565b5f858152602081815260408083206001600160a01b038716845290915290205460ff16156101685760405162461bcd60e51b815260206004820152602d60248201527f4d6f636b4e617469766553656e64416e6443616c6c52656365697665723a207360448201526c195b99195c88189b1bd8dad959609a1b60648201526084015b60405180910390fd5b826001600160a01b0316846001600160a01b0316867f98f64f0ad4e0e2a42535fa15b05dc6e800e16e439c98143fefabb72b43bad53e3486866040516101b0939291906102fc565b60405180910390a45f81900361021d5760405162461bcd60e51b815260206004820152602c60248201527f4d6f636b4e617469766553656e64416e6443616c6c52656365697665723a206560448201526b1b5c1d1e481c185e5b1bd85960a21b606482015260840161015f565b5050505050565b80356001600160a01b038116811461023a575f80fd5b919050565b5f805f805f60808688031215610253575f80fd5b8535945061026360208701610224565b935061027160408701610224565b9250606086013567ffffffffffffffff8082111561028d575f80fd5b818801915088601f8301126102a0575f80fd5b8135818111156102ae575f80fd5b8960208285010111156102bf575f80fd5b9699959850939650602001949392505050565b5f80604083850312156102e3575f80fd5b823591506102f360208401610224565b90509250929050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f191601019291505056fea26469706673582212206683ba5913d5b6b2094404422c4fefd3b932d1b3ae94ddb6f3c22f17540df58a64736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b506103678061001c5f395ff3fe608060405260043610610033575f3560e01c80632c3625fe14610037578063487bd69e1461004c5780637f450d8d14610096575b5f80fd5b61004a61004536600461023f565b6100dd565b005b348015610057575f80fd5b506100826100663660046102d2565b5f60208181529281526040808220909352908152205460ff1681565b604051901515815260200160405180910390f35b3480156100a1575f80fd5b5061004a6100b03660046102d2565b5f918252602082815260408084206001600160a01b0390931684529190529020805460ff19166001179055565b5f858152602081815260408083206001600160a01b038716845290915290205460ff16156101685760405162461bcd60e51b815260206004820152602d60248201527f4d6f636b4e617469766553656e64416e6443616c6c52656365697665723a207360448201526c195b99195c88189b1bd8dad959609a1b60648201526084015b60405180910390fd5b826001600160a01b0316846001600160a01b0316867f98f64f0ad4e0e2a42535fa15b05dc6e800e16e439c98143fefabb72b43bad53e3486866040516101b0939291906102fc565b60405180910390a45f81900361021d5760405162461bcd60e51b815260206004820152602c60248201527f4d6f636b4e617469766553656e64416e6443616c6c52656365697665723a206560448201526b1b5c1d1e481c185e5b1bd85960a21b606482015260840161015f565b5050505050565b80356001600160a01b038116811461023a575f80fd5b919050565b5f805f805f60808688031215610253575f80fd5b8535945061026360208701610224565b935061027160408701610224565b9250606086013567ffffffffffffffff8082111561028d575f80fd5b818801915088601f8301126102a0575f80fd5b8135818111156102ae575f80fd5b8960208285010111156102bf575f80fd5b9699959850939650602001949392505050565b5f80604083850312156102e3575f80fd5b823591506102f360208401610224565b90509250929050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f191601019291505056fea2646970667358221220262d64360ecf05765079b8918f7466964a337ee572b6dc536b81332e509b0a0964736f6c63430008190033", } // MockNativeSendAndCallReceiverABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go index e186e213f..dcc010193 100644 --- a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go +++ b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go @@ -32,7 +32,7 @@ var ( // ExampleERC20MetaData contains all meta data concerning the ExampleERC20 contract. var ExampleERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b6108eb8061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a0712d68146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806342966c681461015957806370a082311461016c57806379cc679014610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806340c10f1914610144575b5f80fd5b6100d761020d565b6040516100e4919061072e565b60405180910390f35b6101006100fb366004610795565b61029d565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b6101006101303660046107bd565b6102b6565b604051601281526020016100e4565b610157610152366004610795565b6102d9565b005b6101576101673660046107f6565b610344565b61011461017a36600461080d565b6001600160a01b03165f9081526020819052604090205490565b6101576101a2366004610795565b610351565b6100d7610366565b6101576101bd3660046107f6565b610375565b6101006101d0366004610795565b6103d7565b6101146101e336600461082d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c9061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546102489061085e565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa8185856103e4565b60019150505b92915050565b5f336102c38582856103f6565b6102ce858585610471565b506001949350505050565b678ac7230489e800008111156103365760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61034082826104ce565b5050565b61034e3382610502565b50565b61035c8233836103f6565b6103408282610502565b60606004805461021c9061085e565b678ac7230489e800008111156103cd5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604482015260640161032d565b61034e33826104ce565b5f336102aa818585610471565b6103f18383836001610536565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046b578181101561045d57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161032d565b61046b84848484035f610536565b50505050565b6001600160a01b03831661049a57604051634b637e8f60e11b81525f600482015260240161032d565b6001600160a01b0382166104c35760405163ec442f0560e01b81525f600482015260240161032d565b6103f1838383610608565b6001600160a01b0382166104f75760405163ec442f0560e01b81525f600482015260240161032d565b6103405f8383610608565b6001600160a01b03821661052b57604051634b637e8f60e11b81525f600482015260240161032d565b610340825f83610608565b6001600160a01b03841661055f5760405163e602df0560e01b81525f600482015260240161032d565b6001600160a01b03831661058857604051634a1406b160e11b81525f600482015260240161032d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610632578060025f8282546106279190610896565b909155506106a29050565b6001600160a01b0383165f90815260208190526040902054818110156106845760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161032d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106be576002805482900390556106dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161072191815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561075a5785810183015185820160400152820161073e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610790575f80fd5b919050565b5f80604083850312156107a6575f80fd5b6107af8361077a565b946020939093013593505050565b5f805f606084860312156107cf575f80fd5b6107d88461077a565b92506107e66020850161077a565b9150604084013590509250925092565b5f60208284031215610806575f80fd5b5035919050565b5f6020828403121561081d575f80fd5b6108268261077a565b9392505050565b5f806040838503121561083e575f80fd5b6108478361077a565b91506108556020840161077a565b90509250929050565b600181811c9082168061087257607f821691505b60208210810361089057634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102b057634e487b7160e01b5f52601160045260245ffdfea2646970667358221220b5b5c10566ba02f1eb3b0a5409d12831455f3b68c472022e5525936f3d1d3d7064736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908161005f919061028b565b50600461006c828261028b565b50505061008b336b204fce5e3e2502611000000061009060201b60201c565b61036f565b6001600160a01b0382166100be5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100c95f83836100cd565b5050565b6001600160a01b0383166100f7578060025f8282546100ec919061034a565b909155506101679050565b6001600160a01b0383165f90815260208190526040902054818110156101495760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610183576002805482900390556101a1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021b57607f821691505b60208210810361023957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028657805f5260205f20601f840160051c810160208510156102645750805b601f840160051c820191505b81811015610283575f8155600101610270565b50505b505050565b81516001600160401b038111156102a4576102a46101f3565b6102b8816102b28454610207565b8461023f565b602080601f8311600181146102eb575f84156102d45750858301515b5f19600386901b1c1916600185901b178555610342565b5f85815260208120601f198616915b82811015610319578886015182559484019460019091019084016102fa565b508582101561033657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561036957634e487b7160e01b5f52601160045260245ffd5b92915050565b6108eb8061037c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a0712d68146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806342966c681461015957806370a082311461016c57806379cc679014610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce5671461013557806340c10f1914610144575b5f80fd5b6100d761020d565b6040516100e4919061072e565b60405180910390f35b6101006100fb366004610795565b61029d565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b6101006101303660046107bd565b6102b6565b604051601281526020016100e4565b610157610152366004610795565b6102d9565b005b6101576101673660046107f6565b610344565b61011461017a36600461080d565b6001600160a01b03165f9081526020819052604090205490565b6101576101a2366004610795565b610351565b6100d7610366565b6101576101bd3660046107f6565b610375565b6101006101d0366004610795565b6103d7565b6101146101e336600461082d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c9061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546102489061085e565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa8185856103e4565b60019150505b92915050565b5f336102c38582856103f6565b6102ce858585610471565b506001949350505050565b678ac7230489e800008111156103365760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61034082826104ce565b5050565b61034e3382610502565b50565b61035c8233836103f6565b6103408282610502565b60606004805461021c9061085e565b678ac7230489e800008111156103cd5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e7420657863656564656400604482015260640161032d565b61034e33826104ce565b5f336102aa818585610471565b6103f18383836001610536565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461046b578181101561045d57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161032d565b61046b84848484035f610536565b50505050565b6001600160a01b03831661049a57604051634b637e8f60e11b81525f600482015260240161032d565b6001600160a01b0382166104c35760405163ec442f0560e01b81525f600482015260240161032d565b6103f1838383610608565b6001600160a01b0382166104f75760405163ec442f0560e01b81525f600482015260240161032d565b6103405f8383610608565b6001600160a01b03821661052b57604051634b637e8f60e11b81525f600482015260240161032d565b610340825f83610608565b6001600160a01b03841661055f5760405163e602df0560e01b81525f600482015260240161032d565b6001600160a01b03831661058857604051634a1406b160e11b81525f600482015260240161032d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610632578060025f8282546106279190610896565b909155506106a29050565b6001600160a01b0383165f90815260208190526040902054818110156106845760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161032d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106be576002805482900390556106dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161072191815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561075a5785810183015185820160400152820161073e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610790575f80fd5b919050565b5f80604083850312156107a6575f80fd5b6107af8361077a565b946020939093013593505050565b5f805f606084860312156107cf575f80fd5b6107d88461077a565b92506107e66020850161077a565b9150604084013590509250925092565b5f60208284031215610806575f80fd5b5035919050565b5f6020828403121561081d575f80fd5b6108268261077a565b9392505050565b5f806040838503121561083e575f80fd5b6108478361077a565b91506108556020840161077a565b90509250929050565b600181811c9082168061087257607f821691505b60208210810361089057634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102b057634e487b7160e01b5f52601160045260245ffdfea26469706673582212206a9eb05c36a9ec249f9dcc0a91278c9f9b115c142a622619b8a84897e12e119b64736f6c63430008190033", } // ExampleERC20ABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go index 2c2190974..b9b21f7a3 100644 --- a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -66,7 +66,7 @@ type TeleporterMessageReceipt struct { // TeleporterMessengerMetaData contains all meta data concerning the TeleporterMessenger contract. var TeleporterMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b5060015f8190558055613142806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612138565b6104f3565b005b61015461018a366004612153565b6105e6565b6101d961019d366004612153565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e92919061216a565b6101fa6101f5366004612153565b610602565b6040516001600160a01b03909116815260200161015e565b610154610220366004612153565b5f9081526005602052604090205490565b61015461023f366004612191565b610689565b61017a6102523660046121de565b6106e2565b610154610265366004612153565b60066020525f908152604090205481565b61028961028436600461220f565b610885565b60405161015e919061222f565b61017a6102a436600461224f565b6108b6565b6101546102b7366004612284565b610aed565b6101546102ca3660046122f4565b610b2f565b6101fa6005600160991b0181565b6101546102eb366004612385565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a6103233660046123bc565b610dc1565b61015460025481565b61015461033f366004612153565b6111e3565b61038c610352366004612153565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b9366004612153565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f4366004612153565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046123e0565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190612423565b9050806104be5760405162461bcd60e51b81526004016104b59061243a565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b590612481565b60025f556106d86106bb836126b8565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b590612481565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612757565b5f8360405160200161079491906129d6565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906129e8565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612a31565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a908490600401612ab2565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a9190612423565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b590612481565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b590612ac4565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612b09565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612757565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612b71565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b590612481565b60025f818155905490866001600160401b03811115610b7257610b726124c4565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612b84565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612b84565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612b98565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b590612ac4565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612c0e565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612da2565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611904565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611970565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612b84565b60200260200101516119e0565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611b04565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612fb1565b60405180910390a460e084015151156111d5576111d582875f015186611b5e565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b59061243a565b5f60035460016112159190612b71565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b590612ac4565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612757565b80836040516020016112b791906129d6565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906129e8565b5f6112fb6080850160608601612138565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612138565b6113cb60e0870187612fd4565b6040516024016113de9493929190613016565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612138565b5a84611c8d565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611ca4565b505050565b805460018201545f916105fc91613040565b60605f611520600561151b856114f8565b611d05565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b03811115611585576115856124c4565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611d1a565b8282815181106115f1576115f1612b84565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f90613053565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac919061306b565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612b09565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b6908890869061307d565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e8908690600401612ab2565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118289190612423565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612b71565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b5f6108af833384611de4565b5f81515f03611915575060016105fc565b81515f5b8181101561196657846001600160a01b031684828151811061193d5761193d612b84565b60200260200101516001600160a01b03160361195e576001925050506105fc565b600101611919565b505f949350505050565b805f036119cf5760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f6119ef8484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611a45575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611aab908490612b71565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611af5919061308f565b60405180910390a45050505050565b600182018054829160028501915f9182611b1d83613053565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611bc05760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611be0576114f3838383611f47565b602081015160e08201516040515f92611bfd9286926024016130af565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611c41919084611c8d565b905080611c5a57611c53858585611f47565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611cb86001600160a01b03841683611fbb565b905080515f14158015611cdc575080806020019051810190611cda91906130d8565b155b156114f357604051635274afe760e01b81526001600160a01b03841660048201526024016104b5565b5f818310611d1357816108af565b5090919050565b604080518082019091525f808252602082015281546001830154819003611d835760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611dda908390612b71565b9093555090919050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015611e2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4e9190612423565b9050611e656001600160a01b038616853086611fc8565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015611ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecd9190612423565b9050818111611f335760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611f3d8282613040565b9695505050505050565b80604051602001611f58919061306b565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fae90859061306b565b60405180910390a3505050565b60606108af83835f612007565b6040516001600160a01b0384811660248301528381166044830152606482018390526120019186918216906323b872dd906084016114c1565b50505050565b60608147101561202c5760405163cd78605960e01b81523060048201526024016104b5565b5f80856001600160a01b0316848660405161204791906130f1565b5f6040518083038185875af1925050503d805f8114612081576040519150601f19603f3d011682016040523d82523d5f602084013e612086565b606091505b5091509150611f3d8683836060826120a6576120a1826120ed565b6108af565b81511580156120bd57506001600160a01b0384163b155b156120e657604051639996b31560e01b81526001600160a01b03851660048201526024016104b5565b50806108af565b8051156120fd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b0381168114612116575f80fd5b80356104ee81612119565b5f60208284031215612148575f80fd5b81356108af81612119565b5f60208284031215612163575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f602082840312156121a1575f80fd5b81356001600160401b038111156121b6575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156121d8575f80fd5b50919050565b5f602082840312156121ee575f80fd5b81356001600160401b03811115612203575f80fd5b611222848285016121c7565b5f8060408385031215612220575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f60608486031215612261575f80fd5b83359250602084013561227381612119565b929592945050506040919091013590565b5f805f60608486031215612296575f80fd5b505081359360208301359350604090920135919050565b5f8083601f8401126122bd575f80fd5b5081356001600160401b038111156122d3575f80fd5b6020830191508360208260051b85010111156122ed575f80fd5b9250929050565b5f805f805f8086880360a081121561230a575f80fd5b8735965060208801356001600160401b0380821115612327575f80fd5b6123338b838c016122ad565b90985096508691506040603f198401121561234c575f80fd5b60408a01955060808a0135925080831115612365575f80fd5b505061237389828a016122ad565b979a9699509497509295939492505050565b5f8060408385031215612396575f80fd5b82356123a181612119565b915060208301356123b181612119565b809150509250929050565b5f80604083850312156123cd575f80fd5b823563ffffffff811681146123a1575f80fd5b5f80604083850312156123f1575f80fd5b8235915060208301356001600160401b0381111561240d575f80fd5b612419858286016121c7565b9150509250929050565b5f60208284031215612433575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124fa576124fa6124c4565b60405290565b60405160c081016001600160401b03811182821017156124fa576124fa6124c4565b60405161010081016001600160401b03811182821017156124fa576124fa6124c4565b604051601f8201601f191681016001600160401b038111828210171561256d5761256d6124c4565b604052919050565b5f60408284031215612585575f80fd5b61258d6124d8565b9050813561259a81612119565b808252506020820135602082015292915050565b5f6001600160401b038211156125c6576125c66124c4565b5060051b60200190565b5f82601f8301126125df575f80fd5b813560206125f46125ef836125ae565b612545565b8083825260208201915060208460051b870101935086841115612615575f80fd5b602086015b8481101561263a57803561262d81612119565b835291830191830161261a565b509695505050505050565b5f6001600160401b0382111561265d5761265d6124c4565b50601f01601f191660200190565b5f82601f83011261267a575f80fd5b81356126886125ef82612645565b81815284602083860101111561269c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156126c8575f80fd5b6126d0612500565b823581526126e06020840161212d565b60208201526126f23660408501612575565b60408201526080830135606082015260a08301356001600160401b038082111561271a575f80fd5b612726368387016125d0565b608084015260c085013591508082111561273e575f80fd5b5061274b3682860161266b565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e198436030181126127b2575f80fd5b83016020810192503590506001600160401b038111156127d0575f80fd5b8060051b36038213156122ed575f80fd5b8183525f60208085019450825f5b8581101561281d57813561280281612119565b6001600160a01b0316875295820195908201906001016127ef565b509495945050505050565b5f808335601e1984360301811261283d575f80fd5b83016020810192503590506001600160401b0381111561285b575f80fd5b8060061b36038213156122ed575f80fd5b8183525f60208085019450825f5b8581101561281d57813587528282013561289381612119565b6001600160a01b031687840152604096870196919091019060010161287a565b5f808335601e198436030181126128c8575f80fd5b83016020810192503590506001600160401b038111156128e6575f80fd5b8036038213156122ed575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561293281612119565b6001600160a01b03166020850152604083810135908501526129566060840161212d565b6001600160a01b031660608501526080838101359085015261297b60a084018461279d565b8260a087015261298e83870182846127e1565b9250505061299f60c0840184612828565b85830360c08701526129b283828461286c565b925050506129c360e08401846128b3565b85830360e0870152611f3d8382846128f4565b602081525f6108af602083018461291c565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a43606083018561291c565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f5b83811015612a7f578181015183820152602001612a67565b50505f910152565b5f8151808452612a9e816020860160208601612a65565b601f01601f19169290920160200192915050565b602081525f6108af6020830184612a87565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612b5d565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612ba8575f80fd5b6108af8383612575565b80516104ee81612119565b5f82601f830112612bcc575f80fd5b8151612bda6125ef82612645565b818152846020838601011115612bee575f80fd5b611222826020830160208701612a65565b805180151581146104ee575f80fd5b5f8060408385031215612c1f575f80fd5b82516001600160401b0380821115612c35575f80fd5b9084019060608287031215612c48575f80fd5b604051606081018181108382111715612c6357612c636124c4565b604052825181526020830151612c7881612119565b6020820152604083015182811115612c8e575f80fd5b612c9a88828601612bbd565b6040830152509350612cb191505060208401612bff565b90509250929050565b5f82601f830112612cc9575f80fd5b81516020612cd96125ef836125ae565b8083825260208201915060208460051b870101935086841115612cfa575f80fd5b602086015b8481101561263a578051612d1281612119565b8352918301918301612cff565b5f82601f830112612d2e575f80fd5b81516020612d3e6125ef836125ae565b82815260069290921b84018101918181019086841115612d5c575f80fd5b8286015b8481101561263a5760408189031215612d77575f80fd5b612d7f6124d8565b8151815284820151612d9081612119565b81860152835291830191604001612d60565b5f60208284031215612db2575f80fd5b81516001600160401b0380821115612dc8575f80fd5b908301906101008286031215612ddc575f80fd5b612de4612522565b82518152612df460208401612bb2565b602082015260408301516040820152612e0f60608401612bb2565b60608201526080830151608082015260a083015182811115612e2f575f80fd5b612e3b87828601612cba565b60a08301525060c083015182811115612e52575f80fd5b612e5e87828601612d1f565b60c08301525060e083015182811115612e75575f80fd5b612e8187828601612bbd565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b8381101561281d5781516001600160a01b031687529582019590820190600101612ea3565b5f815180845260208085019450602084015f5b8381101561281d57612f01878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612edb565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f5260608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f7482860182612e90565b91505060c083015184820360c0860152612f8e8282612ec8565b91505060e083015184820360e0860152612fa88282612a87565b95945050505050565b6001600160a01b03831681526040602082018190525f9061122290830184612f14565b5f808335601e19843603018112612fe9575f80fd5b8301803591506001600160401b03821115613002575f80fd5b6020019150368190038213156122ed575f80fd5b8481526001600160a01b03841660208201526060604082018190525f90611f3d90830184866128f4565b818103818111156105fc576105fc612b5d565b5f6001820161306457613064612b5d565b5060010190565b602081525f6108af6020830184612f14565b606081525f612a436060830185612f14565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90612fa890830184612a87565b5f602082840312156130e8575f80fd5b6108af82612bff565b5f8251613102818460208701612a65565b919091019291505056fea2646970667358221220145c00d2f7da170a115110d5b9b4c10a8755dd870cd1670e10c9ba8e47b104e464736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b5060015f8190558055613142806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612138565b6104f3565b005b61015461018a366004612153565b6105e6565b6101d961019d366004612153565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e92919061216a565b6101fa6101f5366004612153565b610602565b6040516001600160a01b03909116815260200161015e565b610154610220366004612153565b5f9081526005602052604090205490565b61015461023f366004612191565b610689565b61017a6102523660046121de565b6106e2565b610154610265366004612153565b60066020525f908152604090205481565b61028961028436600461220f565b610885565b60405161015e919061222f565b61017a6102a436600461224f565b6108b6565b6101546102b7366004612284565b610aed565b6101546102ca3660046122f4565b610b2f565b6101fa6005600160991b0181565b6101546102eb366004612385565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a6103233660046123bc565b610dc1565b61015460025481565b61015461033f366004612153565b6111e3565b61038c610352366004612153565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b9366004612153565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f4366004612153565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046123e0565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190612423565b9050806104be5760405162461bcd60e51b81526004016104b59061243a565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b590612481565b60025f556106d86106bb836126b8565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b590612481565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612757565b5f8360405160200161079491906129d6565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906129e8565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612a31565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a908490600401612ab2565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a9190612423565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b590612481565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b590612ac4565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612b09565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612757565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612b71565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b590612481565b60025f818155905490866001600160401b03811115610b7257610b726124c4565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612b84565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612b84565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612b98565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b590612ac4565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612c0e565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612da2565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611904565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611970565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612b84565b60200260200101516119e0565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611b04565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612fb1565b60405180910390a460e084015151156111d5576111d582875f015186611b5e565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b59061243a565b5f60035460016112159190612b71565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b590612ac4565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612757565b80836040516020016112b791906129d6565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906129e8565b5f6112fb6080850160608601612138565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612138565b6113cb60e0870187612fd4565b6040516024016113de9493929190613016565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612138565b5a84611c8d565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611ca4565b505050565b805460018201545f916105fc91613040565b60605f611520600561151b856114f8565b611d05565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b03811115611585576115856124c4565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611d1a565b8282815181106115f1576115f1612b84565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f90613053565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac919061306b565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612b09565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b6908890869061307d565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e8908690600401612ab2565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118289190612423565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612b71565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b5f6108af833384611de4565b5f81515f03611915575060016105fc565b81515f5b8181101561196657846001600160a01b031684828151811061193d5761193d612b84565b60200260200101516001600160a01b03160361195e576001925050506105fc565b600101611919565b505f949350505050565b805f036119cf5760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f6119ef8484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611a45575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611aab908490612b71565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611af5919061308f565b60405180910390a45050505050565b600182018054829160028501915f9182611b1d83613053565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611bc05760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611be0576114f3838383611f47565b602081015160e08201516040515f92611bfd9286926024016130af565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611c41919084611c8d565b905080611c5a57611c53858585611f47565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f611cb86001600160a01b03841683611fbb565b905080515f14158015611cdc575080806020019051810190611cda91906130d8565b155b156114f357604051635274afe760e01b81526001600160a01b03841660048201526024016104b5565b5f818310611d1357816108af565b5090919050565b604080518082019091525f808252602082015281546001830154819003611d835760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611dda908390612b71565b9093555090919050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015611e2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4e9190612423565b9050611e656001600160a01b038616853086611fc8565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015611ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecd9190612423565b9050818111611f335760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611f3d8282613040565b9695505050505050565b80604051602001611f58919061306b565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fae90859061306b565b60405180910390a3505050565b60606108af83835f612007565b6040516001600160a01b0384811660248301528381166044830152606482018390526120019186918216906323b872dd906084016114c1565b50505050565b60608147101561202c5760405163cd78605960e01b81523060048201526024016104b5565b5f80856001600160a01b0316848660405161204791906130f1565b5f6040518083038185875af1925050503d805f8114612081576040519150601f19603f3d011682016040523d82523d5f602084013e612086565b606091505b5091509150611f3d8683836060826120a6576120a1826120ed565b6108af565b81511580156120bd57506001600160a01b0384163b155b156120e657604051639996b31560e01b81526001600160a01b03851660048201526024016104b5565b50806108af565b8051156120fd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b0381168114612116575f80fd5b80356104ee81612119565b5f60208284031215612148575f80fd5b81356108af81612119565b5f60208284031215612163575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f602082840312156121a1575f80fd5b81356001600160401b038111156121b6575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156121d8575f80fd5b50919050565b5f602082840312156121ee575f80fd5b81356001600160401b03811115612203575f80fd5b611222848285016121c7565b5f8060408385031215612220575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f60608486031215612261575f80fd5b83359250602084013561227381612119565b929592945050506040919091013590565b5f805f60608486031215612296575f80fd5b505081359360208301359350604090920135919050565b5f8083601f8401126122bd575f80fd5b5081356001600160401b038111156122d3575f80fd5b6020830191508360208260051b85010111156122ed575f80fd5b9250929050565b5f805f805f8086880360a081121561230a575f80fd5b8735965060208801356001600160401b0380821115612327575f80fd5b6123338b838c016122ad565b90985096508691506040603f198401121561234c575f80fd5b60408a01955060808a0135925080831115612365575f80fd5b505061237389828a016122ad565b979a9699509497509295939492505050565b5f8060408385031215612396575f80fd5b82356123a181612119565b915060208301356123b181612119565b809150509250929050565b5f80604083850312156123cd575f80fd5b823563ffffffff811681146123a1575f80fd5b5f80604083850312156123f1575f80fd5b8235915060208301356001600160401b0381111561240d575f80fd5b612419858286016121c7565b9150509250929050565b5f60208284031215612433575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156124fa576124fa6124c4565b60405290565b60405160c081016001600160401b03811182821017156124fa576124fa6124c4565b60405161010081016001600160401b03811182821017156124fa576124fa6124c4565b604051601f8201601f191681016001600160401b038111828210171561256d5761256d6124c4565b604052919050565b5f60408284031215612585575f80fd5b61258d6124d8565b9050813561259a81612119565b808252506020820135602082015292915050565b5f6001600160401b038211156125c6576125c66124c4565b5060051b60200190565b5f82601f8301126125df575f80fd5b813560206125f46125ef836125ae565b612545565b8083825260208201915060208460051b870101935086841115612615575f80fd5b602086015b8481101561263a57803561262d81612119565b835291830191830161261a565b509695505050505050565b5f6001600160401b0382111561265d5761265d6124c4565b50601f01601f191660200190565b5f82601f83011261267a575f80fd5b81356126886125ef82612645565b81815284602083860101111561269c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156126c8575f80fd5b6126d0612500565b823581526126e06020840161212d565b60208201526126f23660408501612575565b60408201526080830135606082015260a08301356001600160401b038082111561271a575f80fd5b612726368387016125d0565b608084015260c085013591508082111561273e575f80fd5b5061274b3682860161266b565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e198436030181126127b2575f80fd5b83016020810192503590506001600160401b038111156127d0575f80fd5b8060051b36038213156122ed575f80fd5b8183525f60208085019450825f5b8581101561281d57813561280281612119565b6001600160a01b0316875295820195908201906001016127ef565b509495945050505050565b5f808335601e1984360301811261283d575f80fd5b83016020810192503590506001600160401b0381111561285b575f80fd5b8060061b36038213156122ed575f80fd5b8183525f60208085019450825f5b8581101561281d57813587528282013561289381612119565b6001600160a01b031687840152604096870196919091019060010161287a565b5f808335601e198436030181126128c8575f80fd5b83016020810192503590506001600160401b038111156128e6575f80fd5b8036038213156122ed575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561293281612119565b6001600160a01b03166020850152604083810135908501526129566060840161212d565b6001600160a01b031660608501526080838101359085015261297b60a084018461279d565b8260a087015261298e83870182846127e1565b9250505061299f60c0840184612828565b85830360c08701526129b283828461286c565b925050506129c360e08401846128b3565b85830360e0870152611f3d8382846128f4565b602081525f6108af602083018461291c565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f612a43606083018561291c565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f5b83811015612a7f578181015183820152602001612a67565b50505f910152565b5f8151808452612a9e816020860160208601612a65565b601f01601f19169290920160200192915050565b602081525f6108af6020830184612a87565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612b5d565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612ba8575f80fd5b6108af8383612575565b80516104ee81612119565b5f82601f830112612bcc575f80fd5b8151612bda6125ef82612645565b818152846020838601011115612bee575f80fd5b611222826020830160208701612a65565b805180151581146104ee575f80fd5b5f8060408385031215612c1f575f80fd5b82516001600160401b0380821115612c35575f80fd5b9084019060608287031215612c48575f80fd5b604051606081018181108382111715612c6357612c636124c4565b604052825181526020830151612c7881612119565b6020820152604083015182811115612c8e575f80fd5b612c9a88828601612bbd565b6040830152509350612cb191505060208401612bff565b90509250929050565b5f82601f830112612cc9575f80fd5b81516020612cd96125ef836125ae565b8083825260208201915060208460051b870101935086841115612cfa575f80fd5b602086015b8481101561263a578051612d1281612119565b8352918301918301612cff565b5f82601f830112612d2e575f80fd5b81516020612d3e6125ef836125ae565b82815260069290921b84018101918181019086841115612d5c575f80fd5b8286015b8481101561263a5760408189031215612d77575f80fd5b612d7f6124d8565b8151815284820151612d9081612119565b81860152835291830191604001612d60565b5f60208284031215612db2575f80fd5b81516001600160401b0380821115612dc8575f80fd5b908301906101008286031215612ddc575f80fd5b612de4612522565b82518152612df460208401612bb2565b602082015260408301516040820152612e0f60608401612bb2565b60608201526080830151608082015260a083015182811115612e2f575f80fd5b612e3b87828601612cba565b60a08301525060c083015182811115612e52575f80fd5b612e5e87828601612d1f565b60c08301525060e083015182811115612e75575f80fd5b612e8187828601612bbd565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b8381101561281d5781516001600160a01b031687529582019590820190600101612ea3565b5f815180845260208085019450602084015f5b8381101561281d57612f01878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612edb565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612f5260608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612f7482860182612e90565b91505060c083015184820360c0860152612f8e8282612ec8565b91505060e083015184820360e0860152612fa88282612a87565b95945050505050565b6001600160a01b03831681526040602082018190525f9061122290830184612f14565b5f808335601e19843603018112612fe9575f80fd5b8301803591506001600160401b03821115613002575f80fd5b6020019150368190038213156122ed575f80fd5b8481526001600160a01b03841660208201526060604082018190525f90611f3d90830184866128f4565b818103818111156105fc576105fc612b5d565b5f6001820161306457613064612b5d565b5060010190565b602081525f6108af6020830184612f14565b606081525f612a436060830185612f14565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90612fa890830184612a87565b5f602082840312156130e8575f80fd5b6108af82612bff565b5f8251613102818460208701612a65565b919091019291505056fea264697066735822122095429924b245f7d09ccffa3ccf5f58617c67df2e40dc86e3e1fc11f364c3ef9e64736f6c63430008190033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go index 3e986c31e..8479f0f60 100644 --- a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go @@ -38,7 +38,7 @@ type ProtocolRegistryEntry struct { // TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. var TeleporterRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561000f575f80fd5b50604051610fe0380380610fe083398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610ab561052b5f395f818161014301526102580152610ab55ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061099e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a17565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a17565b5f546106656101f482610a60565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b5f5b81811015610974578581018301518582018401528201610959565b505f8282860101525082604083015281955061099181880161088b565b9450505050509250929050565b5f8082840360608112156109b0575f80fd5b60408112156109bd575f80fd5b506040516040810181811067ffffffffffffffff821117156109e1576109e161081d565b6040528351815260208401516109f6816107eb565b60208201526040840151909250610a0c816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea26469706673582212201af58fb490726d9f5e5bf0a133de22e2ce3ad34f20c603ed88a8c4388a0bf8f364736f6c63430008190033", + Bin: "0x60a060405234801561000f575f80fd5b50604051610fe0380380610fe083398101604081905261002e916103e2565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a291906104bc565b60805280515f5b818110156100e1576100d98382815181106100c6576100c66104d3565b60200260200101516100e960201b60201c565b6001016100a9565b50505061050c565b80515f0361013e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80515f908152600160205260409020546001600160a01b0316156101b75760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610135565b60208101516001600160a01b03166102235760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b6064820152608401610135565b5f546102316101f4826104e7565b825111156102985760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610135565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156102ff5781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156103725781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156103ac576103ac610376565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103da576103da610376565b604052919050565b5f60208083850312156103f3575f80fd5b82516001600160401b0380821115610409575f80fd5b818501915085601f83011261041c575f80fd5b81518181111561042e5761042e610376565b61043c848260051b016103b2565b818152848101925060069190911b83018401908782111561045b575f80fd5b928401925b818410156104b15760408489031215610477575f80fd5b61047f61038a565b84518152858501516001600160a01b038116811461049b575f80fd5b8187015283526040939093019291840191610460565b979650505050505050565b5f602082840312156104cc575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561050657634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610ab561052b5f395f818161014301526102580152610ab55ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063ac473ac311610063578063ac473ac31461011f578063b771b3bc14610128578063c07f47d414610136578063d127dc9b1461013e578063d820e64f14610165575f80fd5b80630731775d1461009f578063215abce9146100c357806341f34ed9146100d657806346f9ef49146100eb5780634c1f08ce146100fe575b5f80fd5b6100a65f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a66100d13660046107aa565b61016d565b6100e96100e43660046107c1565b61017d565b005b6100a66100f93660046107aa565b6103ec565b61011161010c366004610802565b6104ae565b6040519081526020016100ba565b6101116101f481565b6100a66005600160991b0181565b6101115f5481565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6100a6610554565b5f610177826103ec565b92915050565b6040516306f8253560e41b815263ffffffff821660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101ed919081019061089f565b91509150806102545760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102d85760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b606482015260840161024b565b60208201516001600160a01b03161561034d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b606482015260840161024b565b5f808360400151806020019051810190610367919061099e565b90925090506001600160a01b03811630146103dc5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b606482015260840161024b565b6103e582610564565b5050505050565b5f815f0361043c5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b5f828152600160205260409020546001600160a01b0316806101775760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b606482015260840161024b565b5f6001600160a01b0382166104d55760405162461bcd60e51b815260040161024b90610a17565b6001600160a01b0382165f90815260026020526040812054908190036101775760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b606482015260840161024b565b5f61055f5f546103ec565b905090565b80515f036105b45760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e604482015260640161024b565b80515f908152600160205260409020546001600160a01b03161561062d5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840161024b565b60208101516001600160a01b03166106575760405162461bcd60e51b815260040161024b90610a17565b5f546106656101f482610a60565b825111156106cc5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840161024b565b6020828101805184515f90815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156107335781516020808401516001600160a01b03165f908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a905f90a381518110156107a65781515f81815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b5f602082840312156107ba575f80fd5b5035919050565b5f602082840312156107d1575f80fd5b813563ffffffff811681146107e4575f80fd5b9392505050565b6001600160a01b03811681146107ff575f80fd5b50565b5f60208284031215610812575f80fd5b81356107e4816107eb565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156108545761085461081d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108835761088361081d565b604052919050565b8051801515811461089a575f80fd5b919050565b5f80604083850312156108b0575f80fd5b825167ffffffffffffffff808211156108c7575f80fd5b90840190606082870312156108da575f80fd5b6108e2610831565b825181526020808401516108f5816107eb565b8282015260408401518381111561090a575f80fd5b80850194505087601f85011261091e575f80fd5b8351838111156109305761093061081d565b610942601f8201601f1916830161085a565b93508084528882828701011115610957575f80fd5b5f5b81811015610974578581018301518582018401528201610959565b505f8282860101525082604083015281955061099181880161088b565b9450505050509250929050565b5f8082840360608112156109b0575f80fd5b60408112156109bd575f80fd5b506040516040810181811067ffffffffffffffff821117156109e1576109e161081d565b6040528351815260208401516109f6816107eb565b60208201526040840151909250610a0c816107eb565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017757634e487b7160e01b5f52601160045260245ffdfea264697066735822122050aeecf8dbacb4df760554b907e6527397de8544826b3d9b7ee803fe3ef11a1b64736f6c63430008190033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go index 17aedaf4b..2621c180d 100644 --- a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go +++ b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go @@ -32,7 +32,7 @@ var ( // TestMessengerMetaData contains all meta data concerning the TestMessenger contract. var TestMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTeleporterVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ReceiveMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TELEPORTER_REGISTRY_APP_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getCurrentMessage\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051611ff4380380611ff483398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611fd4833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611fd483398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b6119498061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e5780639731429714610159578063b33fead41461017c578063c868efaa1461019d578063d2cc7a70146101b0578063f2fde38b146101d7578063f63d09d7146101ea575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610137575b5f80fd5b6100c86100c336600461130a565b6101fd565b005b6100c86100d836600461130a565b6102ff565b6100c86100eb366004611325565b6103ee565b6100c8610402565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014b5f805160206118f483398151915281565b60405190815260200161012e565b61016c61016736600461130a565b610415565b604051901515815260200161012e565b61018f61018a366004611325565b610435565b60405161012e929190611389565b6100c86101ab3660046113f9565b610507565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d025461014b565b6100c86101e536600461130a565b6106e5565b61014b6101f8366004611451565b61071f565b5f805160206118f483398151915261021361087b565b6001600160a01b0382166102425760405162461bcd60e51b8152600401610239906114d1565b60405180910390fd5b61024c8183610883565b156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610239565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f805160206118f483398151915261031561087b565b6001600160a01b03821661033b5760405162461bcd60e51b8152600401610239906114d1565b6103458183610883565b6103a35760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610239565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103f661087b565b6103ff816108a7565b50565b61040a610a3f565b6104135f610a9a565b565b5f5f805160206118f483398151915261042e8184610883565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104729061151f565b80601f016020809104026020016040519081016040528092919081815260200182805461049e9061151f565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b61050f610b0a565b5f5f805160206118f483398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e9190611557565b10156106055760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610239565b61060f8133610883565b156106755760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610239565b6106b5858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b5492505050565b506106df60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6106ed610a3f565b6001600160a01b03811661071657604051631e4fbdf760e01b81525f6004820152602401610239565b6103ff81610a9a565b5f610728610b0a565b5f851561073c576107398787610c09565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca898489898960405161077e959493929190611596565b60405180910390a36108446040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107eb576107eb6115c3565b604051908082528060200260200182016040528015610814578160200160208202803683370190505b508152602001868660405160200161082d9291906115d7565b604051602081830303815290604052815250610c15565b91505061087060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610413610a3f565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f805160206118f483398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611557565b6002830154909150818411156109915760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610239565b808411610a065760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610239565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a717f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104135760405163118cdaa760e01b8152336004820152602401610239565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b4e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b6991906115ea565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610bbd90826116d2565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bfb9190611792565b60405180910390a350505050565b5f61042e833384610d30565b5f80610c1f610e93565b60408401516020015190915015610cc4576040830151516001600160a01b0316610ca15760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610239565b604083015160208101519051610cc4916001600160a01b03909116908390610f83565b604051630624488560e41b81526001600160a01b03821690636244885090610cf09086906004016117e7565b6020604051808303815f875af1158015610d0c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e9190611557565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015610d76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9a9190611557565b9050610db16001600160a01b03861685308661100a565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015610df5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e199190611557565b9050818111610e7f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610239565b610e898282611878565b9695505050505050565b5f805160206118f483398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610eed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f11919061188b565b9050610f1d8282610883565b156108a15760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610239565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015610fd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff49190611557565b90506106df848461100585856118a6565b611071565b6040516001600160a01b0384811660248301528381166044830152606482018390526106df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506110fc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526110c28482611162565b6106df576040516001600160a01b0384811660248301525f60448301526110f691869182169063095ea7b39060640161103f565b6106df84825b5f6111106001600160a01b03841683611203565b905080515f1415801561113457508080602001905181019061113291906118b9565b155b1561115d57604051635274afe760e01b81526001600160a01b0384166004820152602401610239565b505050565b5f805f846001600160a01b03168460405161117d91906118d8565b5f604051808303815f865af19150503d805f81146111b6576040519150601f19603f3d011682016040523d82523d5f602084013e6111bb565b606091505b50915091508180156111e55750805115806111e55750808060200190518101906111e591906118b9565b80156111fa57505f856001600160a01b03163b115b95945050505050565b606061042e83835f845f80856001600160a01b0316848660405161122791906118d8565b5f6040518083038185875af1925050503d805f8114611261576040519150601f19603f3d011682016040523d82523d5f602084013e611266565b606091505b5091509150610e8986838360608261128657611281826112cd565b61042e565b815115801561129d57506001600160a01b0384163b155b156112c657604051639996b31560e01b81526001600160a01b0385166004820152602401610239565b508061042e565b8051156112dd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103ff575f80fd5b5f6020828403121561131a575f80fd5b813561042e816112f6565b5f60208284031215611335575f80fd5b5035919050565b5f5b8381101561135657818101518382015260200161133e565b50505f910152565b5f815180845261137581602086016020860161133c565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190525f906113ac9083018461135e565b949350505050565b5f8083601f8401126113c4575f80fd5b50813567ffffffffffffffff8111156113db575f80fd5b6020830191508360208285010111156113f2575f80fd5b9250929050565b5f805f806060858703121561140c575f80fd5b84359350602085013561141e816112f6565b9250604085013567ffffffffffffffff811115611439575f80fd5b611445878288016113b4565b95989497509550505050565b5f805f805f805f60c0888a031215611467575f80fd5b873596506020880135611479816112f6565b95506040880135611489816112f6565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114b2575f80fd5b6114be8a828b016113b4565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061153357607f821691505b60208210810361155157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611567575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f61087060808301848661156e565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113ac60208301848661156e565b5f602082840312156115fa575f80fd5b815167ffffffffffffffff80821115611611575f80fd5b818401915084601f830112611624575f80fd5b815181811115611636576116366115c3565b604051601f8201601f19908116603f0116810190838211818310171561165e5761165e6115c3565b81604052828152876020848701011115611676575f80fd5b61087083602083016020880161133c565b601f82111561115d57805f5260205f20601f840160051c810160208510156116ac5750805b601f840160051c820191505b818110156116cb575f81556001016116b8565b5050505050565b815167ffffffffffffffff8111156116ec576116ec6115c3565b611700816116fa845461151f565b84611687565b602080601f831160018114611733575f841561171c5750858301515b5f19600386901b1c1916600185901b17855561178a565b5f85815260208120601f198616915b8281101561176157888601518255948401946001909101908401611742565b508582101561177e57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f61042e602083018461135e565b5f815180845260208085019450602084015f5b838110156117dc5781516001600160a01b0316875295820195908201906001016117b7565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526118476101008401826117a4565b905060a0840151601f198483030160e08501526111fa828261135e565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a1576108a1611864565b5f6020828403121561189b575f80fd5b815161042e816112f6565b808201808211156108a1576108a1611864565b5f602082840312156118c9575f80fd5b8151801515811461042e575f80fd5b5f82516118e981846020870161133c565b919091019291505056fede77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a26469706673582212205b824d791fd1064396435b9f04451292a80ede22ee2bc1286663b993aae81a4e64736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", + Bin: "0x608060405234801561000f575f80fd5b50604051611ff4380380611ff483398101604081905261002e9161062e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6100f4610152565b6100ff888888610164565b831561014557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505061067e565b61015a610184565b6101626101d2565b565b61016c610184565b6101768382610200565b61017f82610226565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661016257604051631afcd79f60e31b815260040160405180910390fd5b6101da610184565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610208610184565b610210610152565b61021861023a565b6102228282610242565b5050565b61022e610184565b610237816103d1565b50565b610162610184565b61024a610184565b6001600160a01b0382166102cb5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b5f7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0090505f8390505f816001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610667565b116103a95760405162461bcd60e51b815260206004820152603260248201525f80516020611fd4833981519152604482015271656c65706f7274657220726567697374727960701b60648201526084016102c2565b81546001600160a01b0319166001600160a01b0382161782556103cb8361040b565b50505050565b6103d9610184565b6001600160a01b03811661040257604051631e4fbdf760e01b81525f60048201526024016102c2565b610237816105a3565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d0080546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104969190610667565b6002830154909150818411156104f55760405162461bcd60e51b815260206004820152603160248201525f80516020611fd483398151915260448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102c2565b80841161056a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102c2565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80516001600160a01b0381168114610629575f80fd5b919050565b5f805f60608486031215610640575f80fd5b61064984610613565b925061065760208501610613565b9150604084015190509250925092565b5f60208284031215610677575f80fd5b5051919050565b6119498061068b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063973142971161006e5780639731429714610159578063b33fead41461017c578063c868efaa1461019d578063d2cc7a70146101b0578063f2fde38b146101d7578063f63d09d7146101ea575f80fd5b80632b0d8f18146100b55780634511243e146100ca5780635eb99514146100dd578063715018a6146100f05780638da5cb5b146100f8578063909a6ac014610137575b5f80fd5b6100c86100c336600461130a565b6101fd565b005b6100c86100d836600461130a565b6102ff565b6100c86100eb366004611325565b6103ee565b6100c8610402565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014b5f805160206118f483398151915281565b60405190815260200161012e565b61016c61016736600461130a565b610415565b604051901515815260200161012e565b61018f61018a366004611325565b610435565b60405161012e929190611389565b6100c86101ab3660046113f9565b610507565b7fde77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d025461014b565b6100c86101e536600461130a565b6106e5565b61014b6101f8366004611451565b61071f565b5f805160206118f483398151915261021361087b565b6001600160a01b0382166102425760405162461bcd60e51b8152600401610239906114d1565b60405180910390fd5b61024c8183610883565b156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610239565b6001600160a01b0382165f81815260018381016020526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a25050565b5f805160206118f483398151915261031561087b565b6001600160a01b03821661033b5760405162461bcd60e51b8152600401610239906114d1565b6103458183610883565b6103a35760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472794170703a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610239565b6001600160a01b0382165f818152600183016020526040808220805460ff19169055517f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c39190a25050565b6103f661087b565b6103ff816108a7565b50565b61040a610a3f565b6104135f610a9a565b565b5f5f805160206118f483398151915261042e8184610883565b9392505050565b5f81815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104729061151f565b80601f016020809104026020016040519081016040528092919081815260200182805461049e9061151f565b80156104e95780601f106104c0576101008083540402835291602001916104e9565b820191905f5260205f20905b8154815290600101906020018083116104cc57829003601f168201915b5050505050815250509050805f015181602001519250925050915091565b61050f610b0a565b5f5f805160206118f483398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e9190611557565b10156106055760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610239565b61060f8133610883565b156106755760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610239565b6106b5858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b5492505050565b506106df60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b6106ed610a3f565b6001600160a01b03811661071657604051631e4fbdf760e01b81525f6004820152602401610239565b6103ff81610a9a565b5f610728610b0a565b5f851561073c576107398787610c09565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca898489898960405161077e959493929190611596565b60405180910390a36108446040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b031681526020018581525081526020018781526020015f67ffffffffffffffff8111156107eb576107eb6115c3565b604051908082528060200260200182016040528015610814578160200160208202803683370190505b508152602001868660405160200161082d9291906115d7565b604051602081830303815290604052815250610c15565b91505061087060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610413610a3f565b6001600160a01b0381165f90815260018301602052604090205460ff165b92915050565b5f805160206118f483398151915280546040805163301fd1f560e21b815290515f926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091f9190611557565b6002830154909150818411156109915760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472794170703a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610239565b808411610a065760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f7274657252656769737472794170703a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610239565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d905f90a350505050565b33610a717f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104135760405163118cdaa760e01b8152336004820152602401610239565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b4e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f81806020019051810190610b6991906115ea565b6040805180820182526001600160a01b03868116825260208083018581525f8a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610bbd90826116d2565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bfb9190611792565b60405180910390a350505050565b5f61042e833384610d30565b5f80610c1f610e93565b60408401516020015190915015610cc4576040830151516001600160a01b0316610ca15760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f7274657252656769737472794170703a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610239565b604083015160208101519051610cc4916001600160a01b03909116908390610f83565b604051630624488560e41b81526001600160a01b03821690636244885090610cf09086906004016117e7565b6020604051808303815f875af1158015610d0c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e9190611557565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015610d76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9a9190611557565b9050610db16001600160a01b03861685308661100a565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015610df5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e199190611557565b9050818111610e7f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610239565b610e898282611878565b9695505050505050565b5f805160206118f483398151915280546040805163d820e64f60e01b815290515f939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610eed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f11919061188b565b9050610f1d8282610883565b156108a15760405162461bcd60e51b815260206004820152603060248201527f54656c65706f7274657252656769737472794170703a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610239565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015610fd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff49190611557565b90506106df848461100585856118a6565b611071565b6040516001600160a01b0384811660248301528381166044830152606482018390526106df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506110fc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526110c28482611162565b6106df576040516001600160a01b0384811660248301525f60448301526110f691869182169063095ea7b39060640161103f565b6106df84825b5f6111106001600160a01b03841683611203565b905080515f1415801561113457508080602001905181019061113291906118b9565b155b1561115d57604051635274afe760e01b81526001600160a01b0384166004820152602401610239565b505050565b5f805f846001600160a01b03168460405161117d91906118d8565b5f604051808303815f865af19150503d805f81146111b6576040519150601f19603f3d011682016040523d82523d5f602084013e6111bb565b606091505b50915091508180156111e55750805115806111e55750808060200190518101906111e591906118b9565b80156111fa57505f856001600160a01b03163b115b95945050505050565b606061042e83835f845f80856001600160a01b0316848660405161122791906118d8565b5f6040518083038185875af1925050503d805f8114611261576040519150601f19603f3d011682016040523d82523d5f602084013e611266565b606091505b5091509150610e8986838360608261128657611281826112cd565b61042e565b815115801561129d57506001600160a01b0384163b155b156112c657604051639996b31560e01b81526001600160a01b0385166004820152602401610239565b508061042e565b8051156112dd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146103ff575f80fd5b5f6020828403121561131a575f80fd5b813561042e816112f6565b5f60208284031215611335575f80fd5b5035919050565b5f5b8381101561135657818101518382015260200161133e565b50505f910152565b5f815180845261137581602086016020860161133c565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190525f906113ac9083018461135e565b949350505050565b5f8083601f8401126113c4575f80fd5b50813567ffffffffffffffff8111156113db575f80fd5b6020830191508360208285010111156113f2575f80fd5b9250929050565b5f805f806060858703121561140c575f80fd5b84359350602085013561141e816112f6565b9250604085013567ffffffffffffffff811115611439575f80fd5b611445878288016113b4565b95989497509550505050565b5f805f805f805f60c0888a031215611467575f80fd5b873596506020880135611479816112f6565b95506040880135611489816112f6565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156114b2575f80fd5b6114be8a828b016113b4565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f7274657252656769737472794170703a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061153357607f821691505b60208210810361155157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611567575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152836040820152608060608201525f61087060808301848661156e565b634e487b7160e01b5f52604160045260245ffd5b602081525f6113ac60208301848661156e565b5f602082840312156115fa575f80fd5b815167ffffffffffffffff80821115611611575f80fd5b818401915084601f830112611624575f80fd5b815181811115611636576116366115c3565b604051601f8201601f19908116603f0116810190838211818310171561165e5761165e6115c3565b81604052828152876020848701011115611676575f80fd5b61087083602083016020880161133c565b601f82111561115d57805f5260205f20601f840160051c810160208510156116ac5750805b601f840160051c820191505b818110156116cb575f81556001016116b8565b5050505050565b815167ffffffffffffffff8111156116ec576116ec6115c3565b611700816116fa845461151f565b84611687565b602080601f831160018114611733575f841561171c5750858301515b5f19600386901b1c1916600185901b17855561178a565b5f85815260208120601f198616915b8281101561176157888601518255948401946001909101908401611742565b508582101561177e57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f61042e602083018461135e565b5f815180845260208085019450602084015f5b838110156117dc5781516001600160a01b0316875295820195908201906001016117b7565b509495945050505050565b60208152815160208201525f602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526118476101008401826117a4565b905060a0840151601f198483030160e08501526111fa828261135e565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a1576108a1611864565b5f6020828403121561189b575f80fd5b815161042e816112f6565b808201808211156108a1576108a1611864565b5f602082840312156118c9575f80fd5b8151801515811461042e575f80fd5b5f82516118e981846020870161133c565b919091019291505056fede77a4dc7391f6f8f2d9567915d687d3aee79e7a1fc7300392f2727e9a0f1d00a2646970667358221220060b7f0a4b3fb4975af33a74e6ba8e469ed81d82250ae21218bcf5d835332b6564736f6c6343000819003354656c65706f7274657252656769737472794170703a20696e76616c69642054", } // TestMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 55b5bc5dd..5d4c0753d 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -103,7 +103,7 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615b6c380380615b6c83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615a1f8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c806380dd672f11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b806380dd672f1461037f5780638280a25a1461039257806393e245981461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360ad77841161016557806360ad77841461032c578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee57806360305d621461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f3660046149a8565b6104b3565b005b6102146102243660046149e3565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b6102146102563660046149a8565b61076f565b6102146102693660046149fa565b61077a565b61021461027c366004614a48565b610cff565b61029461028f3660046149e3565b610d73565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d63660046149a8565b610dcd565b6102146102e9366004614a69565b610dd8565b6103016102fc366004614aa7565b610e99565b60405190815260200161023f565b610317601481565b60405163ffffffff909116815260200161023f565b61021461033a366004614a48565b610ece565b61030161034d366004614b0e565b6111a6565b6102946103603660046149e3565b6111dd565b6103015f81565b61021461037a3660046149a8565b6111f1565b61021461038d366004614a48565b61121c565b610231603081565b6102146103a83660046149e3565b611461565b6103016103bb366004614b29565b61152c565b6102146103ce366004614a69565b611558565b6103015f8051602061594a83398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b3660046149e3565b61174d565b6103015f8051602061596a83398151915281565b6102146104423660046149e3565b6119b8565b610231601481565b61046261045d3660046149e3565b611af5565b60405161023f9190614bbe565b6102946202a30081565b6103015f8051602061592a83398151915281565b61021461049b366004614c52565b611c44565b6103016104ae366004614c90565b611d23565b6104be838383611d7e565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206159ca8339815191526020526040808220815160e0810190925280545f8051602061596a83398151915293929190829060ff16600581111561053557610535614b49565b600581111561054657610546614b49565b815260200160018201805461055a90614cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614cfb565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614b49565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190614e3c565b6040518263ffffffff1660e01b81526004016107299190614e6d565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107699190614e7f565b50505050565b610769838383611d7e565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061596a8339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108339190614e7f565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d6060850160408601614e96565b6001600160a01b0316146108b05761088b6060840160408501614e96565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be6060850185614eb1565b905090505f805b828163ffffffff161015610b25575f6108e16060880188614eb1565b8363ffffffff168181106108f7576108f7614ef6565b90506020028101906109099190614f0a565b61091290614f75565b80516040519192505f91600888019161092a91614ff0565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da9190600401614e6d565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391614ff0565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e19190614e7f565b90508086600801835f01516040516109f99190614ff0565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610a399082615045565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610ab89085615114565b8251604051919550610ac991614ff0565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b1e90615127565b90506108c5565b50600483018190556001830154606490610b4990600160401b900460ff1683615149565b1015610b6b57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610b8f876120d6565b604001516040518263ffffffff1660e01b8152600401610baf9190614e6d565b602060405180830381865af4158015610bca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bee9190614e7f565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610c28919061528b565b5f60405180830381865af4158015610c42573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c699190810190614e3c565b90505f600282604051610c7c9190614ff0565b602060405180830381855afa158015610c97573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cba9190614e7f565b9050828114610ce65760405163baaea89d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d08826121ec565b610d28576040516330efa98b60e01b8152600481018390526024016104da565b5f610d3283611af5565b5190506002816005811115610d4957610d49614b49565b14610d69578060405163170cc93360e21b81526004016104da9190614d33565b6107698383612227565b5f805f8051602061594a83398151915260030154610d919084615316565b9050801580610da657506001600160401b0381115b15610dc75760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361250d565b610de06126f9565b5f8051602061594a8339815191525f80610df984612730565b91509150610e06826121ec565b610e1257505050610e80565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610e4057610e40614b49565b03610e65575f83815260088501602052604081208054919055610e638282612ae3565b505b610e7b81610e7684604001516111a6565b612b59565b505050505b610e9660015f805160206159aa83398151915255565b50565b5f610ea26126f9565b610eae85858585612b8f565b9050610ec660015f805160206159aa83398151915255565b949350505050565b5f8281525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff166003811115610f1b57610f1b614b49565b6003811115610f2c57610f2c614b49565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610fa282611af5565b9050600183516003811115610fb957610fb9614b49565b14610fda578251604051633b0d540d60e21b81526104da9190600401615335565b600481516005811115610fef57610fef614b49565b0361100557610ffd86612d15565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61102a896120d6565b604001516040518263ffffffff1660e01b815260040161104a9190614e6d565b606060405180830381865af4158015611065573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611089919061534f565b50915091508184146110b657846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806110ef5750806001600160401b03168560a001516001600160401b0316115b1561111857604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610dc7906001600160401b038416615149565b5f6111e782611af5565b6080015192915050565b6111fc83838361250d565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b6112246126f9565b5f8281525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff16600381111561127157611271614b49565b600381111561128257611282614b49565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156112fb576112fb614b49565b1461131c578051604051633b0d540d60e21b81526104da9190600401615335565b600461132b8260400151611af5565b51600581111561133d5761133d614b49565b1461143c575f61134c846120d6565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161138b9190614e6d565b606060405180830381865af41580156113a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca919061534f565b5091509150818460400151146113f65760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561143857604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61144584612d15565b505061145d60015f805160206159aa83398151915255565b5050565b5f8051602061594a8339815191525f61147983611af5565b519050600481600581111561149057611490614b49565b146114b0578060405163170cc93360e21b81526004016104da9190614d33565b5f8381526005830160205260409020546001600160a01b031633146114f657335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612ae3565b5f6115356126f9565b611540833384612f69565b9050610dc760015f805160206159aa83398151915255565b5f8051602061596a8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61158b866120d6565b604001516040518263ffffffff1660e01b81526004016115ab9190614e6d565b6040805180830381865af41580156115c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e9919061538f565b915091508061160f57604051632d07135360e01b815281151560048201526024016104da565b5f8281526006840160205260409020805461162990614cfb565b90505f0361164d5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff16600581111561167357611673614b49565b146116a6575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b5f82815260068401602052604081206116be916148f7565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff16600381111561179a5761179a614b49565b60038111156117ab576117ab614b49565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561182457611824614b49565b14158015611845575060038151600381111561184257611842614b49565b14155b15611866578051604051633b0d540d60e21b81526104da9190600401615335565b5f6118748260400151611af5565b905080606001516001600160401b03165f036118a6576040516339b894f960e21b8152600481018590526024016104da565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f9361191493906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af415801561192e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119559190810190614e3c565b6040518263ffffffff1660e01b81526004016119719190614e6d565b6020604051808303815f875af115801561198d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b19190614e7f565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f8051602061596a83398151915291906119ff90614cfb565b90505f03611a235760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611a4957611a49614b49565b14611a7c575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611ab591906004016153b2565b6020604051808303815f875af1158015611ad1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e39190614e7f565b611afd61492e565b5f8281525f805160206159ca833981519152602052604090819020815160e0810190925280545f8051602061596a833981519152929190829060ff166005811115611b4a57611b4a614b49565b6005811115611b5b57611b5b614b49565b8152602001600182018054611b6f90614cfb565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9b90614cfb565b8015611be65780601f10611bbd57610100808354040283529160200191611be6565b820191905f5260205f20905b815481529060010190602001808311611bc957829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611c8d575080546001600160401b03808416911610155b15611cab5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611cd684846131af565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f8051602061596a833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611d66908690869061543c565b90815260200160405180910390205491505092915050565b5f8381525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a8339815191529284929091829060ff166003811115611dcc57611dcc614b49565b6003811115611ddd57611ddd614b49565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611e5382611af5565b9050600283516003811115611e6a57611e6a614b49565b14611e8b578251604051633b0d540d60e21b81526104da9190600401615335565b60208301516001600160a01b03163314611f27575f8281526005850160205260409020546001600160a01b03163314611ec457336114d1565b5f82815260058501602052604090205460a0820151611ef391600160b01b90046001600160401b03169061544b565b6001600160401b0316421015611f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611f3c57611f3c614b49565b0361206a5760028401546080840151611f5e916001600160401b03169061544b565b6001600160401b0316421015611f925760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b8615611fa457611fa28287612227565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611fdd918491611fd8919061546b565b6131c9565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561201e846133a0565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506120cf9350505050565b60048151600581111561207f5761207f614b49565b036120b35761208d836133a0565b5f8981526007860160205260409020556120a688612d15565b60019450505050506120cf565b805160405163170cc93360e21b81526104da9190600401614d33565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561213a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612161919081019061548b565b915091508061218357604051636b2f19e960e01b815260040160405180910390fd5b8151156121a9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b0316156121e5576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612272573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612299919081019061548b565b91509150806122bb57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123229190614e7f565b825114612348578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612384576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b81526004016123c19190614e6d565b6040805180830381865af41580156123db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ff919061551b565b915091508187146124265760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f8051602061594a833981519152906001600160401b0390811690831611156124e3575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612502565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f8051602061594a833981519152816125268661353d565b9050612531866121ec565b612540576001925050506120cf565b5f8681526005830160205260409020546001600160a01b0316331461256557336114d1565b5f86815260058301602052604090205460a082015161259491600160b01b90046001600160401b03169061544b565b6001600160401b03168160c001516001600160401b031610156125db5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156125f3576125ec8786612227565b9050612611565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612636906111a6565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561269f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c39190614e7f565b905080846008015f8a81526020019081526020015f205f8282546126e79190615114565b90915550501515979650505050505050565b5f805160206159aa83398151915280546001190161272a57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f61273961492e565b5f8051602061596a8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61276c886120d6565b604001516040518263ffffffff1660e01b815260040161278c9190614e6d565b6040805180830381865af41580156127a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ca919061538f565b9150915080156127f157604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561282257612822614b49565b600581111561283357612833614b49565b815260200160018201805461284790614cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461287390614cfb565b80156128be5780601f10612895576101008083540402835291602001916128be565b820191905f5260205f20905b8154815290600101906020018083116128a157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561292957612929614b49565b1415801561294a575060018151600581111561294757612947614b49565b14155b1561296b57805160405163170cc93360e21b81526104da9190600401614d33565b60038151600581111561298057612980614b49565b0361298e5760048152612993565b600581525b8360080181602001516040516129a99190614ff0565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156129ed576129ed614b49565b021790555060208201516001820190612a069082615045565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612aac57612aac614b49565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f8051602061592a83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612b3e575f80fd5b505af1158015612b50573d5f803e3d5ffd5b50505050505050565b5f8051602061592a8339815191525461145d906001600160a01b03168383613821565b60015f805160206159aa83398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f8051602061594a83398151915290600160401b900461ffff9081169086161080612be3575061271061ffff8616115b15612c0757604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612c43576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612c555750806001015483115b15612c765760405163222d164360e21b8152600481018490526024016104da565b5f612c8084613880565b90505f612c8c82610d73565b90505f612c9989836138a3565b5f818152600595909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f8181525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff166003811115612d6257612d62614b49565b6003811115612d7357612d73614b49565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e107fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e1f919061544b565b6001600160401b0316421015612e535760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f0e575f84815260058701602052604090205461271090612ec090600160a01b900461ffff1685615149565b612eca9190615316565b915081866008015f8681526020019081526020015f205f828254612eee9190615114565b90915550612efe9050828461553e565b9050612f0e856020015182612ae3565b612f238560200151610e7687606001516111a6565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f8051602061594a83398151915281612f8561028f85613880565b90505f612f9187611af5565b9050612f9c876121ec565b612fbc576040516330efa98b60e01b8152600481018890526024016104da565b600281516005811115612fd157612fd1614b49565b14612ff257805160405163170cc93360e21b81526104da9190600401614d33565b5f828260800151613003919061544b565b905083600201600a9054906101000a90046001600160401b0316826040015161302c9190615551565b6001600160401b0316816001600160401b0316111561306957604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806130758a846131c9565b915091505f8a836040516020016130a392919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260068b019093529120805491925060019160ff1916828002179055505f8181526006880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b6131b7613dc8565b6131c082613e13565b61145d81613e87565b5f8281525f805160206159ca833981519152602052604081206002015481905f8051602061596a83398151915290600160801b90046001600160401b03166132118582613eef565b5f61321b87614112565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156132c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526132eb9190810190614e3c565b6040518263ffffffff1660e01b81526004016133079190614e6d565b6020604051808303815f875af1158015613323573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133479190614e7f565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f8051602061594a83398151915290505f6133c08460400151611af5565b90505f6003825160058111156133d8576133d8614b49565b14806133f657506004825160058111156133f4576133f4614b49565b145b15613406575060c0810151613443565b60028251600581111561341b5761341b614b49565b03613427575042613443565b815160405163170cc93360e21b81526104da9190600401614d33565b84608001516001600160401b0316816001600160401b03161161346a57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061348f906111a6565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613510573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135349190614e7f565b95945050505050565b61354561492e565b5f8281525f805160206159ca8339815191526020526040808220815160e0810190925280545f8051602061596a83398151915293929190829060ff16600581111561359257613592614b49565b60058111156135a3576135a3614b49565b81526020016001820180546135b790614cfb565b80601f01602080910402602001604051908101604052809291908181526020018280546135e390614cfb565b801561362e5780601f106136055761010080835404028352916020019161362e565b820191905f5260205f20905b81548152906001019060200180831161361157829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561369c5761369c614b49565b146136cf575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561371357613713614b49565b02179055506020820151600182019061372c9082615045565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6137ca85826131c9565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614187565b5f610dc7825f8051602061592a833981519152546001600160a01b0316906141e8565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff166138e757604051637fab81e560e01b815260040160405180910390fd5b5f8051602061596a833981519152426139066060860160408701614b0e565b6001600160401b031611158061394057506139246202a30042615114565b6139346060860160408701614b0e565b6001600160401b031610155b1561397a576139556060850160408601614b0e565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b61398f61398a606086018661557c565b6141f4565b61399f61398a608086018661557c565b60306139ae6020860186615590565b9050146139e0576139c26020850185615590565b6040516326475b2f60e11b81526104da925060040190815260200190565b6139ea8480615590565b90505f03613a17576139fc8480615590565b604051633e08a12560e11b81526004016104da9291906155d2565b5f60088201613a268680615590565b604051613a3492919061543c565b90815260200160405180910390205414613a6d57613a528480615590565b60405163a41f772f60e01b81526004016104da9291906155d2565b613a77835f613eef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613ab48a80615590565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613afc908b018b615590565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613b4560608b0160408c01614b0e565b6001600160401b03168152602001613b6060608b018b61557c565b613b69906155e5565b8152602001613b7b60808b018b61557c565b613b84906155e5565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613bb29190615707565b5f60405180830381865af4158015613bcc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613bf391908101906157be565b5f82815260068601602052604090209193509150613c118282615045565b508160088401613c218880615590565b604051613c2f92919061543c565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613c6b908590600401614e6d565b6020604051808303815f875af1158015613c87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cab9190614e7f565b5f8481526007860160205260409020805460ff191660011790559050613cd18780615590565b5f858152600787016020526040902060010191613cef919083615801565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613d4e8880615590565b604051613d5c92919061543c565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613d9a9190614b0e565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613e1157604051631afcd79f60e31b815260040160405180910390fd5b565b613e1b613dc8565b613e248161435d565b613e2c614376565b610e9660608201356080830135613e4960c0850160a08601614b0e565b613e5960e0860160c087016158ba565b613e6a610100870160e088016158d3565b610100870135613e8261014089016101208a01614e96565b614386565b613e8f613dc8565b5f8051602061592a8339815191526001600160a01b038216613ecf57604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f8051602061596a8339815191525f6001600160401b038084169085161115613f2357613f1c838561546b565b9050613f30565b613f2d848461546b565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580613f92575060018401548151613f8e916001600160401b031690615114565b8210155b15613fb8576001600160401b038316606082015281815260408101516020820152613fd7565b8281606001818151613fca919061544b565b6001600160401b03169052505b6060810151613fe7906064615551565b602082015160018601546001600160401b0392909216916140129190600160401b900460ff16615149565b101561404257606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b03168160400181815161405d9190615114565b9052506040810180516001600160401b038716919061407d90839061553e565b905250600184015460408201516064916140a291600160401b90910460ff1690615149565b10156140c9578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206159ca8339815191526020526040812060020180545f8051602061596a833981519152919060089061415c90600160401b90046001600160401b03166158f3565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f61419b6001600160a01b03841683614542565b905080515f141580156141bf5750808060200190518101906141bd919061590e565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b5f6120cf83338461454f565b6142016020820182614a69565b63ffffffff16158015614221575061421c6020820182614eb1565b151590505b15614268576142336020820182614a69565b6142406020830183614eb1565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6142756020820182614eb1565b90506142846020830183614a69565b63ffffffff16111561429d576142336020820182614a69565b60015b6142ad6020830183614eb1565b905081101561145d576142c36020830183614eb1565b6142ce60018461553e565b8181106142dd576142dd614ef6565b90506020020160208101906142f29190614e96565b6001600160a01b03166143086020840184614eb1565b8381811061431857614318614ef6565b905060200201602081019061432d9190614e96565b6001600160a01b0316101561435557604051630dbc8d5f60e31b815260040160405180910390fd5b6001016142a0565b614365613dc8565b61436d6146b2565b610e96816146ba565b61437e613dc8565b613e116147a2565b61438e613dc8565b5f8051602061594a83398151915261ffff851615806143b2575061271061ffff8616115b156143d657604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156143fa5760405163222d164360e21b8152600481018990526024016104da565b60ff8416158061440d5750600a60ff8516115b156144305760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b03161015614497576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f036144b75760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b60606120cf83835f6147aa565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015614595573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145b99190614e7f565b90506145d06001600160a01b038616853086614839565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614614573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146389190614e7f565b905081811161469e5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b6146a8828261553e565b9695505050505050565b613e11613dc8565b6146c2613dc8565b80355f8051602061596a83398151915290815560146146e760608401604085016158d3565b60ff161180614706575061470160608301604084016158d3565b60ff16155b1561473a5761471b60608301604084016158d3565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b61474a60608301604084016158d3565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561477b6040830160208401614b0e565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612b7c613dc8565b6060814710156147cf5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b031684866040516147ea9190614ff0565b5f6040518083038185875af1925050503d805f8114614824576040519150601f19603f3d011682016040523d82523d5f602084013e614829565b606091505b50915091506146a8868383614872565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd9060840161384e565b60608261488757614882826148ce565b6120cf565b815115801561489e57506001600160a01b0384163b155b156148c757604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b50806120cf565b8051156148de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461490390614cfb565b5f825580601f10614912575050565b601f0160209004905f5260205f2090810190610e96919061496b565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561497f575f815560010161496c565b5090565b8015158114610e96575f80fd5b803563ffffffff811681146149a3575f80fd5b919050565b5f805f606084860312156149ba575f80fd5b8335925060208401356149cc81614983565b91506149da60408501614990565b90509250925092565b5f602082840312156149f3575f80fd5b5035919050565b5f8060408385031215614a0b575f80fd5b82356001600160401b03811115614a20575f80fd5b830160808186031215614a31575f80fd5b9150614a3f60208401614990565b90509250929050565b5f8060408385031215614a59575f80fd5b82359150614a3f60208401614990565b5f60208284031215614a79575f80fd5b6120cf82614990565b803561ffff811681146149a3575f80fd5b6001600160401b0381168114610e96575f80fd5b5f805f8060808587031215614aba575f80fd5b84356001600160401b03811115614acf575f80fd5b850160a08188031215614ae0575f80fd5b9350614aee60208601614a82565b92506040850135614afe81614a93565b9396929550929360600135925050565b5f60208284031215614b1e575f80fd5b81356120cf81614a93565b5f8060408385031215614b3a575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614b6d57614b6d614b49565b9052565b5f5b83811015614b8b578181015183820152602001614b73565b50505f910152565b5f8151808452614baa816020860160208601614b71565b601f01601f19169290920160200192915050565b60208152614bd0602082018351614b5d565b5f602083015160e06040840152614beb610100840182614b93565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610e96575f80fd5b5f80828403610160811215614c65575f80fd5b61014080821215614c74575f80fd5b8493508301359050614c8581614c3e565b809150509250929050565b5f8060208385031215614ca1575f80fd5b82356001600160401b0380821115614cb7575f80fd5b818501915085601f830112614cca575f80fd5b813581811115614cd8575f80fd5b866020828501011115614ce9575f80fd5b60209290920196919550909350505050565b600181811c90821680614d0f57607f821691505b602082108103614d2d57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610dc78284614b5d565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614d7757614d77614d41565b60405290565b604080519081016001600160401b0381118282101715614d7757614d77614d41565b604051601f8201601f191681016001600160401b0381118282101715614dc757614dc7614d41565b604052919050565b5f6001600160401b03821115614de757614de7614d41565b50601f01601f191660200190565b5f82601f830112614e04575f80fd5b8151614e17614e1282614dcf565b614d9f565b818152846020838601011115614e2b575f80fd5b610ec6826020830160208701614b71565b5f60208284031215614e4c575f80fd5b81516001600160401b03811115614e61575f80fd5b610ec684828501614df5565b602081525f6120cf6020830184614b93565b5f60208284031215614e8f575f80fd5b5051919050565b5f60208284031215614ea6575f80fd5b81356120cf81614c3e565b5f808335601e19843603018112614ec6575f80fd5b8301803591506001600160401b03821115614edf575f80fd5b6020019150600581901b3603821315613399575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614f1e575f80fd5b9190910192915050565b5f82601f830112614f37575f80fd5b8135614f45614e1282614dcf565b818152846020838601011115614f59575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f85575f80fd5b614f8d614d55565b82356001600160401b0380821115614fa3575f80fd5b614faf36838701614f28565b83526020850135915080821115614fc4575f80fd5b50614fd136828601614f28565b6020830152506040830135614fe581614a93565b604082015292915050565b5f8251614f1e818460208701614b71565b601f8211156104e357805f5260205f20601f840160051c810160208510156150265750805b601f840160051c820191505b818110156119b1575f8155600101615032565b81516001600160401b0381111561505e5761505e614d41565b6150728161506c8454614cfb565b84615001565b602080601f8311600181146150a5575f841561508e5750858301515b5f19600386901b1c1916600185901b178555610ffd565b5f85815260208120601f198616915b828110156150d3578886015182559484019460019091019084016150b4565b50858210156150f057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610dc757610dc7615100565b5f63ffffffff80831681810361513f5761513f615100565b6001019392505050565b8082028115828204841417610dc757610dc7615100565b5f808335601e19843603018112615175575f80fd5b83016020810192503590506001600160401b03811115615193575f80fd5b803603821315613399575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561527e57848303601f19018952813536889003605e19018112615205575f80fd5b870160606152138280615160565b82875261522383880182846151a1565b9250505061523386830183615160565b868303888801526152458382846151a1565b92505050604080830135925061525a83614a93565b6001600160401b0392909216949091019390935297830197908301906001016151e0565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356152af81614c3e565b6001600160a01b031660608381019190915283013536849003601e190181126152d6575f80fd5b83016020810190356001600160401b038111156152f1575f80fd5b8060051b3603821315615302575f80fd5b60808085015261353460a0850182846151c9565b5f8261533057634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061534957615349614b49565b91905290565b5f805f60608486031215615361575f80fd5b83519250602084015161537381614a93565b604085015190925061538481614a93565b809150509250925092565b5f80604083850312156153a0575f80fd5b825191506020830151614c8581614983565b5f60208083525f84546153c481614cfb565b806020870152604060018084165f81146153e557600181146154015761542e565b60ff19851660408a0152604084151560051b8a0101955061542e565b895f5260205f205f5b858110156154255781548b820186015290830190880161540a565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156121e5576121e5615100565b6001600160401b038281168282160390808211156121e5576121e5615100565b5f806040838503121561549c575f80fd5b82516001600160401b03808211156154b2575f80fd5b90840190606082870312156154c5575f80fd5b6154cd614d55565b8251815260208301516154df81614c3e565b60208201526040830151828111156154f5575f80fd5b61550188828601614df5565b6040830152508094505050506020830151614c8581614983565b5f806040838503121561552c575f80fd5b825191506020830151614c8581614a93565b81810381811115610dc757610dc7615100565b6001600160401b0381811683821602808216919082811461557457615574615100565b505092915050565b5f8235603e19833603018112614f1e575f80fd5b5f808335601e198436030181126155a5575f80fd5b8301803591506001600160401b038211156155be575f80fd5b602001915036819003821315613399575f80fd5b602081525f610ec66020830184866151a1565b5f604082360312156155f5575f80fd5b6155fd614d7d565b61560683614990565b81526020808401356001600160401b0380821115615622575f80fd5b9085019036601f830112615634575f80fd5b81358181111561564657615646614d41565b8060051b9150615657848301614d9f565b8181529183018401918481019036841115615670575f80fd5b938501935b8385101561569a578435925061568a83614c3e565b8282529385019390850190615675565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125025784516001600160a01b031682529383019360019290920191908301906156de565b60208152815160208201525f602083015160e0604084015261572d610100840182614b93565b90506040840151601f198085840301606086015261574b8383614b93565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261577b83836156ac565b925060a08601519150808584030160c08601525061579982826156ac565b91505060c08401516157b660e08501826001600160401b03169052565b509392505050565b5f80604083850312156157cf575f80fd5b8251915060208301516001600160401b038111156157eb575f80fd5b6157f785828601614df5565b9150509250929050565b6001600160401b0383111561581857615818614d41565b61582c836158268354614cfb565b83615001565b5f601f84116001811461585d575f85156158465750838201355b5f19600387901b1c1916600186901b1783556119b1565b5f83815260208120601f198716915b8281101561588c578685013582556020948501946001909201910161586c565b50868210156158a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f602082840312156158ca575f80fd5b6120cf82614a82565b5f602082840312156158e3575f80fd5b813560ff811681146120cf575f80fd5b5f6001600160401b0380831681810361513f5761513f615100565b5f6020828403121561591e575f80fd5b81516120cf8161498356fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220e29af7a12c645ab54d4e703e2f1106d8b2d0e883ab2150426ce670e9a5a328f664736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051615b6c380380615b6c83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615a1f8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101fd575f3560e01c806380dd672f11610114578063ba3a4b97116100a9578063d5f20ff611610079578063d5f20ff61461044f578063df93d8de1461046f578063e4a63c4014610479578063f74c607b1461048d578063fd7ac5e7146104a0575f80fd5b8063ba3a4b971461040d578063bc5fbfec14610420578063bee0a03f14610434578063c974d1b614610447575f80fd5b8063a3a65e48116100e4578063a3a65e48146103c0578063a9778a7a146102ac578063afb98096146103d3578063b771b3bc146103e7575f80fd5b806380dd672f1461037f5780638280a25a1461039257806393e245981461039a5780639e1bc4ef146103ad575f80fd5b80633a1cfff61161019557806360ad77841161016557806360ad77841461032c578063620658561461033f57806366435abf14610352578063732214f81461036557806376f786211461036c575f80fd5b80633a1cfff6146102c8578063467ef06f146102db5780634bee0040146102ee57806360305d621461030f575f80fd5b806320d91b7a116101d057806320d91b7a1461025b57806325e1c7761461026e5780632e2194d81461028157806335455ded146102ac575f80fd5b80630118acc4146102015780630322ed9814610216578063151d30d1146102295780631ec4472414610248575b5f80fd5b61021461020f3660046149a8565b6104b3565b005b6102146102243660046149e3565b6104e8565b610231600a81565b60405160ff90911681526020015b60405180910390f35b6102146102563660046149a8565b61076f565b6102146102693660046149fa565b61077a565b61021461027c366004614a48565b610cff565b61029461028f3660046149e3565b610d73565b6040516001600160401b03909116815260200161023f565b6102b561271081565b60405161ffff909116815260200161023f565b6102146102d63660046149a8565b610dcd565b6102146102e9366004614a69565b610dd8565b6103016102fc366004614aa7565b610e99565b60405190815260200161023f565b610317601481565b60405163ffffffff909116815260200161023f565b61021461033a366004614a48565b610ece565b61030161034d366004614b0e565b6111a6565b6102946103603660046149e3565b6111dd565b6103015f81565b61021461037a3660046149a8565b6111f1565b61021461038d366004614a48565b61121c565b610231603081565b6102146103a83660046149e3565b611461565b6103016103bb366004614b29565b61152c565b6102146103ce366004614a69565b611558565b6103015f8051602061594a83398151915281565b6103f56005600160991b0181565b6040516001600160a01b03909116815260200161023f565b61021461041b3660046149e3565b61174d565b6103015f8051602061596a83398151915281565b6102146104423660046149e3565b6119b8565b610231601481565b61046261045d3660046149e3565b611af5565b60405161023f9190614bbe565b6102946202a30081565b6103015f8051602061592a83398151915281565b61021461049b366004614c52565b611c44565b6103016104ae366004614c90565b611d23565b6104be838383611d7e565b6104e357604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206159ca8339815191526020526040808220815160e0810190925280545f8051602061596a83398151915293929190829060ff16600581111561053557610535614b49565b600581111561054657610546614b49565b815260200160018201805461055a90614cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058690614cfb565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561063c5761063c614b49565b1461066f575f8381526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156106e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070d9190810190614e3c565b6040518263ffffffff1660e01b81526004016107299190614e6d565b6020604051808303815f875af1158015610745573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107699190614e7f565b50505050565b610769838383611d7e565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061596a8339815191529060ff16156107cc57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108339190614e7f565b83602001351461085c576040516372b0a7e760e11b8152602084013560048201526024016104da565b3061086d6060850160408601614e96565b6001600160a01b0316146108b05761088b6060840160408501614e96565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104da565b5f6108be6060850185614eb1565b905090505f805b828163ffffffff161015610b25575f6108e16060880188614eb1565b8363ffffffff168181106108f7576108f7614ef6565b90506020028101906109099190614f0a565b61091290614f75565b80516040519192505f91600888019161092a91614ff0565b9081526020016040518091039020541461095a57805160405163a41f772f60e01b81526104da9190600401614e6d565b5f6002885f01358460405160200161098992919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526109a391614ff0565b602060405180830381855afa1580156109be573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906109e19190614e7f565b90508086600801835f01516040516109f99190614ff0565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610a399082615045565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610ab89085615114565b8251604051919550610ac991614ff0565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610b1e90615127565b90506108c5565b50600483018190556001830154606490610b4990600160401b900460ff1683615149565b1015610b6b57604051635943317f60e01b8152600481018290526024016104da565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610b8f876120d6565b604001516040518263ffffffff1660e01b8152600401610baf9190614e6d565b602060405180830381865af4158015610bca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bee9190614e7f565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610c28919061528b565b5f60405180830381865af4158015610c42573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c699190810190614e3c565b90505f600282604051610c7c9190614ff0565b602060405180830381855afa158015610c97573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cba9190614e7f565b9050828114610ce65760405163baaea89d60e01b815260048101829052602481018490526044016104da565b5050506009909201805460ff1916600117905550505050565b610d08826121ec565b610d28576040516330efa98b60e01b8152600481018390526024016104da565b5f610d3283611af5565b5190506002816005811115610d4957610d49614b49565b14610d69578060405163170cc93360e21b81526004016104da9190614d33565b6107698383612227565b5f805f8051602061594a83398151915260030154610d919084615316565b9050801580610da657506001600160401b0381115b15610dc75760405163222d164360e21b8152600481018490526024016104da565b92915050565b61076983838361250d565b610de06126f9565b5f8051602061594a8339815191525f80610df984612730565b91509150610e06826121ec565b610e1257505050610e80565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610e4057610e40614b49565b03610e65575f83815260088501602052604081208054919055610e638282612ae3565b505b610e7b81610e7684604001516111a6565b612b59565b505050505b610e9660015f805160206159aa83398151915255565b50565b5f610ea26126f9565b610eae85858585612b8f565b9050610ec660015f805160206159aa83398151915255565b949350505050565b5f8281525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff166003811115610f1b57610f1b614b49565b6003811115610f2c57610f2c614b49565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610fa282611af5565b9050600183516003811115610fb957610fb9614b49565b14610fda578251604051633b0d540d60e21b81526104da9190600401615335565b600481516005811115610fef57610fef614b49565b0361100557610ffd86612d15565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61102a896120d6565b604001516040518263ffffffff1660e01b815260040161104a9190614e6d565b606060405180830381865af4158015611065573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611089919061534f565b50915091508184146110b657846040015160405163089938b360e11b81526004016104da91815260200190565b806001600160401b031683606001516001600160401b031610806110ef5750806001600160401b03168560a001516001600160401b0316115b1561111857604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610dc7906001600160401b038416615149565b5f6111e782611af5565b6080015192915050565b6111fc83838361250d565b6104e357604051635bff683f60e11b8152600481018490526024016104da565b6112246126f9565b5f8281525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff16600381111561127157611271614b49565b600381111561128257611282614b49565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156112fb576112fb614b49565b1461131c578051604051633b0d540d60e21b81526104da9190600401615335565b600461132b8260400151611af5565b51600581111561133d5761133d614b49565b1461143c575f61134c846120d6565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161138b9190614e6d565b606060405180830381865af41580156113a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca919061534f565b5091509150818460400151146113f65760405163089938b360e11b8152600481018390526024016104da565b806001600160401b03168460c001516001600160401b0316111561143857604051632e19bc2d60e11b81526001600160401b03821660048201526024016104da565b5050505b61144584612d15565b505061145d60015f805160206159aa83398151915255565b5050565b5f8051602061594a8339815191525f61147983611af5565b519050600481600581111561149057611490614b49565b146114b0578060405163170cc93360e21b81526004016104da9190614d33565b5f8381526005830160205260409020546001600160a01b031633146114f657335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104da565b5f83815260088301602090815260408083208054908490556005860190925290912054610769906001600160a01b031682612ae3565b5f6115356126f9565b611540833384612f69565b9050610dc760015f805160206159aa83398151915255565b5f8051602061596a8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61158b866120d6565b604001516040518263ffffffff1660e01b81526004016115ab9190614e6d565b6040805180830381865af41580156115c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e9919061538f565b915091508061160f57604051632d07135360e01b815281151560048201526024016104da565b5f8281526006840160205260409020805461162990614cfb565b90505f0361164d5760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078501602052604090205460ff16600581111561167357611673614b49565b146116a6575f8281526007840160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b5f82815260068401602052604081206116be916148f7565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff16600381111561179a5761179a614b49565b60038111156117ab576117ab614b49565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561182457611824614b49565b14158015611845575060038151600381111561184257611842614b49565b14155b15611866578051604051633b0d540d60e21b81526104da9190600401615335565b5f6118748260400151611af5565b905080606001516001600160401b03165f036118a6576040516339b894f960e21b8152600481018590526024016104da565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f9361191493906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af415801561192e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119559190810190614e3c565b6040518263ffffffff1660e01b81526004016119719190614e6d565b6020604051808303815f875af115801561198d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b19190614e7f565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f8051602061596a83398151915291906119ff90614cfb565b90505f03611a235760405163089938b360e11b8152600481018390526024016104da565b60015f83815260078301602052604090205460ff166005811115611a4957611a49614b49565b14611a7c575f8281526007820160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611ab591906004016153b2565b6020604051808303815f875af1158015611ad1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e39190614e7f565b611afd61492e565b5f8281525f805160206159ca833981519152602052604090819020815160e0810190925280545f8051602061596a833981519152929190829060ff166005811115611b4a57611b4a614b49565b6005811115611b5b57611b5b614b49565b8152602001600182018054611b6f90614cfb565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9b90614cfb565b8015611be65780601f10611bbd57610100808354040283529160200191611be6565b820191905f5260205f20905b815481529060010190602001808311611bc957829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611c8d575080546001600160401b03808416911610155b15611cab5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611cd684846131af565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040515f905f8051602061596a833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611d66908690869061543c565b90815260200160405180910390205491505092915050565b5f8381525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a8339815191529284929091829060ff166003811115611dcc57611dcc614b49565b6003811115611ddd57611ddd614b49565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611e5382611af5565b9050600283516003811115611e6a57611e6a614b49565b14611e8b578251604051633b0d540d60e21b81526104da9190600401615335565b60208301516001600160a01b03163314611f27575f8281526005850160205260409020546001600160a01b03163314611ec457336114d1565b5f82815260058501602052604090205460a0820151611ef391600160b01b90046001600160401b03169061544b565b6001600160401b0316421015611f275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b600281516005811115611f3c57611f3c614b49565b0361206a5760028401546080840151611f5e916001600160401b03169061544b565b6001600160401b0316421015611f925760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b8615611fa457611fa28287612227565b505b5f8881526006850160205260409020805460ff1916600317905560608301516080820151611fdd918491611fd8919061546b565b6131c9565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561201e846133a0565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a3151594506120cf9350505050565b60048151600581111561207f5761207f614b49565b036120b35761208d836133a0565b5f8981526007860160205260409020556120a688612d15565b60019450505050506120cf565b805160405163170cc93360e21b81526104da9190600401614d33565b9392505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561213a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612161919081019061548b565b915091508061218357604051636b2f19e960e01b815260040160405180910390fd5b8151156121a9578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b0316156121e5576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612272573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612299919081019061548b565b91509150806122bb57604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123229190614e7f565b825114612348578151604051636ba589a560e01b815260048101919091526024016104da565b60208201516001600160a01b031615612384576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104da565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b81526004016123c19190614e6d565b6040805180830381865af41580156123db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ff919061551b565b915091508187146124265760405163089938b360e11b8152600481018890526024016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f8051602061594a833981519152906001600160401b0390811690831611156124e3575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612502565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f8051602061594a833981519152816125268661353d565b9050612531866121ec565b612540576001925050506120cf565b5f8681526005830160205260409020546001600160a01b0316331461256557336114d1565b5f86815260058301602052604090205460a082015161259491600160b01b90046001600160401b03169061544b565b6001600160401b03168160c001516001600160401b031610156125db5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104da565b5f85156125f3576125ec8786612227565b9050612611565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612636906111a6565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561269f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c39190614e7f565b905080846008015f8a81526020019081526020015f205f8282546126e79190615114565b90915550501515979650505050505050565b5f805160206159aa83398151915280546001190161272a57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f61273961492e565b5f8051602061596a8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61276c886120d6565b604001516040518263ffffffff1660e01b815260040161278c9190614e6d565b6040805180830381865af41580156127a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ca919061538f565b9150915080156127f157604051632d07135360e01b815281151560048201526024016104da565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561282257612822614b49565b600581111561283357612833614b49565b815260200160018201805461284790614cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461287390614cfb565b80156128be5780601f10612895576101008083540402835291602001916128be565b820191905f5260205f20905b8154815290600101906020018083116128a157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561292957612929614b49565b1415801561294a575060018151600581111561294757612947614b49565b14155b1561296b57805160405163170cc93360e21b81526104da9190600401614d33565b60038151600581111561298057612980614b49565b0361298e5760048152612993565b600581525b8360080181602001516040516129a99190614ff0565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156129ed576129ed614b49565b021790555060208201516001820190612a069082615045565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612aac57612aac614b49565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f5f8051602061592a83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612b3e575f80fd5b505af1158015612b50573d5f803e3d5ffd5b50505050505050565b5f8051602061592a8339815191525461145d906001600160a01b03168383613821565b60015f805160206159aa83398151915255565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f8051602061594a83398151915290600160401b900461ffff9081169086161080612be3575061271061ffff8616115b15612c0757604051635f12e6c360e11b815261ffff861660048201526024016104da565b60028101546001600160401b039081169085161015612c43576040516202a06d60e11b81526001600160401b03851660048201526024016104da565b8054831080612c555750806001015483115b15612c765760405163222d164360e21b8152600481018490526024016104da565b5f612c8084613880565b90505f612c8c82610d73565b90505f612c9989836138a3565b5f818152600595909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f8181525f8051602061598a8339815191526020526040808220815160e0810190925280545f8051602061594a83398151915293929190829060ff166003811115612d6257612d62614b49565b6003811115612d7357612d73614b49565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612e107fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612e1f919061544b565b6001600160401b0316421015612e535760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104da565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612f0e575f84815260058701602052604090205461271090612ec090600160a01b900461ffff1685615149565b612eca9190615316565b915081866008015f8681526020019081526020015f205f828254612eee9190615114565b90915550612efe9050828461553e565b9050612f0e856020015182612ae3565b612f238560200151610e7687606001516111a6565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f5f8051602061594a83398151915281612f8561028f85613880565b90505f612f9187611af5565b9050612f9c876121ec565b612fbc576040516330efa98b60e01b8152600481018890526024016104da565b600281516005811115612fd157612fd1614b49565b14612ff257805160405163170cc93360e21b81526104da9190600401614d33565b5f828260800151613003919061544b565b905083600201600a9054906101000a90046001600160401b0316826040015161302c9190615551565b6001600160401b0316816001600160401b0316111561306957604051636d51fe0560e11b81526001600160401b03821660048201526024016104da565b5f806130758a846131c9565b915091505f8a836040516020016130a392919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260068b019093529120805491925060019160ff1916828002179055505f8181526006880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b6131b7613dc8565b6131c082613e13565b61145d81613e87565b5f8281525f805160206159ca833981519152602052604081206002015481905f8051602061596a83398151915290600160801b90046001600160401b03166132118582613eef565b5f61321b87614112565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156132c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526132eb9190810190614e3c565b6040518263ffffffff1660e01b81526004016133079190614e6d565b6020604051808303815f875af1158015613323573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133479190614e7f565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f8051602061594a83398151915290505f6133c08460400151611af5565b90505f6003825160058111156133d8576133d8614b49565b14806133f657506004825160058111156133f4576133f4614b49565b145b15613406575060c0810151613443565b60028251600581111561341b5761341b614b49565b03613427575042613443565b815160405163170cc93360e21b81526104da9190600401614d33565b84608001516001600160401b0316816001600160401b03161161346a57505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f9061348f906111a6565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa158015613510573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135349190614e7f565b95945050505050565b61354561492e565b5f8281525f805160206159ca8339815191526020526040808220815160e0810190925280545f8051602061596a83398151915293929190829060ff16600581111561359257613592614b49565b60058111156135a3576135a3614b49565b81526020016001820180546135b790614cfb565b80601f01602080910402602001604051908101604052809291908181526020018280546135e390614cfb565b801561362e5780601f106136055761010080835404028352916020019161362e565b820191905f5260205f20905b81548152906001019060200180831161361157829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561369c5761369c614b49565b146136cf575f8481526007830160205260409081902054905163170cc93360e21b81526104da9160ff1690600401614d33565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561371357613713614b49565b02179055506020820151600182019061372c9082615045565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6137ca85826131c9565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516001600160a01b038381166024830152604482018390526104e391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614187565b5f610dc7825f8051602061592a833981519152546001600160a01b0316906141e8565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff166138e757604051637fab81e560e01b815260040160405180910390fd5b5f8051602061596a833981519152426139066060860160408701614b0e565b6001600160401b031611158061394057506139246202a30042615114565b6139346060860160408701614b0e565b6001600160401b031610155b1561397a576139556060850160408601614b0e565b604051635879da1360e11b81526001600160401b0390911660048201526024016104da565b61398f61398a606086018661557c565b6141f4565b61399f61398a608086018661557c565b60306139ae6020860186615590565b9050146139e0576139c26020850185615590565b6040516326475b2f60e11b81526104da925060040190815260200190565b6139ea8480615590565b90505f03613a17576139fc8480615590565b604051633e08a12560e11b81526004016104da9291906155d2565b5f60088201613a268680615590565b604051613a3492919061543c565b90815260200160405180910390205414613a6d57613a528480615590565b60405163a41f772f60e01b81526004016104da9291906155d2565b613a77835f613eef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613ab48a80615590565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613afc908b018b615590565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613b4560608b0160408c01614b0e565b6001600160401b03168152602001613b6060608b018b61557c565b613b69906155e5565b8152602001613b7b60808b018b61557c565b613b84906155e5565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613bb29190615707565b5f60405180830381865af4158015613bcc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613bf391908101906157be565b5f82815260068601602052604090209193509150613c118282615045565b508160088401613c218880615590565b604051613c2f92919061543c565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613c6b908590600401614e6d565b6020604051808303815f875af1158015613c87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cab9190614e7f565b5f8481526007860160205260409020805460ff191660011790559050613cd18780615590565b5f858152600787016020526040902060010191613cef919083615801565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613d4e8880615590565b604051613d5c92919061543c565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613d9a9190614b0e565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613e1157604051631afcd79f60e31b815260040160405180910390fd5b565b613e1b613dc8565b613e248161435d565b613e2c614376565b610e9660608201356080830135613e4960c0850160a08601614b0e565b613e5960e0860160c087016158ba565b613e6a610100870160e088016158d3565b610100870135613e8261014089016101208a01614e96565b614386565b613e8f613dc8565b5f8051602061592a8339815191526001600160a01b038216613ecf57604051637330680360e01b81526001600160a01b03831660048201526024016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f8051602061596a8339815191525f6001600160401b038084169085161115613f2357613f1c838561546b565b9050613f30565b613f2d848461546b565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580613f92575060018401548151613f8e916001600160401b031690615114565b8210155b15613fb8576001600160401b038316606082015281815260408101516020820152613fd7565b8281606001818151613fca919061544b565b6001600160401b03169052505b6060810151613fe7906064615551565b602082015160018601546001600160401b0392909216916140129190600160401b900460ff16615149565b101561404257606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104da565b856001600160401b03168160400181815161405d9190615114565b9052506040810180516001600160401b038716919061407d90839061553e565b905250600184015460408201516064916140a291600160401b90910460ff1690615149565b10156140c9578060400151604051635943317f60e01b81526004016104da91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206159ca8339815191526020526040812060020180545f8051602061596a833981519152919060089061415c90600160401b90046001600160401b03166158f3565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f61419b6001600160a01b03841683614542565b905080515f141580156141bf5750808060200190518101906141bd919061590e565b155b156104e357604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b5f6120cf83338461454f565b6142016020820182614a69565b63ffffffff16158015614221575061421c6020820182614eb1565b151590505b15614268576142336020820182614a69565b6142406020830183614eb1565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104da565b6142756020820182614eb1565b90506142846020830183614a69565b63ffffffff16111561429d576142336020820182614a69565b60015b6142ad6020830183614eb1565b905081101561145d576142c36020830183614eb1565b6142ce60018461553e565b8181106142dd576142dd614ef6565b90506020020160208101906142f29190614e96565b6001600160a01b03166143086020840184614eb1565b8381811061431857614318614ef6565b905060200201602081019061432d9190614e96565b6001600160a01b0316101561435557604051630dbc8d5f60e31b815260040160405180910390fd5b6001016142a0565b614365613dc8565b61436d6146b2565b610e96816146ba565b61437e613dc8565b613e116147a2565b61438e613dc8565b5f8051602061594a83398151915261ffff851615806143b2575061271061ffff8616115b156143d657604051635f12e6c360e11b815261ffff861660048201526024016104da565b868811156143fa5760405163222d164360e21b8152600481018990526024016104da565b60ff8416158061440d5750600a60ff8516115b156144305760405163170db35960e31b815260ff851660048201526024016104da565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b03161015614497576040516202a06d60e11b81526001600160401b03871660048201526024016104da565b825f036144b75760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b60606120cf83835f6147aa565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015614595573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145b99190614e7f565b90506145d06001600160a01b038616853086614839565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614614573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146389190614e7f565b905081811161469e5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b6146a8828261553e565b9695505050505050565b613e11613dc8565b6146c2613dc8565b80355f8051602061596a83398151915290815560146146e760608401604085016158d3565b60ff161180614706575061470160608301604084016158d3565b60ff16155b1561473a5761471b60608301604084016158d3565b604051634a59bbff60e11b815260ff90911660048201526024016104da565b61474a60608301604084016158d3565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561477b6040830160208401614b0e565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612b7c613dc8565b6060814710156147cf5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b031684866040516147ea9190614ff0565b5f6040518083038185875af1925050503d805f8114614824576040519150601f19603f3d011682016040523d82523d5f602084013e614829565b606091505b50915091506146a8868383614872565b6040516001600160a01b0384811660248301528381166044830152606482018390526107699186918216906323b872dd9060840161384e565b60608261488757614882826148ce565b6120cf565b815115801561489e57506001600160a01b0384163b155b156148c757604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b50806120cf565b8051156148de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461490390614cfb565b5f825580601f10614912575050565b601f0160209004905f5260205f2090810190610e96919061496b565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561497f575f815560010161496c565b5090565b8015158114610e96575f80fd5b803563ffffffff811681146149a3575f80fd5b919050565b5f805f606084860312156149ba575f80fd5b8335925060208401356149cc81614983565b91506149da60408501614990565b90509250925092565b5f602082840312156149f3575f80fd5b5035919050565b5f8060408385031215614a0b575f80fd5b82356001600160401b03811115614a20575f80fd5b830160808186031215614a31575f80fd5b9150614a3f60208401614990565b90509250929050565b5f8060408385031215614a59575f80fd5b82359150614a3f60208401614990565b5f60208284031215614a79575f80fd5b6120cf82614990565b803561ffff811681146149a3575f80fd5b6001600160401b0381168114610e96575f80fd5b5f805f8060808587031215614aba575f80fd5b84356001600160401b03811115614acf575f80fd5b850160a08188031215614ae0575f80fd5b9350614aee60208601614a82565b92506040850135614afe81614a93565b9396929550929360600135925050565b5f60208284031215614b1e575f80fd5b81356120cf81614a93565b5f8060408385031215614b3a575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b60068110614b6d57614b6d614b49565b9052565b5f5b83811015614b8b578181015183820152602001614b73565b50505f910152565b5f8151808452614baa816020860160208601614b71565b601f01601f19169290920160200192915050565b60208152614bd0602082018351614b5d565b5f602083015160e06040840152614beb610100840182614b93565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b6001600160a01b0381168114610e96575f80fd5b5f80828403610160811215614c65575f80fd5b61014080821215614c74575f80fd5b8493508301359050614c8581614c3e565b809150509250929050565b5f8060208385031215614ca1575f80fd5b82356001600160401b0380821115614cb7575f80fd5b818501915085601f830112614cca575f80fd5b813581811115614cd8575f80fd5b866020828501011115614ce9575f80fd5b60209290920196919550909350505050565b600181811c90821680614d0f57607f821691505b602082108103614d2d57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610dc78284614b5d565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614d7757614d77614d41565b60405290565b604080519081016001600160401b0381118282101715614d7757614d77614d41565b604051601f8201601f191681016001600160401b0381118282101715614dc757614dc7614d41565b604052919050565b5f6001600160401b03821115614de757614de7614d41565b50601f01601f191660200190565b5f82601f830112614e04575f80fd5b8151614e17614e1282614dcf565b614d9f565b818152846020838601011115614e2b575f80fd5b610ec6826020830160208701614b71565b5f60208284031215614e4c575f80fd5b81516001600160401b03811115614e61575f80fd5b610ec684828501614df5565b602081525f6120cf6020830184614b93565b5f60208284031215614e8f575f80fd5b5051919050565b5f60208284031215614ea6575f80fd5b81356120cf81614c3e565b5f808335601e19843603018112614ec6575f80fd5b8301803591506001600160401b03821115614edf575f80fd5b6020019150600581901b3603821315613399575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614f1e575f80fd5b9190910192915050565b5f82601f830112614f37575f80fd5b8135614f45614e1282614dcf565b818152846020838601011115614f59575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614f85575f80fd5b614f8d614d55565b82356001600160401b0380821115614fa3575f80fd5b614faf36838701614f28565b83526020850135915080821115614fc4575f80fd5b50614fd136828601614f28565b6020830152506040830135614fe581614a93565b604082015292915050565b5f8251614f1e818460208701614b71565b601f8211156104e357805f5260205f20601f840160051c810160208510156150265750805b601f840160051c820191505b818110156119b1575f8155600101615032565b81516001600160401b0381111561505e5761505e614d41565b6150728161506c8454614cfb565b84615001565b602080601f8311600181146150a5575f841561508e5750858301515b5f19600386901b1c1916600185901b178555610ffd565b5f85815260208120601f198616915b828110156150d3578886015182559484019460019091019084016150b4565b50858210156150f057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610dc757610dc7615100565b5f63ffffffff80831681810361513f5761513f615100565b6001019392505050565b8082028115828204841417610dc757610dc7615100565b5f808335601e19843603018112615175575f80fd5b83016020810192503590506001600160401b03811115615193575f80fd5b803603821315613399575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561527e57848303601f19018952813536889003605e19018112615205575f80fd5b870160606152138280615160565b82875261522383880182846151a1565b9250505061523386830183615160565b868303888801526152458382846151a1565b92505050604080830135925061525a83614a93565b6001600160401b0392909216949091019390935297830197908301906001016151e0565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356152af81614c3e565b6001600160a01b031660608381019190915283013536849003601e190181126152d6575f80fd5b83016020810190356001600160401b038111156152f1575f80fd5b8060051b3603821315615302575f80fd5b60808085015261353460a0850182846151c9565b5f8261533057634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061534957615349614b49565b91905290565b5f805f60608486031215615361575f80fd5b83519250602084015161537381614a93565b604085015190925061538481614a93565b809150509250925092565b5f80604083850312156153a0575f80fd5b825191506020830151614c8581614983565b5f60208083525f84546153c481614cfb565b806020870152604060018084165f81146153e557600181146154015761542e565b60ff19851660408a0152604084151560051b8a0101955061542e565b895f5260205f205f5b858110156154255781548b820186015290830190880161540a565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156121e5576121e5615100565b6001600160401b038281168282160390808211156121e5576121e5615100565b5f806040838503121561549c575f80fd5b82516001600160401b03808211156154b2575f80fd5b90840190606082870312156154c5575f80fd5b6154cd614d55565b8251815260208301516154df81614c3e565b60208201526040830151828111156154f5575f80fd5b61550188828601614df5565b6040830152508094505050506020830151614c8581614983565b5f806040838503121561552c575f80fd5b825191506020830151614c8581614a93565b81810381811115610dc757610dc7615100565b6001600160401b0381811683821602808216919082811461557457615574615100565b505092915050565b5f8235603e19833603018112614f1e575f80fd5b5f808335601e198436030181126155a5575f80fd5b8301803591506001600160401b038211156155be575f80fd5b602001915036819003821315613399575f80fd5b602081525f610ec66020830184866151a1565b5f604082360312156155f5575f80fd5b6155fd614d7d565b61560683614990565b81526020808401356001600160401b0380821115615622575f80fd5b9085019036601f830112615634575f80fd5b81358181111561564657615646614d41565b8060051b9150615657848301614d9f565b8181529183018401918481019036841115615670575f80fd5b938501935b8385101561569a578435925061568a83614c3e565b8282529385019390850190615675565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156125025784516001600160a01b031682529383019360019290920191908301906156de565b60208152815160208201525f602083015160e0604084015261572d610100840182614b93565b90506040840151601f198085840301606086015261574b8383614b93565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261577b83836156ac565b925060a08601519150808584030160c08601525061579982826156ac565b91505060c08401516157b660e08501826001600160401b03169052565b509392505050565b5f80604083850312156157cf575f80fd5b8251915060208301516001600160401b038111156157eb575f80fd5b6157f785828601614df5565b9150509250929050565b6001600160401b0383111561581857615818614d41565b61582c836158268354614cfb565b83615001565b5f601f84116001811461585d575f85156158465750838201355b5f19600387901b1c1916600186901b1783556119b1565b5f83815260208120601f198716915b8281101561588c578685013582556020948501946001909201910161586c565b50868210156158a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f602082840312156158ca575f80fd5b6120cf82614a82565b5f602082840312156158e3575f80fd5b813560ff811681146120cf575f80fd5b5f6001600160401b0380831681810361513f5761513f615100565b5f6020828403121561591e575f80fd5b81516120cf8161498356fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220caa31d1b6a4d5b2139a71f42b963cce2eefd847911a8578b6b6e5f508b96974964736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -2997,7 +2997,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidato // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212209002d6aad56d491f0ed777036244a5391c34cb570ba57a1d14e5c16063c55e2e64736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220427b16ca5e2abe4960f5b859780a2eb475e9509f2f5b05fb0ffcb2156069896d64736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go index 9759d6b32..4f7edbbf1 100644 --- a/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go +++ b/abi-bindings/go/validator-manager/ExampleRewardCalculator/ExampleRewardCalculator.go @@ -32,7 +32,7 @@ var ( // ExampleRewardCalculatorMetaData contains all meta data concerning the ExampleRewardCalculator contract. var ExampleRewardCalculatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"rewardBasisPoints_\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SECONDS_IN_YEAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPTIME_REWARDS_THRESHOLD_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"validatorStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingStartTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakingEndTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"name\":\"calculateReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardBasisPoints\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a0604052348015600e575f80fd5b50604051610393380380610393833981016040819052602b91603b565b6001600160401b03166080526066565b5f60208284031215604a575f80fd5b81516001600160401b0381168114605f575f80fd5b9392505050565b60805161030f6100845f395f818160c50152610161015261030f5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80634f22429f146100595780635dcc93911461007f578063a9778a7a1461008a578063afba878a146100a6578063bb65b242146100c0575b5f80fd5b61006c6100673660046101db565b610100565b6040519081526020015b60405180910390f35b61006c6301e1338081565b61009361271081565b60405161ffff9091168152602001610076565b6100ae605081565b60405160ff9091168152602001610076565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610076565b5f605061010d8685610249565b6101179190610271565b67ffffffffffffffff1661012c836064610271565b67ffffffffffffffff16101561014357505f6101b6565b6127106301e133806101558686610249565b67ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1689610195919061029d565b61019f919061029d565b6101a991906102ba565b6101b391906102ba565b90505b95945050505050565b803567ffffffffffffffff811681146101d6575f80fd5b919050565b5f805f805f60a086880312156101ef575f80fd5b853594506101ff602087016101bf565b935061020d604087016101bf565b925061021b606087016101bf565b9150610229608087016101bf565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b67ffffffffffffffff82811682821603908082111561026a5761026a610235565b5092915050565b67ffffffffffffffff81811683821602808216919082811461029557610295610235565b505092915050565b80820281158282048414176102b4576102b4610235565b92915050565b5f826102d457634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220febeb7c940e92bd494626d18d0b77afaeeaa83b469dd9d4472f90b57569eb6c464736f6c63430008190033", + Bin: "0x60a0604052348015600e575f80fd5b50604051610393380380610393833981016040819052602b91603b565b6001600160401b03166080526066565b5f60208284031215604a575f80fd5b81516001600160401b0381168114605f575f80fd5b9392505050565b60805161030f6100845f395f818160c50152610161015261030f5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80634f22429f146100595780635dcc93911461007f578063a9778a7a1461008a578063afba878a146100a6578063bb65b242146100c0575b5f80fd5b61006c6100673660046101db565b610100565b6040519081526020015b60405180910390f35b61006c6301e1338081565b61009361271081565b60405161ffff9091168152602001610076565b6100ae605081565b60405160ff9091168152602001610076565b6100e77f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610076565b5f605061010d8685610249565b6101179190610271565b67ffffffffffffffff1661012c836064610271565b67ffffffffffffffff16101561014357505f6101b6565b6127106301e133806101558686610249565b67ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1689610195919061029d565b61019f919061029d565b6101a991906102ba565b6101b391906102ba565b90505b95945050505050565b803567ffffffffffffffff811681146101d6575f80fd5b919050565b5f805f805f60a086880312156101ef575f80fd5b853594506101ff602087016101bf565b935061020d604087016101bf565b925061021b606087016101bf565b9150610229608087016101bf565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b67ffffffffffffffff82811682821603908082111561026a5761026a610235565b5092915050565b67ffffffffffffffff81811683821602808216919082811461029557610295610235565b505092915050565b80820281158282048414176102b4576102b4610235565b92915050565b5f826102d457634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a017f47278471e139b88da0cb4f0fedb8a1a5488085fabca75070c7dff9f008b64736f6c63430008190033", } // ExampleRewardCalculatorABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 45ef69359..e3cf7f4fd 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -103,7 +103,7 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161587e38038061587e83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6157318061014d5f395ff3fe6080604052600436106101f1575f3560e01c806380dd672f11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b806380dd672f146104525780638280a25a1461047157806393e2459814610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360ad77841161015957806360ad7784146103b557806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d57806360305d621461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614740565b610615565b005b348015610221575f80fd5b5061021461023036600461477b565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614740565b6108d1565b34801561028a575f80fd5b50610214610299366004614792565b6108dc565b3480156102a9575f80fd5b506102146102b83660046147e0565b610e61565b3480156102c8575f80fd5b506102dc6102d736600461477b565b610ed5565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614740565b610f2f565b348015610378575f80fd5b50610214610387366004614801565b610f3a565b348015610397575f80fd5b506103a0601481565b60405163ffffffff9091168152602001610257565b3480156103c0575f80fd5b506102146103cf3660046147e0565b610ffb565b3480156103df575f80fd5b506103f36103ee36600461482e565b6112d3565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b36600461477b565b61130a565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614740565b61131e565b34801561045d575f80fd5b5061021461046c3660046147e0565b611349565b34801561047c575f80fd5b50610249603081565b348015610490575f80fd5b5061021461049f36600461477b565b61158e565b3480156104af575f80fd5b506102146104be366004614801565b611659565b6103f36104d136600461485a565b61184e565b3480156104e1575f80fd5b506103f35f8051602061565c83398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a36600461477b565b611882565b34801561053a575f80fd5b506103f35f8051602061567c83398151915281565b34801561055a575f80fd5b5061021461056936600461477b565b611aed565b348015610579575f80fd5b506102146105883660046148bb565b611c2a565b6103f361059b36600461477b565b611d07565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce36600461477b565b611d38565b6040516102579190614947565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f36106103660046149c7565b611e87565b610620838383611ee2565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206156dc8339815191526020526040808220815160e0810190925280545f8051602061567c83398151915293929190829060ff166005811115610697576106976148d2565b60058111156106a8576106a86148d2565b81526020016001820180546106bc90614a32565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614a32565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e6148d2565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614b75565b6040518263ffffffff1660e01b815260040161088b9190614ba6565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614bb8565b50505050565b6108cb838383611ee2565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061567c8339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614bb8565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614be3565b6001600160a01b031614610a12576109ed6060840160408501614be3565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614bfe565b905090505f805b828163ffffffff161015610c87575f610a436060880188614bfe565b8363ffffffff16818110610a5957610a59614c43565b9050602002810190610a6b9190614c57565b610a7490614cc2565b80516040519192505f916008880191610a8c91614d3d565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614ba6565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614d3d565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614bb8565b90508086600801835f0151604051610b5b9190614d3d565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610b9b9082614d92565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610c1a9085614e61565b8251604051919550610c2b91614d3d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610c8090614e74565b9050610a27565b50600483018190556001830154606490610cab90600160401b900460ff1683614e96565b1015610ccd57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610cf187612233565b604001516040518263ffffffff1660e01b8152600401610d119190614ba6565b602060405180830381865af4158015610d2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d509190614bb8565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610d8a9190614fd8565b5f60405180830381865af4158015610da4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dcb9190810190614b75565b90505f600282604051610dde9190614d3d565b602060405180830381855afa158015610df9573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e1c9190614bb8565b9050828114610e485760405163baaea89d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610e6a82612349565b610e8a576040516330efa98b60e01b81526004810183905260240161063c565b5f610e9483611d38565b5190506002816005811115610eab57610eab6148d2565b14610ecb578060405163170cc93360e21b815260040161063c9190614a64565b6108cb8383612384565b5f805f8051602061565c83398151915260030154610ef39084615063565b9050801580610f0857506001600160401b0381115b15610f295760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb83838361266a565b610f42612856565b5f8051602061565c8339815191525f80610f5b8461288d565b91509150610f6882612349565b610f7457505050610fe2565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610fa257610fa26148d2565b03610fc7575f83815260088501602052604081208054919055610fc58282612c40565b505b610fdd81610fd884604001516112d3565b612c9e565b505050505b610ff860015f805160206156bc83398151915255565b50565b5f8281525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff166003811115611048576110486148d2565b6003811115611059576110596148d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6110cf82611d38565b90506001835160038111156110e6576110e66148d2565b14611107578251604051633b0d540d60e21b815261063c9190600401615082565b60048151600581111561111c5761111c6148d2565b036111325761112a86612cc4565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61115789612233565b604001516040518263ffffffff1660e01b81526004016111779190614ba6565b606060405180830381865af4158015611192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b6919061509c565b50915091508184146111e357846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061121c5750806001600160401b03168560a001516001600160401b0316115b1561124557604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610f29906001600160401b038416614e96565b5f61131482611d38565b6080015192915050565b61132983838361266a565b61064557604051635bff683f60e11b81526004810184905260240161063c565b611351612856565b5f8281525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff16600381111561139e5761139e6148d2565b60038111156113af576113af6148d2565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611428576114286148d2565b14611449578051604051633b0d540d60e21b815261063c9190600401615082565b60046114588260400151611d38565b51600581111561146a5761146a6148d2565b14611569575f61147984612233565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016114b89190614ba6565b606060405180830381865af41580156114d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f7919061509c565b5091509150818460400151146115235760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b0316111561156557604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b61157284612cc4565b505061158a60015f805160206156bc83398151915255565b5050565b5f8051602061565c8339815191525f6115a683611d38565b51905060048160058111156115bd576115bd6148d2565b146115dd578060405163170cc93360e21b815260040161063c9190614a64565b5f8381526005830160205260409020546001600160a01b0316331461162357335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612c40565b5f8051602061567c8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61168c86612233565b604001516040518263ffffffff1660e01b81526004016116ac9190614ba6565b6040805180830381865af41580156116c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ea91906150d1565b915091508061171057604051632d07135360e01b8152811515600482015260240161063c565b5f8281526006840160205260409020805461172a90614a32565b90505f0361174e5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff166005811115611774576117746148d2565b146117a7575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b5f82815260068401602052604081206117bf91614694565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611857612856565b61186384848434612f18565b905061187b60015f805160206156bc83398151915255565b9392505050565b5f8181525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff1660038111156118cf576118cf6148d2565b60038111156118e0576118e06148d2565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611959576119596148d2565b1415801561197a5750600381516003811115611977576119776148d2565b14155b1561199b578051604051633b0d540d60e21b815261063c9190600401615082565b5f6119a98260400151611d38565b905080606001516001600160401b03165f036119db576040516339b894f960e21b81526004810185905260240161063c565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611a4993906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611a63573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a8a9190810190614b75565b6040518263ffffffff1660e01b8152600401611aa69190614ba6565b6020604051808303815f875af1158015611ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae69190614bb8565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f8051602061567c8339815191529190611b3490614a32565b90505f03611b585760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611b7e57611b7e6148d2565b14611bb1575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611bea91906004016150ff565b6020604051808303815f875af1158015611c06573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614bb8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611c73575080546001600160401b03808416911610155b15611c915760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611cbb83613093565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d10612856565b611d1b8233346130a4565b9050611d3360015f805160206156bc83398151915255565b919050565b611d406146cb565b5f8281525f805160206156dc833981519152602052604090819020815160e0810190925280545f8051602061567c833981519152929190829060ff166005811115611d8d57611d8d6148d2565b6005811115611d9e57611d9e6148d2565b8152602001600182018054611db290614a32565b80601f0160208091040260200160405190810160405280929190818152602001828054611dde90614a32565b8015611e295780601f10611e0057610100808354040283529160200191611e29565b820191905f5260205f20905b815481529060010190602001808311611e0c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f8051602061567c833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611eca9086908690615189565b90815260200160405180910390205491505092915050565b5f8381525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c8339815191529284929091829060ff166003811115611f3057611f306148d2565b6003811115611f4157611f416148d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611fb782611d38565b9050600283516003811115611fce57611fce6148d2565b14611fef578251604051633b0d540d60e21b815261063c9190600401615082565b60208301516001600160a01b0316331461208b575f8281526005850160205260409020546001600160a01b0316331461202857336115fe565b5f82815260058501602052604090205460a082015161205791600160b01b90046001600160401b031690615198565b6001600160401b031642101561208b5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b6002815160058111156120a0576120a06148d2565b036121ce57600284015460808401516120c2916001600160401b031690615198565b6001600160401b03164210156120f65760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612108576121068287612384565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161214191849161213c91906151b8565b6132e7565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155612182846134be565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a31515945061187b9350505050565b6004815160058111156121e3576121e36148d2565b03612217576121f1836134be565b5f89815260078601602052604090205561220a88612cc4565b600194505050505061187b565b805160405163170cc93360e21b815261063c9190600401614a64565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612297573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122be91908101906151d8565b91509150806122e057604051636b2f19e960e01b815260040160405180910390fd5b815115612306578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612342576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156123cf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123f691908101906151d8565b915091508061241857604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247f9190614bb8565b8251146124a5578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156124e1576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161251e9190614ba6565b6040805180830381865af4158015612538573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255c9190615268565b915091508187146125835760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f8051602061565c833981519152906001600160401b039081169083161115612640575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a261265f565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f8051602061565c833981519152816126838661365b565b905061268e86612349565b61269d5760019250505061187b565b5f8681526005830160205260409020546001600160a01b031633146126c257336115fe565b5f86815260058301602052604090205460a08201516126f191600160b01b90046001600160401b031690615198565b6001600160401b03168160c001516001600160401b031610156127385760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f8515612750576127498786612384565b905061276e565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612793906112d3565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156127fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128209190614bb8565b905080846008015f8a81526020019081526020015f205f8282546128449190614e61565b90915550501515979650505050505050565b5f805160206156bc83398151915280546001190161288757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6128966146cb565b5f8051602061567c8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6128c988612233565b604001516040518263ffffffff1660e01b81526004016128e99190614ba6565b6040805180830381865af4158015612903573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292791906150d1565b91509150801561294e57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561297f5761297f6148d2565b6005811115612990576129906148d2565b81526020016001820180546129a490614a32565b80601f01602080910402602001604051908101604052809291908181526020018280546129d090614a32565b8015612a1b5780601f106129f257610100808354040283529160200191612a1b565b820191905f5260205f20905b8154815290600101906020018083116129fe57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612a8657612a866148d2565b14158015612aa75750600181516005811115612aa457612aa46148d2565b14155b15612ac857805160405163170cc93360e21b815261063c9190600401614a64565b600381516005811115612add57612add6148d2565b03612aeb5760048152612af0565b600581525b836008018160200151604051612b069190614d3d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612b4a57612b4a6148d2565b021790555060208201516001820190612b639082614d92565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c0957612c096148d2565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612c8c575f80fd5b505af115801561112a573d5f803e3d5ffd5b61158a6001600160a01b0383168261393f565b60015f805160206156bc83398151915255565b5f8181525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff166003811115612d1157612d116148d2565b6003811115612d2257612d226148d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612dbf7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612dce9190615198565b6001600160401b0316421015612e025760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612ebd575f84815260058701602052604090205461271090612e6f90600160a01b900461ffff1685614e96565b612e799190615063565b915081866008015f8681526020019081526020015f205f828254612e9d9190614e61565b90915550612ead9050828461528b565b9050612ebd856020015182612c40565b612ed28560200151610fd887606001516112d3565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f8051602061565c83398151915290600160401b900461ffff9081169086161080612f6c575061271061ffff8616115b15612f9057604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b039081169085161015612fcc576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b8054831080612fde5750806001015483115b15612fff5760405163222d164360e21b81526004810184905260240161063c565b825f61300a82610ed5565b90505f61301789836139d2565b5f818152600595909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b61309b613ef7565b610ff881613f42565b5f5f8051602061565c833981519152816130bd84610ed5565b90505f6130c987611d38565b90506130d487612349565b6130f4576040516330efa98b60e01b81526004810188905260240161063c565b600281516005811115613109576131096148d2565b1461312a57805160405163170cc93360e21b815261063c9190600401614a64565b5f82826080015161313b9190615198565b905083600201600a9054906101000a90046001600160401b03168260400151613164919061529e565b6001600160401b0316816001600160401b031611156131a157604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806131ad8a846132e7565b915091505f8a836040516020016131db92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260068b019093529120805491925060019160ff1916828002179055505f8181526006880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b5f8281525f805160206156dc833981519152602052604081206002015481905f8051602061567c83398151915290600160801b90046001600160401b031661332f8582613fb6565b5f613339876141d9565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156133e2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134099190810190614b75565b6040518263ffffffff1660e01b81526004016134259190614ba6565b6020604051808303815f875af1158015613441573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134659190614bb8565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f8051602061565c83398151915290505f6134de8460400151611d38565b90505f6003825160058111156134f6576134f66148d2565b14806135145750600482516005811115613512576135126148d2565b145b15613524575060c0810151613561565b600282516005811115613539576135396148d2565b03613545575042613561565b815160405163170cc93360e21b815261063c9190600401614a64565b84608001516001600160401b0316816001600160401b03161161358857505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135ad906112d3565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa15801561362e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136529190614bb8565b95945050505050565b6136636146cb565b5f8281525f805160206156dc8339815191526020526040808220815160e0810190925280545f8051602061567c83398151915293929190829060ff1660058111156136b0576136b06148d2565b60058111156136c1576136c16148d2565b81526020016001820180546136d590614a32565b80601f016020809104026020016040519081016040528092919081815260200182805461370190614a32565b801561374c5780601f106137235761010080835404028352916020019161374c565b820191905f5260205f20905b81548152906001019060200180831161372f57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156137ba576137ba6148d2565b146137ed575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613831576138316148d2565b02179055506020820151600182019061384a9082614d92565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6138e885826132e7565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b804710156139625760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146139ab576040519150601f19603f3d011682016040523d82523d5f602084013e6139b0565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a1657604051637fab81e560e01b815260040160405180910390fd5b5f8051602061567c83398151915242613a35606086016040870161482e565b6001600160401b0316111580613a6f5750613a536202a30042614e61565b613a63606086016040870161482e565b6001600160401b031610155b15613aa957613a84606085016040860161482e565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613abe613ab960608601866152c9565b61424e565b613ace613ab960808601866152c9565b6030613add60208601866152dd565b905014613b0f57613af160208501856152dd565b6040516326475b2f60e11b815261063c925060040190815260200190565b613b1984806152dd565b90505f03613b4657613b2b84806152dd565b604051633e08a12560e11b815260040161063c92919061531f565b5f60088201613b5586806152dd565b604051613b63929190615189565b90815260200160405180910390205414613b9c57613b8184806152dd565b60405163a41f772f60e01b815260040161063c92919061531f565b613ba6835f613fb6565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613be38a806152dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c2b908b018b6152dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613c7460608b0160408c0161482e565b6001600160401b03168152602001613c8f60608b018b6152c9565b613c9890615332565b8152602001613caa60808b018b6152c9565b613cb390615332565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613ce19190615454565b5f60405180830381865af4158015613cfb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d22919081019061550b565b5f82815260068601602052604090209193509150613d408282614d92565b508160088401613d5088806152dd565b604051613d5e929190615189565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613d9a908590600401614ba6565b6020604051808303815f875af1158015613db6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dda9190614bb8565b5f8481526007860160205260409020805460ff191660011790559050613e0087806152dd565b5f858152600787016020526040902060010191613e1e91908361554e565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613e7d88806152dd565b604051613e8b929190615189565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613ec9919061482e565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613f4057604051631afcd79f60e31b815260040160405180910390fd5b565b613f4a613ef7565b613f53816143b7565b613f5b6143d0565b610ff860608201356080830135613f7860c0850160a0860161482e565b613f8860e0860160c08701615607565b613f99610100870160e08801615620565b610100870135613fb161014089016101208a01614be3565b6143e0565b5f8051602061567c8339815191525f6001600160401b038084169085161115613fea57613fe383856151b8565b9050613ff7565b613ff484846151b8565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580614059575060018401548151614055916001600160401b031690614e61565b8210155b1561407f576001600160401b03831660608201528181526040810151602082015261409e565b82816060018181516140919190615198565b6001600160401b03169052505b60608101516140ae90606461529e565b602082015160018601546001600160401b0392909216916140d99190600160401b900460ff16614e96565b101561410957606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b0316816040018181516141249190614e61565b9052506040810180516001600160401b038716919061414490839061528b565b9052506001840154604082015160649161416991600160401b90910460ff1690614e96565b1015614190578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206156dc8339815191526020526040812060020180545f8051602061567c833981519152919060089061422390600160401b90046001600160401b0316615640565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b61425b6020820182614801565b63ffffffff1615801561427b57506142766020820182614bfe565b151590505b156142c25761428d6020820182614801565b61429a6020830183614bfe565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6142cf6020820182614bfe565b90506142de6020830183614801565b63ffffffff1611156142f75761428d6020820182614801565b60015b6143076020830183614bfe565b905081101561158a5761431d6020830183614bfe565b61432860018461528b565b81811061433757614337614c43565b905060200201602081019061434c9190614be3565b6001600160a01b03166143626020840184614bfe565b8381811061437257614372614c43565b90506020020160208101906143879190614be3565b6001600160a01b031610156143af57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016142fa565b6143bf613ef7565b6143c761459c565b610ff8816145a4565b6143d8613ef7565b613f4061468c565b6143e8613ef7565b5f8051602061565c83398151915261ffff8516158061440c575061271061ffff8616115b1561443057604051635f12e6c360e11b815261ffff8616600482015260240161063c565b868811156144545760405163222d164360e21b81526004810189905260240161063c565b60ff841615806144675750600a60ff8516115b1561448a5760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b031610156144f1576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f036145115760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b613f40613ef7565b6145ac613ef7565b80355f8051602061567c83398151915290815560146145d16060840160408501615620565b60ff1611806145f057506145eb6060830160408401615620565b60ff16155b15614624576146056060830160408401615620565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b6146346060830160408401615620565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614665604083016020840161482e565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612cb1613ef7565b5080546146a090614a32565b5f825580601f106146af575050565b601f0160209004905f5260205f2090810190610ff89190614708565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561471c575f8155600101614709565b5090565b8015158114610ff8575f80fd5b803563ffffffff81168114611d33575f80fd5b5f805f60608486031215614752575f80fd5b83359250602084013561476481614720565b91506147726040850161472d565b90509250925092565b5f6020828403121561478b575f80fd5b5035919050565b5f80604083850312156147a3575f80fd5b82356001600160401b038111156147b8575f80fd5b8301608081860312156147c9575f80fd5b91506147d76020840161472d565b90509250929050565b5f80604083850312156147f1575f80fd5b823591506147d76020840161472d565b5f60208284031215614811575f80fd5b61187b8261472d565b6001600160401b0381168114610ff8575f80fd5b5f6020828403121561483e575f80fd5b813561187b8161481a565b803561ffff81168114611d33575f80fd5b5f805f6060848603121561486c575f80fd5b83356001600160401b03811115614881575f80fd5b840160a08187031215614892575f80fd5b92506148a060208501614849565b915060408401356148b08161481a565b809150509250925092565b5f61014082840312156148cc575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b600681106148f6576148f66148d2565b9052565b5f5b838110156149145781810151838201526020016148fc565b50505f910152565b5f81518084526149338160208601602086016148fa565b601f01601f19169290920160200192915050565b602081526149596020820183516148e6565b5f602083015160e0604084015261497461010084018261491c565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156149d8575f80fd5b82356001600160401b03808211156149ee575f80fd5b818501915085601f830112614a01575f80fd5b813581811115614a0f575f80fd5b866020828501011115614a20575f80fd5b60209290920196919550909350505050565b600181811c90821680614a4657607f821691505b6020821081036148cc57634e487b7160e01b5f52602260045260245ffd5b60208101610f2982846148e6565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614aa857614aa8614a72565b60405290565b604080519081016001600160401b0381118282101715614aa857614aa8614a72565b604051601f8201601f191681016001600160401b0381118282101715614af857614af8614a72565b604052919050565b5f6001600160401b03821115614b1857614b18614a72565b50601f01601f191660200190565b5f82601f830112614b35575f80fd5b8151614b48614b4382614b00565b614ad0565b818152846020838601011115614b5c575f80fd5b614b6d8260208301602087016148fa565b949350505050565b5f60208284031215614b85575f80fd5b81516001600160401b03811115614b9a575f80fd5b614b6d84828501614b26565b602081525f61187b602083018461491c565b5f60208284031215614bc8575f80fd5b5051919050565b6001600160a01b0381168114610ff8575f80fd5b5f60208284031215614bf3575f80fd5b813561187b81614bcf565b5f808335601e19843603018112614c13575f80fd5b8301803591506001600160401b03821115614c2c575f80fd5b6020019150600581901b36038213156134b7575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614c6b575f80fd5b9190910192915050565b5f82601f830112614c84575f80fd5b8135614c92614b4382614b00565b818152846020838601011115614ca6575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614cd2575f80fd5b614cda614a86565b82356001600160401b0380821115614cf0575f80fd5b614cfc36838701614c75565b83526020850135915080821115614d11575f80fd5b50614d1e36828601614c75565b6020830152506040830135614d328161481a565b604082015292915050565b5f8251614c6b8184602087016148fa565b601f82111561064557805f5260205f20601f840160051c81016020851015614d735750805b601f840160051c820191505b81811015611ae6575f8155600101614d7f565b81516001600160401b03811115614dab57614dab614a72565b614dbf81614db98454614a32565b84614d4e565b602080601f831160018114614df2575f8415614ddb5750858301515b5f19600386901b1c1916600185901b17855561112a565b5f85815260208120601f198616915b82811015614e2057888601518255948401946001909101908401614e01565b5085821015614e3d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610f2957610f29614e4d565b5f63ffffffff808316818103614e8c57614e8c614e4d565b6001019392505050565b8082028115828204841417610f2957610f29614e4d565b5f808335601e19843603018112614ec2575f80fd5b83016020810192503590506001600160401b03811115614ee0575f80fd5b8036038213156134b7575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015614fcb57848303601f19018952813536889003605e19018112614f52575f80fd5b87016060614f608280614ead565b828752614f708388018284614eee565b92505050614f8086830183614ead565b86830388880152614f92838284614eee565b925050506040808301359250614fa78361481a565b6001600160401b039290921694909101939093529783019790830190600101614f2d565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135614ffc81614bcf565b6001600160a01b031660608381019190915283013536849003601e19018112615023575f80fd5b83016020810190356001600160401b0381111561503e575f80fd5b8060051b360382131561504f575f80fd5b60808085015261365260a085018284614f16565b5f8261507d57634e487b7160e01b5f52601260045260245ffd5b500490565b6020810160048310615096576150966148d2565b91905290565b5f805f606084860312156150ae575f80fd5b8351925060208401516150c08161481a565b60408501519092506148b08161481a565b5f80604083850312156150e2575f80fd5b8251915060208301516150f481614720565b809150509250929050565b5f60208083525f845461511181614a32565b806020870152604060018084165f8114615132576001811461514e5761517b565b60ff19851660408a0152604084151560051b8a0101955061517b565b895f5260205f205f5b858110156151725781548b8201860152908301908801615157565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561234257612342614e4d565b6001600160401b0382811682821603908082111561234257612342614e4d565b5f80604083850312156151e9575f80fd5b82516001600160401b03808211156151ff575f80fd5b9084019060608287031215615212575f80fd5b61521a614a86565b82518152602083015161522c81614bcf565b6020820152604083015182811115615242575f80fd5b61524e88828601614b26565b60408301525080945050505060208301516150f481614720565b5f8060408385031215615279575f80fd5b8251915060208301516150f48161481a565b81810381811115610f2957610f29614e4d565b6001600160401b038181168382160280821691908281146152c1576152c1614e4d565b505092915050565b5f8235603e19833603018112614c6b575f80fd5b5f808335601e198436030181126152f2575f80fd5b8301803591506001600160401b0382111561530b575f80fd5b6020019150368190038213156134b7575f80fd5b602081525f614b6d602083018486614eee565b5f60408236031215615342575f80fd5b61534a614aae565b6153538361472d565b81526020808401356001600160401b038082111561536f575f80fd5b9085019036601f830112615381575f80fd5b81358181111561539357615393614a72565b8060051b91506153a4848301614ad0565b81815291830184019184810190368411156153bd575f80fd5b938501935b838510156153e757843592506153d783614bcf565b82825293850193908501906153c2565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561265f5784516001600160a01b0316825293830193600192909201919083019061542b565b60208152815160208201525f602083015160e0604084015261547a61010084018261491c565b90506040840151601f1980858403016060860152615498838361491c565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526154c883836153f9565b925060a08601519150808584030160c0860152506154e682826153f9565b91505060c084015161550360e08501826001600160401b03169052565b509392505050565b5f806040838503121561551c575f80fd5b8251915060208301516001600160401b03811115615538575f80fd5b61554485828601614b26565b9150509250929050565b6001600160401b0383111561556557615565614a72565b615579836155738354614a32565b83614d4e565b5f601f8411600181146155aa575f85156155935750838201355b5f19600387901b1c1916600186901b178355611ae6565b5f83815260208120601f198716915b828110156155d957868501358255602094850194600190920191016155b9565b50868210156155f5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215615617575f80fd5b61187b82614849565b5f60208284031215615630575f80fd5b813560ff8116811461187b575f80fd5b5f6001600160401b03808316818103614e8c57614e8c614e4d56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220e3b0bf5171234b1805f73700311d1adfaf0dd8252b7776c5fce7dc32c175091264736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b5060405161587e38038061587e83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6157318061014d5f395ff3fe6080604052600436106101f1575f3560e01c806380dd672f11610108578063ba3a4b971161009d578063c599e24f1161006d578063c599e24f1461058d578063c974d1b6146105a0578063d5f20ff6146105b4578063df93d8de146105e0578063fd7ac5e7146105f6575f80fd5b8063ba3a4b9714610510578063bc5fbfec1461052f578063bee0a03f1461054f578063c257a0f51461056e575f80fd5b8063a9778a7a116100d8578063a9778a7a14610326578063af2f5feb146104c3578063afb98096146104d6578063b771b3bc146104f6575f80fd5b806380dd672f146104525780638280a25a1461047157806393e2459814610485578063a3a65e48146104a4575f80fd5b806335455ded1161018957806360ad77841161015957806360ad7784146103b557806362065856146103d457806366435abf14610401578063732214f81461042057806376f7862114610433575f80fd5b806335455ded146103265780633a1cfff61461034e578063467ef06f1461036d57806360305d621461038c575f80fd5b806320d91b7a116101c457806320d91b7a1461027f57806325e1c7761461029e5780632e2194d8146102bd578063329c3e12146102f4575f80fd5b80630118acc4146101f55780630322ed9814610216578063151d30d1146102355780631ec4472414610260575b5f80fd5b348015610200575f80fd5b5061021461020f366004614740565b610615565b005b348015610221575f80fd5b5061021461023036600461477b565b61064a565b348015610240575f80fd5b50610249600a81565b60405160ff90911681526020015b60405180910390f35b34801561026b575f80fd5b5061021461027a366004614740565b6108d1565b34801561028a575f80fd5b50610214610299366004614792565b6108dc565b3480156102a9575f80fd5b506102146102b83660046147e0565b610e61565b3480156102c8575f80fd5b506102dc6102d736600461477b565b610ed5565b6040516001600160401b039091168152602001610257565b3480156102ff575f80fd5b5061030e6001600160991b0181565b6040516001600160a01b039091168152602001610257565b348015610331575f80fd5b5061033b61271081565b60405161ffff9091168152602001610257565b348015610359575f80fd5b50610214610368366004614740565b610f2f565b348015610378575f80fd5b50610214610387366004614801565b610f3a565b348015610397575f80fd5b506103a0601481565b60405163ffffffff9091168152602001610257565b3480156103c0575f80fd5b506102146103cf3660046147e0565b610ffb565b3480156103df575f80fd5b506103f36103ee36600461482e565b6112d3565b604051908152602001610257565b34801561040c575f80fd5b506102dc61041b36600461477b565b61130a565b34801561042b575f80fd5b506103f35f81565b34801561043e575f80fd5b5061021461044d366004614740565b61131e565b34801561045d575f80fd5b5061021461046c3660046147e0565b611349565b34801561047c575f80fd5b50610249603081565b348015610490575f80fd5b5061021461049f36600461477b565b61158e565b3480156104af575f80fd5b506102146104be366004614801565b611659565b6103f36104d136600461485a565b61184e565b3480156104e1575f80fd5b506103f35f8051602061565c83398151915281565b348015610501575f80fd5b5061030e6005600160991b0181565b34801561051b575f80fd5b5061021461052a36600461477b565b611882565b34801561053a575f80fd5b506103f35f8051602061567c83398151915281565b34801561055a575f80fd5b5061021461056936600461477b565b611aed565b348015610579575f80fd5b506102146105883660046148bb565b611c2a565b6103f361059b36600461477b565b611d07565b3480156105ab575f80fd5b50610249601481565b3480156105bf575f80fd5b506105d36105ce36600461477b565b611d38565b6040516102579190614947565b3480156105eb575f80fd5b506102dc6202a30081565b348015610601575f80fd5b506103f36106103660046149c7565b611e87565b610620838383611ee2565b61064557604051631036cf9160e11b8152600481018490526024015b60405180910390fd5b505050565b5f8181525f805160206156dc8339815191526020526040808220815160e0810190925280545f8051602061567c83398151915293929190829060ff166005811115610697576106976148d2565b60058111156106a8576106a86148d2565b81526020016001820180546106bc90614a32565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890614a32565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561079e5761079e6148d2565b146107d1575f8381526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261086f9190810190614b75565b6040518263ffffffff1660e01b815260040161088b9190614ba6565b6020604051808303815f875af11580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190614bb8565b50505050565b6108cb838383611ee2565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061567c8339815191529060ff161561092e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190614bb8565b8360200135146109be576040516372b0a7e760e11b81526020840135600482015260240161063c565b306109cf6060850160408601614be3565b6001600160a01b031614610a12576109ed6060840160408501614be3565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161063c565b5f610a206060850185614bfe565b905090505f805b828163ffffffff161015610c87575f610a436060880188614bfe565b8363ffffffff16818110610a5957610a59614c43565b9050602002810190610a6b9190614c57565b610a7490614cc2565b80516040519192505f916008880191610a8c91614d3d565b90815260200160405180910390205414610abc57805160405163a41f772f60e01b815261063c9190600401614ba6565b5f6002885f013584604051602001610aeb92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b0591614d3d565b602060405180830381855afa158015610b20573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b439190614bb8565b90508086600801835f0151604051610b5b9190614d3d565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610b9b9082614d92565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610c1a9085614e61565b8251604051919550610c2b91614d3d565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610c8090614e74565b9050610a27565b50600483018190556001830154606490610cab90600160401b900460ff1683614e96565b1015610ccd57604051635943317f60e01b81526004810182905260240161063c565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610cf187612233565b604001516040518263ffffffff1660e01b8152600401610d119190614ba6565b602060405180830381865af4158015610d2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d509190614bb8565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610d8a9190614fd8565b5f60405180830381865af4158015610da4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dcb9190810190614b75565b90505f600282604051610dde9190614d3d565b602060405180830381855afa158015610df9573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e1c9190614bb8565b9050828114610e485760405163baaea89d60e01b8152600481018290526024810184905260440161063c565b5050506009909201805460ff1916600117905550505050565b610e6a82612349565b610e8a576040516330efa98b60e01b81526004810183905260240161063c565b5f610e9483611d38565b5190506002816005811115610eab57610eab6148d2565b14610ecb578060405163170cc93360e21b815260040161063c9190614a64565b6108cb8383612384565b5f805f8051602061565c83398151915260030154610ef39084615063565b9050801580610f0857506001600160401b0381115b15610f295760405163222d164360e21b81526004810184905260240161063c565b92915050565b6108cb83838361266a565b610f42612856565b5f8051602061565c8339815191525f80610f5b8461288d565b91509150610f6882612349565b610f7457505050610fe2565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610fa257610fa26148d2565b03610fc7575f83815260088501602052604081208054919055610fc58282612c40565b505b610fdd81610fd884604001516112d3565b612c9e565b505050505b610ff860015f805160206156bc83398151915255565b50565b5f8281525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff166003811115611048576110486148d2565b6003811115611059576110596148d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6110cf82611d38565b90506001835160038111156110e6576110e66148d2565b14611107578251604051633b0d540d60e21b815261063c9190600401615082565b60048151600581111561111c5761111c6148d2565b036111325761112a86612cc4565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61115789612233565b604001516040518263ffffffff1660e01b81526004016111779190614ba6565b606060405180830381865af4158015611192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b6919061509c565b50915091508184146111e357846040015160405163089938b360e11b815260040161063c91815260200190565b806001600160401b031683606001516001600160401b0316108061121c5750806001600160401b03168560a001516001600160401b0316115b1561124557604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5f888152600687016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f90610f29906001600160401b038416614e96565b5f61131482611d38565b6080015192915050565b61132983838361266a565b61064557604051635bff683f60e11b81526004810184905260240161063c565b611351612856565b5f8281525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff16600381111561139e5761139e6148d2565b60038111156113af576113af6148d2565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611428576114286148d2565b14611449578051604051633b0d540d60e21b815261063c9190600401615082565b60046114588260400151611d38565b51600581111561146a5761146a6148d2565b14611569575f61147984612233565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016114b89190614ba6565b606060405180830381865af41580156114d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f7919061509c565b5091509150818460400151146115235760405163089938b360e11b81526004810183905260240161063c565b806001600160401b03168460c001516001600160401b0316111561156557604051632e19bc2d60e11b81526001600160401b038216600482015260240161063c565b5050505b61157284612cc4565b505061158a60015f805160206156bc83398151915255565b5050565b5f8051602061565c8339815191525f6115a683611d38565b51905060048160058111156115bd576115bd6148d2565b146115dd578060405163170cc93360e21b815260040161063c9190614a64565b5f8381526005830160205260409020546001600160a01b0316331461162357335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161063c565b5f838152600883016020908152604080832080549084905560058601909252909120546108cb906001600160a01b031682612c40565b5f8051602061567c8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61168c86612233565b604001516040518263ffffffff1660e01b81526004016116ac9190614ba6565b6040805180830381865af41580156116c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ea91906150d1565b915091508061171057604051632d07135360e01b8152811515600482015260240161063c565b5f8281526006840160205260409020805461172a90614a32565b90505f0361174e5760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078501602052604090205460ff166005811115611774576117746148d2565b146117a7575f8281526007840160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b5f82815260068401602052604081206117bf91614694565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611857612856565b61186384848434612f18565b905061187b60015f805160206156bc83398151915255565b9392505050565b5f8181525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff1660038111156118cf576118cf6148d2565b60038111156118e0576118e06148d2565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611959576119596148d2565b1415801561197a5750600381516003811115611977576119776148d2565b14155b1561199b578051604051633b0d540d60e21b815261063c9190600401615082565b5f6119a98260400151611d38565b905080606001516001600160401b03165f036119db576040516339b894f960e21b81526004810185905260240161063c565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611a4993906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611a63573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a8a9190810190614b75565b6040518263ffffffff1660e01b8152600401611aa69190614ba6565b6020604051808303815f875af1158015611ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae69190614bb8565b5050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f8051602061567c8339815191529190611b3490614a32565b90505f03611b585760405163089938b360e11b81526004810183905260240161063c565b60015f83815260078301602052604090205460ff166005811115611b7e57611b7e6148d2565b14611bb1575f8281526007820160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611bea91906004016150ff565b6020604051808303815f875af1158015611c06573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106459190614bb8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611c73575080546001600160401b03808416911610155b15611c915760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611cbb83613093565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f611d10612856565b611d1b8233346130a4565b9050611d3360015f805160206156bc83398151915255565b919050565b611d406146cb565b5f8281525f805160206156dc833981519152602052604090819020815160e0810190925280545f8051602061567c833981519152929190829060ff166005811115611d8d57611d8d6148d2565b6005811115611d9e57611d9e6148d2565b8152602001600182018054611db290614a32565b80601f0160208091040260200160405190810160405280929190818152602001828054611dde90614a32565b8015611e295780601f10611e0057610100808354040283529160200191611e29565b820191905f5260205f20905b815481529060010190602001808311611e0c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f8051602061567c833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611eca9086908690615189565b90815260200160405180910390205491505092915050565b5f8381525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c8339815191529284929091829060ff166003811115611f3057611f306148d2565b6003811115611f4157611f416148d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611fb782611d38565b9050600283516003811115611fce57611fce6148d2565b14611fef578251604051633b0d540d60e21b815261063c9190600401615082565b60208301516001600160a01b0316331461208b575f8281526005850160205260409020546001600160a01b0316331461202857336115fe565b5f82815260058501602052604090205460a082015161205791600160b01b90046001600160401b031690615198565b6001600160401b031642101561208b5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b6002815160058111156120a0576120a06148d2565b036121ce57600284015460808401516120c2916001600160401b031690615198565b6001600160401b03164210156120f65760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b8615612108576121068287612384565b505b5f8881526006850160205260409020805460ff191660031790556060830151608082015161214191849161213c91906151b8565b6132e7565b505f898152600686016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155612182846134be565b5f8a81526007870160205260408082208390555191925084918b917f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5791a31515945061187b9350505050565b6004815160058111156121e3576121e36148d2565b03612217576121f1836134be565b5f89815260078601602052604090205561220a88612cc4565b600194505050505061187b565b805160405163170cc93360e21b815261063c9190600401614a64565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612297573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122be91908101906151d8565b91509150806122e057604051636b2f19e960e01b815260040160405180910390fd5b815115612306578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b031615612342576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5092915050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156123cf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123f691908101906151d8565b915091508061241857604051636b2f19e960e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247f9190614bb8565b8251146124a5578151604051636ba589a560e01b8152600481019190915260240161063c565b60208201516001600160a01b0316156124e1576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161063c565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246385604001516040518263ffffffff1660e01b815260040161251e9190614ba6565b6040805180830381865af4158015612538573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255c9190615268565b915091508187146125835760405163089938b360e11b81526004810188905260240161063c565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020600101545f8051602061565c833981519152906001600160401b039081169083161115612640575f888152600582016020908152604091829020600101805467ffffffffffffffff19166001600160401b038616908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a261265f565b5f8881526005820160205260409020600101546001600160401b031691505b509695505050505050565b5f5f8051602061565c833981519152816126838661365b565b905061268e86612349565b61269d5760019250505061187b565b5f8681526005830160205260409020546001600160a01b031633146126c257336115fe565b5f86815260058301602052604090205460a08201516126f191600160b01b90046001600160401b031690615198565b6001600160401b03168160c001516001600160401b031610156127385760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161063c565b5f8515612750576127498786612384565b905061276e565b505f8681526005830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612793906112d3565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156127fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128209190614bb8565b905080846008015f8a81526020019081526020015f205f8282546128449190614e61565b90915550501515979650505050505050565b5f805160206156bc83398151915280546001190161288757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6128966146cb565b5f8051602061567c8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6128c988612233565b604001516040518263ffffffff1660e01b81526004016128e99190614ba6565b6040805180830381865af4158015612903573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292791906150d1565b91509150801561294e57604051632d07135360e01b8152811515600482015260240161063c565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561297f5761297f6148d2565b6005811115612990576129906148d2565b81526020016001820180546129a490614a32565b80601f01602080910402602001604051908101604052809291908181526020018280546129d090614a32565b8015612a1b5780601f106129f257610100808354040283529160200191612a1b565b820191905f5260205f20905b8154815290600101906020018083116129fe57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612a8657612a866148d2565b14158015612aa75750600181516005811115612aa457612aa46148d2565b14155b15612ac857805160405163170cc93360e21b815261063c9190600401614a64565b600381516005811115612add57612add6148d2565b03612aeb5760048152612af0565b600581525b836008018160200151604051612b069190614d3d565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612b4a57612b4a6148d2565b021790555060208201516001820190612b639082614d92565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612c0957612c096148d2565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612c8c575f80fd5b505af115801561112a573d5f803e3d5ffd5b61158a6001600160a01b0383168261393f565b60015f805160206156bc83398151915255565b5f8181525f8051602061569c8339815191526020526040808220815160e0810190925280545f8051602061565c83398151915293929190829060ff166003811115612d1157612d116148d2565b6003811115612d2257612d226148d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612dbf7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612dce9190615198565b6001600160401b0316421015612e025760405163fb6ce63f60e01b81526001600160401b034216600482015260240161063c565b5f848152600684016020908152604080832080546001600160a81b03191681556001810184905560020183905560078601909152812080549082905590808215612ebd575f84815260058701602052604090205461271090612e6f90600160a01b900461ffff1685614e96565b612e799190615063565b915081866008015f8681526020019081526020015f205f828254612e9d9190614e61565b90915550612ead9050828461528b565b9050612ebd856020015182612c40565b612ed28560200151610fd887606001516112d3565b6040805182815260208101849052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d02545f905f8051602061565c83398151915290600160401b900461ffff9081169086161080612f6c575061271061ffff8616115b15612f9057604051635f12e6c360e11b815261ffff8616600482015260240161063c565b60028101546001600160401b039081169085161015612fcc576040516202a06d60e11b81526001600160401b038516600482015260240161063c565b8054831080612fde5750806001015483115b15612fff5760405163222d164360e21b81526004810184905260240161063c565b825f61300a82610ed5565b90505f61301789836139d2565b5f818152600595909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b61309b613ef7565b610ff881613f42565b5f5f8051602061565c833981519152816130bd84610ed5565b90505f6130c987611d38565b90506130d487612349565b6130f4576040516330efa98b60e01b81526004810188905260240161063c565b600281516005811115613109576131096148d2565b1461312a57805160405163170cc93360e21b815261063c9190600401614a64565b5f82826080015161313b9190615198565b905083600201600a9054906101000a90046001600160401b03168260400151613164919061529e565b6001600160401b0316816001600160401b031611156131a157604051636d51fe0560e11b81526001600160401b038216600482015260240161063c565b5f806131ad8a846132e7565b915091505f8a836040516020016131db92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260068b019093529120805491925060019160ff1916828002179055505f8181526006880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b5f8281525f805160206156dc833981519152602052604081206002015481905f8051602061567c83398151915290600160801b90046001600160401b031661332f8582613fb6565b5f613339876141d9565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156133e2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134099190810190614b75565b6040518263ffffffff1660e01b81526004016134259190614ba6565b6020604051808303815f875af1158015613441573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134659190614bb8565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f805f8051602061565c83398151915290505f6134de8460400151611d38565b90505f6003825160058111156134f6576134f66148d2565b14806135145750600482516005811115613512576135126148d2565b145b15613524575060c0810151613561565b600282516005811115613539576135396148d2565b03613545575042613561565b815160405163170cc93360e21b815261063c9190600401614a64565b84608001516001600160401b0316816001600160401b03161161358857505f949350505050565b600483015460608601516001600160a01b0390911690634f22429f906135ad906112d3565b60a085015160808901516040808b01515f90815260058a0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818616606484015216608482015260a401602060405180830381865afa15801561362e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136529190614bb8565b95945050505050565b6136636146cb565b5f8281525f805160206156dc8339815191526020526040808220815160e0810190925280545f8051602061567c83398151915293929190829060ff1660058111156136b0576136b06148d2565b60058111156136c1576136c16148d2565b81526020016001820180546136d590614a32565b80601f016020809104026020016040519081016040528092919081815260200182805461370190614a32565b801561374c5780601f106137235761010080835404028352916020019161374c565b820191905f5260205f20905b81548152906001019060200180831161372f57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156137ba576137ba6148d2565b146137ed575f8481526007830160205260409081902054905163170cc93360e21b815261063c9160ff1690600401614a64565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613831576138316148d2565b02179055506020820151600182019061384a9082614d92565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6138e885826132e7565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b804710156139625760405163cd78605960e01b815230600482015260240161063c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146139ab576040519150601f19603f3d011682016040523d82523d5f602084013e6139b0565b606091505b505090508061064557604051630a12f52160e11b815260040160405180910390fd5b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613a1657604051637fab81e560e01b815260040160405180910390fd5b5f8051602061567c83398151915242613a35606086016040870161482e565b6001600160401b0316111580613a6f5750613a536202a30042614e61565b613a63606086016040870161482e565b6001600160401b031610155b15613aa957613a84606085016040860161482e565b604051635879da1360e11b81526001600160401b03909116600482015260240161063c565b613abe613ab960608601866152c9565b61424e565b613ace613ab960808601866152c9565b6030613add60208601866152dd565b905014613b0f57613af160208501856152dd565b6040516326475b2f60e11b815261063c925060040190815260200190565b613b1984806152dd565b90505f03613b4657613b2b84806152dd565b604051633e08a12560e11b815260040161063c92919061531f565b5f60088201613b5586806152dd565b604051613b63929190615189565b90815260200160405180910390205414613b9c57613b8184806152dd565b60405163a41f772f60e01b815260040161063c92919061531f565b613ba6835f613fb6565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613be38a806152dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613c2b908b018b6152dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613c7460608b0160408c0161482e565b6001600160401b03168152602001613c8f60608b018b6152c9565b613c9890615332565b8152602001613caa60808b018b6152c9565b613cb390615332565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613ce19190615454565b5f60405180830381865af4158015613cfb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d22919081019061550b565b5f82815260068601602052604090209193509150613d408282614d92565b508160088401613d5088806152dd565b604051613d5e929190615189565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613d9a908590600401614ba6565b6020604051808303815f875af1158015613db6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dda9190614bb8565b5f8481526007860160205260409020805460ff191660011790559050613e0087806152dd565b5f858152600787016020526040902060010191613e1e91908361554e565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613e7d88806152dd565b604051613e8b929190615189565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613ec9919061482e565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613f4057604051631afcd79f60e31b815260040160405180910390fd5b565b613f4a613ef7565b613f53816143b7565b613f5b6143d0565b610ff860608201356080830135613f7860c0850160a0860161482e565b613f8860e0860160c08701615607565b613f99610100870160e08801615620565b610100870135613fb161014089016101208a01614be3565b6143e0565b5f8051602061567c8339815191525f6001600160401b038084169085161115613fea57613fe383856151b8565b9050613ff7565b613ff484846151b8565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580614059575060018401548151614055916001600160401b031690614e61565b8210155b1561407f576001600160401b03831660608201528181526040810151602082015261409e565b82816060018181516140919190615198565b6001600160401b03169052505b60608101516140ae90606461529e565b602082015160018601546001600160401b0392909216916140d99190600160401b900460ff16614e96565b101561410957606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161063c565b856001600160401b0316816040018181516141249190614e61565b9052506040810180516001600160401b038716919061414490839061528b565b9052506001840154604082015160649161416991600160401b90910460ff1690614e96565b1015614190578060400151604051635943317f60e01b815260040161063c91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f805160206156dc8339815191526020526040812060020180545f8051602061567c833981519152919060089061422390600160401b90046001600160401b0316615640565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b61425b6020820182614801565b63ffffffff1615801561427b57506142766020820182614bfe565b151590505b156142c25761428d6020820182614801565b61429a6020830183614bfe565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161063c565b6142cf6020820182614bfe565b90506142de6020830183614801565b63ffffffff1611156142f75761428d6020820182614801565b60015b6143076020830183614bfe565b905081101561158a5761431d6020830183614bfe565b61432860018461528b565b81811061433757614337614c43565b905060200201602081019061434c9190614be3565b6001600160a01b03166143626020840184614bfe565b8381811061437257614372614c43565b90506020020160208101906143879190614be3565b6001600160a01b031610156143af57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016142fa565b6143bf613ef7565b6143c761459c565b610ff8816145a4565b6143d8613ef7565b613f4061468c565b6143e8613ef7565b5f8051602061565c83398151915261ffff8516158061440c575061271061ffff8616115b1561443057604051635f12e6c360e11b815261ffff8616600482015260240161063c565b868811156144545760405163222d164360e21b81526004810189905260240161063c565b60ff841615806144675750600a60ff8516115b1561448a5760405163170db35960e31b815260ff8516600482015260240161063c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316866001600160401b031610156144f1576040516202a06d60e11b81526001600160401b038716600482015260240161063c565b825f036145115760405163a733007160e01b815260040160405180910390fd5b96875560018701959095556002860180546001600160401b039590951669ffffffffffffffffffff1990951694909417600160401b61ffff94909416939093029290921767ffffffffffffffff60501b191660ff91909116600160501b02179091556003830155600490910180546001600160a01b0319166001600160a01b03909216919091179055565b613f40613ef7565b6145ac613ef7565b80355f8051602061567c83398151915290815560146145d16060840160408501615620565b60ff1611806145f057506145eb6060830160408401615620565b60ff16155b15614624576146056060830160408401615620565b604051634a59bbff60e11b815260ff909116600482015260240161063c565b6146346060830160408401615620565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614665604083016020840161482e565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612cb1613ef7565b5080546146a090614a32565b5f825580601f106146af575050565b601f0160209004905f5260205f2090810190610ff89190614708565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b8082111561471c575f8155600101614709565b5090565b8015158114610ff8575f80fd5b803563ffffffff81168114611d33575f80fd5b5f805f60608486031215614752575f80fd5b83359250602084013561476481614720565b91506147726040850161472d565b90509250925092565b5f6020828403121561478b575f80fd5b5035919050565b5f80604083850312156147a3575f80fd5b82356001600160401b038111156147b8575f80fd5b8301608081860312156147c9575f80fd5b91506147d76020840161472d565b90509250929050565b5f80604083850312156147f1575f80fd5b823591506147d76020840161472d565b5f60208284031215614811575f80fd5b61187b8261472d565b6001600160401b0381168114610ff8575f80fd5b5f6020828403121561483e575f80fd5b813561187b8161481a565b803561ffff81168114611d33575f80fd5b5f805f6060848603121561486c575f80fd5b83356001600160401b03811115614881575f80fd5b840160a08187031215614892575f80fd5b92506148a060208501614849565b915060408401356148b08161481a565b809150509250925092565b5f61014082840312156148cc575f80fd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b600681106148f6576148f66148d2565b9052565b5f5b838110156149145781810151838201526020016148fc565b50505f910152565b5f81518084526149338160208601602086016148fa565b601f01601f19169290920160200192915050565b602081526149596020820183516148e6565b5f602083015160e0604084015261497461010084018261491c565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156149d8575f80fd5b82356001600160401b03808211156149ee575f80fd5b818501915085601f830112614a01575f80fd5b813581811115614a0f575f80fd5b866020828501011115614a20575f80fd5b60209290920196919550909350505050565b600181811c90821680614a4657607f821691505b6020821081036148cc57634e487b7160e01b5f52602260045260245ffd5b60208101610f2982846148e6565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614aa857614aa8614a72565b60405290565b604080519081016001600160401b0381118282101715614aa857614aa8614a72565b604051601f8201601f191681016001600160401b0381118282101715614af857614af8614a72565b604052919050565b5f6001600160401b03821115614b1857614b18614a72565b50601f01601f191660200190565b5f82601f830112614b35575f80fd5b8151614b48614b4382614b00565b614ad0565b818152846020838601011115614b5c575f80fd5b614b6d8260208301602087016148fa565b949350505050565b5f60208284031215614b85575f80fd5b81516001600160401b03811115614b9a575f80fd5b614b6d84828501614b26565b602081525f61187b602083018461491c565b5f60208284031215614bc8575f80fd5b5051919050565b6001600160a01b0381168114610ff8575f80fd5b5f60208284031215614bf3575f80fd5b813561187b81614bcf565b5f808335601e19843603018112614c13575f80fd5b8301803591506001600160401b03821115614c2c575f80fd5b6020019150600581901b36038213156134b7575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112614c6b575f80fd5b9190910192915050565b5f82601f830112614c84575f80fd5b8135614c92614b4382614b00565b818152846020838601011115614ca6575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215614cd2575f80fd5b614cda614a86565b82356001600160401b0380821115614cf0575f80fd5b614cfc36838701614c75565b83526020850135915080821115614d11575f80fd5b50614d1e36828601614c75565b6020830152506040830135614d328161481a565b604082015292915050565b5f8251614c6b8184602087016148fa565b601f82111561064557805f5260205f20601f840160051c81016020851015614d735750805b601f840160051c820191505b81811015611ae6575f8155600101614d7f565b81516001600160401b03811115614dab57614dab614a72565b614dbf81614db98454614a32565b84614d4e565b602080601f831160018114614df2575f8415614ddb5750858301515b5f19600386901b1c1916600185901b17855561112a565b5f85815260208120601f198616915b82811015614e2057888601518255948401946001909101908401614e01565b5085821015614e3d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610f2957610f29614e4d565b5f63ffffffff808316818103614e8c57614e8c614e4d565b6001019392505050565b8082028115828204841417610f2957610f29614e4d565b5f808335601e19843603018112614ec2575f80fd5b83016020810192503590506001600160401b03811115614ee0575f80fd5b8036038213156134b7575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015614fcb57848303601f19018952813536889003605e19018112614f52575f80fd5b87016060614f608280614ead565b828752614f708388018284614eee565b92505050614f8086830183614ead565b86830388880152614f92838284614eee565b925050506040808301359250614fa78361481a565b6001600160401b039290921694909101939093529783019790830190600101614f2d565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135614ffc81614bcf565b6001600160a01b031660608381019190915283013536849003601e19018112615023575f80fd5b83016020810190356001600160401b0381111561503e575f80fd5b8060051b360382131561504f575f80fd5b60808085015261365260a085018284614f16565b5f8261507d57634e487b7160e01b5f52601260045260245ffd5b500490565b6020810160048310615096576150966148d2565b91905290565b5f805f606084860312156150ae575f80fd5b8351925060208401516150c08161481a565b60408501519092506148b08161481a565b5f80604083850312156150e2575f80fd5b8251915060208301516150f481614720565b809150509250929050565b5f60208083525f845461511181614a32565b806020870152604060018084165f8114615132576001811461514e5761517b565b60ff19851660408a0152604084151560051b8a0101955061517b565b895f5260205f205f5b858110156151725781548b8201860152908301908801615157565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0381811683821601908082111561234257612342614e4d565b6001600160401b0382811682821603908082111561234257612342614e4d565b5f80604083850312156151e9575f80fd5b82516001600160401b03808211156151ff575f80fd5b9084019060608287031215615212575f80fd5b61521a614a86565b82518152602083015161522c81614bcf565b6020820152604083015182811115615242575f80fd5b61524e88828601614b26565b60408301525080945050505060208301516150f481614720565b5f8060408385031215615279575f80fd5b8251915060208301516150f48161481a565b81810381811115610f2957610f29614e4d565b6001600160401b038181168382160280821691908281146152c1576152c1614e4d565b505092915050565b5f8235603e19833603018112614c6b575f80fd5b5f808335601e198436030181126152f2575f80fd5b8301803591506001600160401b0382111561530b575f80fd5b6020019150368190038213156134b7575f80fd5b602081525f614b6d602083018486614eee565b5f60408236031215615342575f80fd5b61534a614aae565b6153538361472d565b81526020808401356001600160401b038082111561536f575f80fd5b9085019036601f830112615381575f80fd5b81358181111561539357615393614a72565b8060051b91506153a4848301614ad0565b81815291830184019184810190368411156153bd575f80fd5b938501935b838510156153e757843592506153d783614bcf565b82825293850193908501906153c2565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561265f5784516001600160a01b0316825293830193600192909201919083019061542b565b60208152815160208201525f602083015160e0604084015261547a61010084018261491c565b90506040840151601f1980858403016060860152615498838361491c565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526154c883836153f9565b925060a08601519150808584030160c0860152506154e682826153f9565b91505060c084015161550360e08501826001600160401b03169052565b509392505050565b5f806040838503121561551c575f80fd5b8251915060208301516001600160401b03811115615538575f80fd5b61554485828601614b26565b9150509250929050565b6001600160401b0383111561556557615565614a72565b615579836155738354614a32565b83614d4e565b5f601f8411600181146155aa575f85156155935750838201355b5f19600387901b1c1916600186901b178355611ae6565b5f83815260208120601f198716915b828110156155d957868501358255602094850194600190920191016155b9565b50868210156155f5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215615617575f80fd5b61187b82614849565b5f60208284031215615630575f80fd5b813560ff8116811461187b575f80fd5b5f6001600160401b03808316818103614e8c57614e8c614e4d56fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d069b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a26469706673582212205feacdf9b91fa3810cab46ea0fd6546fcbfdada3a39a5afb8eb010226337b95d64736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -2997,7 +2997,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValida // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212209002d6aad56d491f0ed777036244a5391c34cb570ba57a1d14e5c16063c55e2e64736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220427b16ca5e2abe4960f5b859780a2eb475e9509f2f5b05fb0ffcb2156069896d64736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 24151bdfc..6052d8083 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -91,7 +91,7 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161374f38038061374f83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6136028061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461273a565b610312565b005b610149610159366004612769565b6105a2565b61014961016c3660046127b7565b610b27565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461273a565b610b35565b6040516001600160401b03909116815260200161018a565b610149610b49565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461273a565b610b5c565b6101cd61025a3660046127e6565b610b71565b61014961026d3660046127b7565b610b8d565b6102216005600160991b0181565b6101cd5f8051602061358d83398151915281565b6101496102a236600461273a565b610d82565b6101e3601481565b6101496102bd36600461283f565b610ebf565b6102d56102d036600461273a565b610fcd565b60405161018a91906128fc565b6101a66202a30081565b6101496102fa36600461297c565b61111c565b6101cd61030d36600461299e565b611159565b5f8181525f805160206135ad8339815191526020526040808220815160e0810190925280545f8051602061358d83398151915293929190829060ff16600581111561035f5761035f61287b565b60058111156103705761037061287b565b815260200160018201805461038490612a09565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612a09565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104665761046661287b565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612b52565b6040518263ffffffff1660e01b815260040161055c9190612b83565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612b95565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061358d8339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612b95565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b30610695606085016040860161297c565b6001600160a01b0316146106d8576106b3606084016040850161297c565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612bac565b905090505f805b828163ffffffff16101561094d575f6107096060880188612bac565b8363ffffffff1681811061071f5761071f612bf1565b90506020028101906107319190612c05565b61073a90612c70565b80516040519192505f91600888019161075291612ce9565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612b83565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612ce9565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612b95565b90508086600801835f01516040516108219190612ce9565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff1916600217815582516001909101906108619082612d45565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff191690556108e09085612e18565b82516040519195506108f191612ce9565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a350508061094690612e2b565b90506106ed565b5060048301819055600183015460649061097190600160401b900460ff1683612e4d565b101561099357604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d8478846109b7876111b4565b604001516040518263ffffffff1660e01b81526004016109d79190612b83565b602060405180830381865af41580156109f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190612b95565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610a509190612f87565b5f60405180830381865af4158015610a6a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a919190810190612b52565b90505f600282604051610aa49190612ce9565b602060405180830381855afa158015610abf573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ae29190612b95565b9050828114610b0e5760405163baaea89d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610b30816112ca565b505050565b5f610b3f82610fcd565b6080015192915050565b610b5161167d565b610b5a5f6116d8565b565b610b6461167d565b610b6d81611748565b5050565b5f610b7a61167d565b610b848383611a2c565b90505b92915050565b5f8051602061358d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f610bc0866111b4565b604001516040518263ffffffff1660e01b8152600401610be09190612b83565b6040805180830381865af4158015610bfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1e919061302a565b9150915080610c4457604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610c5e90612a09565b90505f03610c825760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610ca857610ca861287b565b14610cdb575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b5f8281526006840160205260408120610cf3916126ae565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f8051602061358d8339815191529190610dc990612a09565b90505f03610ded5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e1357610e1361287b565b14610e46575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610e7f919060040161304b565b6020604051808303815f875af1158015610e9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190612b95565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f035750825b90505f826001600160401b03166001148015610f1e5750303b155b905081158015610f2c575080155b15610f4a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f7457845460ff60401b1916600160401b1785555b610f7e8787611f51565b8315610fc457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610fd56126e5565b5f8281525f805160206135ad833981519152602052604090819020815160e0810190925280545f8051602061358d833981519152929190829060ff1660058111156110225761102261287b565b60058111156110335761103361287b565b815260200160018201805461104790612a09565b80601f016020809104026020016040519081016040528092919081815260200182805461107390612a09565b80156110be5780601f10611095576101008083540402835291602001916110be565b820191905f5260205f20905b8154815290600101906020018083116110a157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b61112461167d565b6001600160a01b03811661114d57604051631e4fbdf760e01b81525f6004820152602401610499565b611156816116d8565b50565b6040515f905f8051602061358d833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061119c90869086906130d5565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611218573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261123f91908101906130e4565b915091508061126157604051636b2f19e960e01b815260040160405180910390fd5b815115611287578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b0316156112c3576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f6112d36126e5565b5f8051602061358d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611306886111b4565b604001516040518263ffffffff1660e01b81526004016113269190612b83565b6040805180830381865af4158015611340573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611364919061302a565b91509150801561138b57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156113bc576113bc61287b565b60058111156113cd576113cd61287b565b81526020016001820180546113e190612a09565b80601f016020809104026020016040519081016040528092919081815260200182805461140d90612a09565b80156114585780601f1061142f57610100808354040283529160200191611458565b820191905f5260205f20905b81548152906001019060200180831161143b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156114c3576114c361287b565b141580156114e457506001815160058111156114e1576114e161287b565b14155b1561150557805160405163170cc93360e21b81526104999190600401612a41565b60038151600581111561151a5761151a61287b565b03611528576004815261152d565b600581525b8360080181602001516040516115439190612ce9565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156115875761158761287b565b0217905550602082015160018201906115a09082612d45565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116465761164661287b565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336116af7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b5a5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117506126e5565b5f8281525f805160206135ad8339815191526020526040808220815160e0810190925280545f8051602061358d83398151915293929190829060ff16600581111561179d5761179d61287b565b60058111156117ae576117ae61287b565b81526020016001820180546117c290612a09565b80601f01602080910402602001604051908101604052809291908181526020018280546117ee90612a09565b80156118395780601f1061181057610100808354040283529160200191611839565b820191905f5260205f20905b81548152906001019060200180831161181c57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156118a7576118a761287b565b146118da575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561191e5761191e61287b565b0217905550602082015160018201906119379082612d45565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6119d58582611f6b565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611a7057604051637fab81e560e01b815260040160405180910390fd5b5f8051602061358d83398151915242611a8f6060860160408701613171565b6001600160401b0316111580611ac95750611aad6202a30042612e18565b611abd6060860160408701613171565b6001600160401b031610155b15611b0357611ade6060850160408601613171565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b18611b13606086018661318a565b612142565b611b28611b13608086018661318a565b6030611b37602086018661319e565b905014611b6957611b4b602085018561319e565b6040516326475b2f60e11b8152610499925060040190815260200190565b611b73848061319e565b90505f03611ba057611b85848061319e565b604051633e08a12560e11b81526004016104999291906131e0565b5f60088201611baf868061319e565b604051611bbd9291906130d5565b90815260200160405180910390205414611bf657611bdb848061319e565b60405163a41f772f60e01b81526004016104999291906131e0565b611c00835f6122ab565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611c3d8a8061319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611c85908b018b61319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611cce60608b0160408c01613171565b6001600160401b03168152602001611ce960608b018b61318a565b611cf2906131f3565b8152602001611d0460808b018b61318a565b611d0d906131f3565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611d3b9190613320565b5f60405180830381865af4158015611d55573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d7c91908101906133d7565b5f82815260068601602052604090209193509150611d9a8282612d45565b508160088401611daa888061319e565b604051611db89291906130d5565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611df4908590600401612b83565b6020604051808303815f875af1158015611e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e349190612b95565b5f8481526007860160205260409020805460ff191660011790559050611e5a878061319e565b5f858152600787016020526040902060010191611e7891908361341a565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611ed7888061319e565b604051611ee59291906130d5565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190611f239190613171565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b611f596124ce565b611f6282612517565b610b6d81612530565b5f8281525f805160206135ad833981519152602052604081206002015481905f8051602061358d83398151915290600160801b90046001600160401b0316611fb385826122ab565b5f611fbd87612541565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015612066573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261208d9190810190612b52565b6040518263ffffffff1660e01b81526004016120a99190612b83565b6020604051808303815f875af11580156120c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e99190612b95565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61214f60208201826127b7565b63ffffffff1615801561216f575061216a6020820182612bac565b151590505b156121b65761218160208201826127b7565b61218e6020830183612bac565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6121c36020820182612bac565b90506121d260208301836127b7565b63ffffffff1611156121eb5761218160208201826127b7565b60015b6121fb6020830183612bac565b9050811015610b6d576122116020830183612bac565b61221c6001846134d3565b81811061222b5761222b612bf1565b9050602002016020810190612240919061297c565b6001600160a01b03166122566020840184612bac565b8381811061226657612266612bf1565b905060200201602081019061227b919061297c565b6001600160a01b031610156122a357604051630dbc8d5f60e31b815260040160405180910390fd5b6001016121ee565b5f8051602061358d8339815191525f6001600160401b0380841690851611156122df576122d883856134e6565b90506122ec565b6122e984846134e6565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061234e57506001840154815161234a916001600160401b031690612e18565b8210155b15612374576001600160401b038316606082015281815260408101516020820152612393565b82816060018181516123869190613506565b6001600160401b03169052505b60608101516123a3906064613526565b602082015160018601546001600160401b0392909216916123ce9190600160401b900460ff16612e4d565b10156123fe57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b0316816040018181516124199190612e18565b9052506040810180516001600160401b03871691906124399083906134d3565b9052506001840154604082015160649161245e91600160401b90910460ff1690612e4d565b1015612485578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5a57604051631afcd79f60e31b815260040160405180910390fd5b61251f6124ce565b6125276125b6565b611156816125be565b6125386124ce565b611156816126a6565b5f8181525f805160206135ad8339815191526020526040812060020180545f8051602061358d833981519152919060089061258b90600160401b90046001600160401b0316613551565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610b5a6124ce565b6125c66124ce565b80355f8051602061358d83398151915290815560146125eb606084016040850161356c565b60ff16118061260a5750612605606083016040840161356c565b60ff16155b1561263e5761261f606083016040840161356c565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61264e606083016040840161356c565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561267f6040830160208401613171565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111246124ce565b5080546126ba90612a09565b5f825580601f106126c9575050565b601f0160209004905f5260205f20908101906111569190612722565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612736575f8155600101612723565b5090565b5f6020828403121561274a575f80fd5b5035919050565b803563ffffffff81168114612764575f80fd5b919050565b5f806040838503121561277a575f80fd5b82356001600160401b0381111561278f575f80fd5b8301608081860312156127a0575f80fd5b91506127ae60208401612751565b90509250929050565b5f602082840312156127c7575f80fd5b610b8482612751565b80356001600160401b0381168114612764575f80fd5b5f80604083850312156127f7575f80fd5b82356001600160401b0381111561280c575f80fd5b830160a0818603121561281d575f80fd5b91506127ae602084016127d0565b6001600160a01b0381168114611156575f80fd5b5f808284036080811215612851575f80fd5b606081121561285e575f80fd5b5082915060608301356128708161282b565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106128ab57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b838110156128c95781810151838201526020016128b1565b50505f910152565b5f81518084526128e88160208601602086016128af565b601f01601f19169290920160200192915050565b6020815261290e60208201835161288f565b5f602083015160e060408401526129296101008401826128d1565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f6020828403121561298c575f80fd5b81356129978161282b565b9392505050565b5f80602083850312156129af575f80fd5b82356001600160401b03808211156129c5575f80fd5b818501915085601f8301126129d8575f80fd5b8135818111156129e6575f80fd5b8660208285010111156129f7575f80fd5b60209290920196919550909350505050565b600181811c90821680612a1d57607f821691505b602082108103612a3b57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610b87828461288f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612a8557612a85612a4f565b60405290565b604080519081016001600160401b0381118282101715612a8557612a85612a4f565b604051601f8201601f191681016001600160401b0381118282101715612ad557612ad5612a4f565b604052919050565b5f6001600160401b03821115612af557612af5612a4f565b50601f01601f191660200190565b5f82601f830112612b12575f80fd5b8151612b25612b2082612add565b612aad565b818152846020838601011115612b39575f80fd5b612b4a8260208301602087016128af565b949350505050565b5f60208284031215612b62575f80fd5b81516001600160401b03811115612b77575f80fd5b612b4a84828501612b03565b602081525f610b8460208301846128d1565b5f60208284031215612ba5575f80fd5b5051919050565b5f808335601e19843603018112612bc1575f80fd5b8301803591506001600160401b03821115612bda575f80fd5b6020019150600581901b360382131561213b575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612c19575f80fd5b9190910192915050565b5f82601f830112612c32575f80fd5b8135612c40612b2082612add565b818152846020838601011115612c54575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612c80575f80fd5b612c88612a63565b82356001600160401b0380821115612c9e575f80fd5b612caa36838701612c23565b83526020850135915080821115612cbf575f80fd5b50612ccc36828601612c23565b602083015250612cde604084016127d0565b604082015292915050565b5f8251612c198184602087016128af565b601f821115610b3057805f5260205f20601f840160051c81016020851015612d1f5750805b601f840160051c820191505b81811015612d3e575f8155600101612d2b565b5050505050565b81516001600160401b03811115612d5e57612d5e612a4f565b612d7281612d6c8454612a09565b84612cfa565b602080601f831160018114612da5575f8415612d8e5750858301515b5f19600386901b1c1916600185901b178555612dfc565b5f85815260208120601f198616915b82811015612dd357888601518255948401946001909101908401612db4565b5085821015612df057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b8757610b87612e04565b5f63ffffffff808316818103612e4357612e43612e04565b6001019392505050565b8082028115828204841417610b8757610b87612e04565b5f808335601e19843603018112612e79575f80fd5b83016020810192503590506001600160401b03811115612e97575f80fd5b80360382131561213b575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015612f7a57848303601f19018952813536889003605e19018112612f09575f80fd5b87016060612f178280612e64565b828752612f278388018284612ea5565b92505050612f3786830183612e64565b86830388880152612f49838284612ea5565b9250505060406001600160401b03612f628285016127d0565b16950194909452509783019790830190600101612ee4565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135612fab8161282b565b6001600160a01b031660608381019190915283013536849003601e19018112612fd2575f80fd5b83016020810190356001600160401b03811115612fed575f80fd5b8060051b3603821315612ffe575f80fd5b60808085015261301260a085018284612ecd565b95945050505050565b80518015158114612764575f80fd5b5f806040838503121561303b575f80fd5b825191506127ae6020840161301b565b5f60208083525f845461305d81612a09565b806020870152604060018084165f811461307e576001811461309a576130c7565b60ff19851660408a0152604084151560051b8a010195506130c7565b895f5260205f205f5b858110156130be5781548b82018601529083019088016130a3565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f80604083850312156130f5575f80fd5b82516001600160401b038082111561310b575f80fd5b908401906060828703121561311e575f80fd5b613126612a63565b8251815260208301516131388161282b565b602082015260408301518281111561314e575f80fd5b61315a88828601612b03565b60408301525093506127ae9150506020840161301b565b5f60208284031215613181575f80fd5b610b84826127d0565b5f8235603e19833603018112612c19575f80fd5b5f808335601e198436030181126131b3575f80fd5b8301803591506001600160401b038211156131cc575f80fd5b60200191503681900382131561213b575f80fd5b602081525f612b4a602083018486612ea5565b5f60408236031215613203575f80fd5b61320b612a8b565b61321483612751565b81526020808401356001600160401b0380821115613230575f80fd5b9085019036601f830112613242575f80fd5b81358181111561325457613254612a4f565b8060051b9150613265848301612aad565b818152918301840191848101903684111561327e575f80fd5b938501935b838510156132a857843592506132988361282b565b8282529385019390850190613283565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156133155784516001600160a01b031682529383019360019290920191908301906132ec565b509695505050505050565b60208152815160208201525f602083015160e060408401526133466101008401826128d1565b90506040840151601f198085840301606086015261336483836128d1565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261339483836132ba565b925060a08601519150808584030160c0860152506133b282826132ba565b91505060c08401516133cf60e08501826001600160401b03169052565b509392505050565b5f80604083850312156133e8575f80fd5b8251915060208301516001600160401b03811115613404575f80fd5b61341085828601612b03565b9150509250929050565b6001600160401b0383111561343157613431612a4f565b6134458361343f8354612a09565b83612cfa565b5f601f841160018114613476575f851561345f5750838201355b5f19600387901b1c1916600186901b178355612d3e565b5f83815260208120601f198716915b828110156134a55786850135825560209485019460019092019101613485565b50868210156134c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610b8757610b87612e04565b6001600160401b038281168282160390808211156112c3576112c3612e04565b6001600160401b038181168382160190808211156112c3576112c3612e04565b6001600160401b0381811683821602808216919082811461354957613549612e04565b505092915050565b5f6001600160401b03808316818103612e4357612e43612e04565b5f6020828403121561357c575f80fd5b813560ff81168114612997575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220b0508795a0592c2f08e1f760633fd223e57fbdbb738fc86c46959eb0faa1ff4864736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b5060405161374f38038061374f83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6136028061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461273a565b610312565b005b610149610159366004612769565b6105a2565b61014961016c3660046127b7565b610b27565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461273a565b610b35565b6040516001600160401b03909116815260200161018a565b610149610b49565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461273a565b610b5c565b6101cd61025a3660046127e6565b610b71565b61014961026d3660046127b7565b610b8d565b6102216005600160991b0181565b6101cd5f8051602061358d83398151915281565b6101496102a236600461273a565b610d82565b6101e3601481565b6101496102bd36600461283f565b610ebf565b6102d56102d036600461273a565b610fcd565b60405161018a91906128fc565b6101a66202a30081565b6101496102fa36600461297c565b61111c565b6101cd61030d36600461299e565b611159565b5f8181525f805160206135ad8339815191526020526040808220815160e0810190925280545f8051602061358d83398151915293929190829060ff16600581111561035f5761035f61287b565b60058111156103705761037061287b565b815260200160018201805461038490612a09565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612a09565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104665761046661287b565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612b52565b6040518263ffffffff1660e01b815260040161055c9190612b83565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612b95565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061358d8339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612b95565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b30610695606085016040860161297c565b6001600160a01b0316146106d8576106b3606084016040850161297c565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612bac565b905090505f805b828163ffffffff16101561094d575f6107096060880188612bac565b8363ffffffff1681811061071f5761071f612bf1565b90506020028101906107319190612c05565b61073a90612c70565b80516040519192505f91600888019161075291612ce9565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612b83565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612ce9565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612b95565b90508086600801835f01516040516108219190612ce9565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff1916600217815582516001909101906108619082612d45565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff191690556108e09085612e18565b82516040519195506108f191612ce9565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a350508061094690612e2b565b90506106ed565b5060048301819055600183015460649061097190600160401b900460ff1683612e4d565b101561099357604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d8478846109b7876111b4565b604001516040518263ffffffff1660e01b81526004016109d79190612b83565b602060405180830381865af41580156109f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190612b95565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610a509190612f87565b5f60405180830381865af4158015610a6a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a919190810190612b52565b90505f600282604051610aa49190612ce9565b602060405180830381855afa158015610abf573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ae29190612b95565b9050828114610b0e5760405163baaea89d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610b30816112ca565b505050565b5f610b3f82610fcd565b6080015192915050565b610b5161167d565b610b5a5f6116d8565b565b610b6461167d565b610b6d81611748565b5050565b5f610b7a61167d565b610b848383611a2c565b90505b92915050565b5f8051602061358d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f610bc0866111b4565b604001516040518263ffffffff1660e01b8152600401610be09190612b83565b6040805180830381865af4158015610bfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1e919061302a565b9150915080610c4457604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610c5e90612a09565b90505f03610c825760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610ca857610ca861287b565b14610cdb575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b5f8281526006840160205260408120610cf3916126ae565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f8051602061358d8339815191529190610dc990612a09565b90505f03610ded5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e1357610e1361287b565b14610e46575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610e7f919060040161304b565b6020604051808303815f875af1158015610e9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190612b95565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f035750825b90505f826001600160401b03166001148015610f1e5750303b155b905081158015610f2c575080155b15610f4a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f7457845460ff60401b1916600160401b1785555b610f7e8787611f51565b8315610fc457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610fd56126e5565b5f8281525f805160206135ad833981519152602052604090819020815160e0810190925280545f8051602061358d833981519152929190829060ff1660058111156110225761102261287b565b60058111156110335761103361287b565b815260200160018201805461104790612a09565b80601f016020809104026020016040519081016040528092919081815260200182805461107390612a09565b80156110be5780601f10611095576101008083540402835291602001916110be565b820191905f5260205f20905b8154815290600101906020018083116110a157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b61112461167d565b6001600160a01b03811661114d57604051631e4fbdf760e01b81525f6004820152602401610499565b611156816116d8565b50565b6040515f905f8051602061358d833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061119c90869086906130d5565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611218573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261123f91908101906130e4565b915091508061126157604051636b2f19e960e01b815260040160405180910390fd5b815115611287578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b0316156112c3576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f6112d36126e5565b5f8051602061358d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611306886111b4565b604001516040518263ffffffff1660e01b81526004016113269190612b83565b6040805180830381865af4158015611340573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611364919061302a565b91509150801561138b57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156113bc576113bc61287b565b60058111156113cd576113cd61287b565b81526020016001820180546113e190612a09565b80601f016020809104026020016040519081016040528092919081815260200182805461140d90612a09565b80156114585780601f1061142f57610100808354040283529160200191611458565b820191905f5260205f20905b81548152906001019060200180831161143b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156114c3576114c361287b565b141580156114e457506001815160058111156114e1576114e161287b565b14155b1561150557805160405163170cc93360e21b81526104999190600401612a41565b60038151600581111561151a5761151a61287b565b03611528576004815261152d565b600581525b8360080181602001516040516115439190612ce9565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156115875761158761287b565b0217905550602082015160018201906115a09082612d45565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116465761164661287b565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336116af7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b5a5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117506126e5565b5f8281525f805160206135ad8339815191526020526040808220815160e0810190925280545f8051602061358d83398151915293929190829060ff16600581111561179d5761179d61287b565b60058111156117ae576117ae61287b565b81526020016001820180546117c290612a09565b80601f01602080910402602001604051908101604052809291908181526020018280546117ee90612a09565b80156118395780601f1061181057610100808354040283529160200191611839565b820191905f5260205f20905b81548152906001019060200180831161181c57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156118a7576118a761287b565b146118da575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561191e5761191e61287b565b0217905550602082015160018201906119379082612d45565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6119d58582611f6b565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611a7057604051637fab81e560e01b815260040160405180910390fd5b5f8051602061358d83398151915242611a8f6060860160408701613171565b6001600160401b0316111580611ac95750611aad6202a30042612e18565b611abd6060860160408701613171565b6001600160401b031610155b15611b0357611ade6060850160408601613171565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b18611b13606086018661318a565b612142565b611b28611b13608086018661318a565b6030611b37602086018661319e565b905014611b6957611b4b602085018561319e565b6040516326475b2f60e11b8152610499925060040190815260200190565b611b73848061319e565b90505f03611ba057611b85848061319e565b604051633e08a12560e11b81526004016104999291906131e0565b5f60088201611baf868061319e565b604051611bbd9291906130d5565b90815260200160405180910390205414611bf657611bdb848061319e565b60405163a41f772f60e01b81526004016104999291906131e0565b611c00835f6122ab565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611c3d8a8061319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611c85908b018b61319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611cce60608b0160408c01613171565b6001600160401b03168152602001611ce960608b018b61318a565b611cf2906131f3565b8152602001611d0460808b018b61318a565b611d0d906131f3565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611d3b9190613320565b5f60405180830381865af4158015611d55573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d7c91908101906133d7565b5f82815260068601602052604090209193509150611d9a8282612d45565b508160088401611daa888061319e565b604051611db89291906130d5565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611df4908590600401612b83565b6020604051808303815f875af1158015611e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e349190612b95565b5f8481526007860160205260409020805460ff191660011790559050611e5a878061319e565b5f858152600787016020526040902060010191611e7891908361341a565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611ed7888061319e565b604051611ee59291906130d5565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190611f239190613171565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b611f596124ce565b611f6282612517565b610b6d81612530565b5f8281525f805160206135ad833981519152602052604081206002015481905f8051602061358d83398151915290600160801b90046001600160401b0316611fb385826122ab565b5f611fbd87612541565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015612066573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261208d9190810190612b52565b6040518263ffffffff1660e01b81526004016120a99190612b83565b6020604051808303815f875af11580156120c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e99190612b95565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61214f60208201826127b7565b63ffffffff1615801561216f575061216a6020820182612bac565b151590505b156121b65761218160208201826127b7565b61218e6020830183612bac565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6121c36020820182612bac565b90506121d260208301836127b7565b63ffffffff1611156121eb5761218160208201826127b7565b60015b6121fb6020830183612bac565b9050811015610b6d576122116020830183612bac565b61221c6001846134d3565b81811061222b5761222b612bf1565b9050602002016020810190612240919061297c565b6001600160a01b03166122566020840184612bac565b8381811061226657612266612bf1565b905060200201602081019061227b919061297c565b6001600160a01b031610156122a357604051630dbc8d5f60e31b815260040160405180910390fd5b6001016121ee565b5f8051602061358d8339815191525f6001600160401b0380841690851611156122df576122d883856134e6565b90506122ec565b6122e984846134e6565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061234e57506001840154815161234a916001600160401b031690612e18565b8210155b15612374576001600160401b038316606082015281815260408101516020820152612393565b82816060018181516123869190613506565b6001600160401b03169052505b60608101516123a3906064613526565b602082015160018601546001600160401b0392909216916123ce9190600160401b900460ff16612e4d565b10156123fe57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b0316816040018181516124199190612e18565b9052506040810180516001600160401b03871691906124399083906134d3565b9052506001840154604082015160649161245e91600160401b90910460ff1690612e4d565b1015612485578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5a57604051631afcd79f60e31b815260040160405180910390fd5b61251f6124ce565b6125276125b6565b611156816125be565b6125386124ce565b611156816126a6565b5f8181525f805160206135ad8339815191526020526040812060020180545f8051602061358d833981519152919060089061258b90600160401b90046001600160401b0316613551565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610b5a6124ce565b6125c66124ce565b80355f8051602061358d83398151915290815560146125eb606084016040850161356c565b60ff16118061260a5750612605606083016040840161356c565b60ff16155b1561263e5761261f606083016040840161356c565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61264e606083016040840161356c565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561267f6040830160208401613171565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111246124ce565b5080546126ba90612a09565b5f825580601f106126c9575050565b601f0160209004905f5260205f20908101906111569190612722565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612736575f8155600101612723565b5090565b5f6020828403121561274a575f80fd5b5035919050565b803563ffffffff81168114612764575f80fd5b919050565b5f806040838503121561277a575f80fd5b82356001600160401b0381111561278f575f80fd5b8301608081860312156127a0575f80fd5b91506127ae60208401612751565b90509250929050565b5f602082840312156127c7575f80fd5b610b8482612751565b80356001600160401b0381168114612764575f80fd5b5f80604083850312156127f7575f80fd5b82356001600160401b0381111561280c575f80fd5b830160a0818603121561281d575f80fd5b91506127ae602084016127d0565b6001600160a01b0381168114611156575f80fd5b5f808284036080811215612851575f80fd5b606081121561285e575f80fd5b5082915060608301356128708161282b565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106128ab57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b838110156128c95781810151838201526020016128b1565b50505f910152565b5f81518084526128e88160208601602086016128af565b601f01601f19169290920160200192915050565b6020815261290e60208201835161288f565b5f602083015160e060408401526129296101008401826128d1565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f6020828403121561298c575f80fd5b81356129978161282b565b9392505050565b5f80602083850312156129af575f80fd5b82356001600160401b03808211156129c5575f80fd5b818501915085601f8301126129d8575f80fd5b8135818111156129e6575f80fd5b8660208285010111156129f7575f80fd5b60209290920196919550909350505050565b600181811c90821680612a1d57607f821691505b602082108103612a3b57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610b87828461288f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612a8557612a85612a4f565b60405290565b604080519081016001600160401b0381118282101715612a8557612a85612a4f565b604051601f8201601f191681016001600160401b0381118282101715612ad557612ad5612a4f565b604052919050565b5f6001600160401b03821115612af557612af5612a4f565b50601f01601f191660200190565b5f82601f830112612b12575f80fd5b8151612b25612b2082612add565b612aad565b818152846020838601011115612b39575f80fd5b612b4a8260208301602087016128af565b949350505050565b5f60208284031215612b62575f80fd5b81516001600160401b03811115612b77575f80fd5b612b4a84828501612b03565b602081525f610b8460208301846128d1565b5f60208284031215612ba5575f80fd5b5051919050565b5f808335601e19843603018112612bc1575f80fd5b8301803591506001600160401b03821115612bda575f80fd5b6020019150600581901b360382131561213b575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612c19575f80fd5b9190910192915050565b5f82601f830112612c32575f80fd5b8135612c40612b2082612add565b818152846020838601011115612c54575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612c80575f80fd5b612c88612a63565b82356001600160401b0380821115612c9e575f80fd5b612caa36838701612c23565b83526020850135915080821115612cbf575f80fd5b50612ccc36828601612c23565b602083015250612cde604084016127d0565b604082015292915050565b5f8251612c198184602087016128af565b601f821115610b3057805f5260205f20601f840160051c81016020851015612d1f5750805b601f840160051c820191505b81811015612d3e575f8155600101612d2b565b5050505050565b81516001600160401b03811115612d5e57612d5e612a4f565b612d7281612d6c8454612a09565b84612cfa565b602080601f831160018114612da5575f8415612d8e5750858301515b5f19600386901b1c1916600185901b178555612dfc565b5f85815260208120601f198616915b82811015612dd357888601518255948401946001909101908401612db4565b5085821015612df057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b8757610b87612e04565b5f63ffffffff808316818103612e4357612e43612e04565b6001019392505050565b8082028115828204841417610b8757610b87612e04565b5f808335601e19843603018112612e79575f80fd5b83016020810192503590506001600160401b03811115612e97575f80fd5b80360382131561213b575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015612f7a57848303601f19018952813536889003605e19018112612f09575f80fd5b87016060612f178280612e64565b828752612f278388018284612ea5565b92505050612f3786830183612e64565b86830388880152612f49838284612ea5565b9250505060406001600160401b03612f628285016127d0565b16950194909452509783019790830190600101612ee4565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135612fab8161282b565b6001600160a01b031660608381019190915283013536849003601e19018112612fd2575f80fd5b83016020810190356001600160401b03811115612fed575f80fd5b8060051b3603821315612ffe575f80fd5b60808085015261301260a085018284612ecd565b95945050505050565b80518015158114612764575f80fd5b5f806040838503121561303b575f80fd5b825191506127ae6020840161301b565b5f60208083525f845461305d81612a09565b806020870152604060018084165f811461307e576001811461309a576130c7565b60ff19851660408a0152604084151560051b8a010195506130c7565b895f5260205f205f5b858110156130be5781548b82018601529083019088016130a3565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f80604083850312156130f5575f80fd5b82516001600160401b038082111561310b575f80fd5b908401906060828703121561311e575f80fd5b613126612a63565b8251815260208301516131388161282b565b602082015260408301518281111561314e575f80fd5b61315a88828601612b03565b60408301525093506127ae9150506020840161301b565b5f60208284031215613181575f80fd5b610b84826127d0565b5f8235603e19833603018112612c19575f80fd5b5f808335601e198436030181126131b3575f80fd5b8301803591506001600160401b038211156131cc575f80fd5b60200191503681900382131561213b575f80fd5b602081525f612b4a602083018486612ea5565b5f60408236031215613203575f80fd5b61320b612a8b565b61321483612751565b81526020808401356001600160401b0380821115613230575f80fd5b9085019036601f830112613242575f80fd5b81358181111561325457613254612a4f565b8060051b9150613265848301612aad565b818152918301840191848101903684111561327e575f80fd5b938501935b838510156132a857843592506132988361282b565b8282529385019390850190613283565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156133155784516001600160a01b031682529383019360019290920191908301906132ec565b509695505050505050565b60208152815160208201525f602083015160e060408401526133466101008401826128d1565b90506040840151601f198085840301606086015261336483836128d1565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261339483836132ba565b925060a08601519150808584030160c0860152506133b282826132ba565b91505060c08401516133cf60e08501826001600160401b03169052565b509392505050565b5f80604083850312156133e8575f80fd5b8251915060208301516001600160401b03811115613404575f80fd5b61341085828601612b03565b9150509250929050565b6001600160401b0383111561343157613431612a4f565b6134458361343f8354612a09565b83612cfa565b5f601f841160018114613476575f851561345f5750838201355b5f19600387901b1c1916600186901b178355612d3e565b5f83815260208120601f198716915b828110156134a55786850135825560209485019460019092019101613485565b50868210156134c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610b8757610b87612e04565b6001600160401b038281168282160390808211156112c3576112c3612e04565b6001600160401b038181168382160190808211156112c3576112c3612e04565b6001600160401b0381811683821602808216919082811461354957613549612e04565b505092915050565b5f6001600160401b03808316818103612e4357612e43612e04565b5f6020828403121561357c575f80fd5b813560ff81168114612997575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a264697066735822122016c8661e1c8183176f3d2b7bf54425db570d2c8426600785701d0b5d14ed8c6b64736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -2032,7 +2032,7 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpd // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea26469706673582212209002d6aad56d491f0ed777036244a5391c34cb570ba57a1d14e5c16063c55e2e64736f6c63430008190033", + Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220427b16ca5e2abe4960f5b859780a2eb475e9509f2f5b05fb0ffcb2156069896d64736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from.